aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_inode_item.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/xfs/xfs_inode_item.c')
-rw-r--r--fs/xfs/xfs_inode_item.c28
1 files changed, 11 insertions, 17 deletions
diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c
index 977c4aec587e..9794b876d6ff 100644
--- a/fs/xfs/xfs_inode_item.c
+++ b/fs/xfs/xfs_inode_item.c
@@ -232,6 +232,15 @@ xfs_inode_item_format(
232 nvecs = 1; 232 nvecs = 1;
233 233
234 /* 234 /*
235 * Make sure the linux inode is dirty. We do this before
236 * clearing i_update_core as the VFS will call back into
237 * XFS here and set i_update_core, so we need to dirty the
238 * inode first so that the ordering of i_update_core and
239 * unlogged modifications still works as described below.
240 */
241 xfs_mark_inode_dirty_sync(ip);
242
243 /*
235 * Clear i_update_core if the timestamps (or any other 244 * Clear i_update_core if the timestamps (or any other
236 * non-transactional modification) need flushing/logging 245 * non-transactional modification) need flushing/logging
237 * and we're about to log them with the rest of the core. 246 * and we're about to log them with the rest of the core.
@@ -263,22 +272,9 @@ xfs_inode_item_format(
263 } 272 }
264 273
265 /* 274 /*
266 * We don't have to worry about re-ordering here because 275 * Make sure to get the latest timestamps from the Linux inode.
267 * the update_size field is protected by the inode lock
268 * and we have that held in exclusive mode.
269 */ 276 */
270 if (ip->i_update_size) 277 xfs_synchronize_times(ip);
271 ip->i_update_size = 0;
272
273 /*
274 * Make sure to get the latest atime from the Linux inode.
275 */
276 xfs_synchronize_atime(ip);
277
278 /*
279 * make sure the linux inode is dirty
280 */
281 xfs_mark_inode_dirty_sync(ip);
282 278
283 vecp->i_addr = (xfs_caddr_t)&ip->i_d; 279 vecp->i_addr = (xfs_caddr_t)&ip->i_d;
284 vecp->i_len = sizeof(struct xfs_icdinode); 280 vecp->i_len = sizeof(struct xfs_icdinode);
@@ -712,8 +708,6 @@ xfs_inode_item_unlock(
712 * Clear out the fields of the inode log item particular 708 * Clear out the fields of the inode log item particular
713 * to the current transaction. 709 * to the current transaction.
714 */ 710 */
715 iip->ili_ilock_recur = 0;
716 iip->ili_iolock_recur = 0;
717 iip->ili_flags = 0; 711 iip->ili_flags = 0;
718 712
719 /* 713 /*