diff options
author | Alex Elder <aelder@sgi.com> | 2009-10-08 13:53:44 -0500 |
---|---|---|
committer | Alex Elder <aelder@sgi.com> | 2009-10-08 13:53:44 -0500 |
commit | e09d39968bd8befa087f10f970fa236e8694b643 (patch) | |
tree | 393f4cdd32504ed435b7a5f728cf74855378459d /fs/xfs/xfs_inode_item.c | |
parent | fdec29c5fcd2705d61c1d14a1d4c74be03e9627c (diff) | |
parent | d0800703febc04827b8fa91921aa4e254d01e8d1 (diff) |
Merge branch 'master' into for-linus
Diffstat (limited to 'fs/xfs/xfs_inode_item.c')
-rw-r--r-- | fs/xfs/xfs_inode_item.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c index 47d5b663c37..9794b876d6f 100644 --- a/fs/xfs/xfs_inode_item.c +++ b/fs/xfs/xfs_inode_item.c @@ -232,6 +232,15 @@ xfs_inode_item_format( nvecs = 1; /* + * Make sure the linux inode is dirty. We do this before + * clearing i_update_core as the VFS will call back into + * XFS here and set i_update_core, so we need to dirty the + * inode first so that the ordering of i_update_core and + * unlogged modifications still works as described below. + */ + xfs_mark_inode_dirty_sync(ip); + + /* * Clear i_update_core if the timestamps (or any other * non-transactional modification) need flushing/logging * and we're about to log them with the rest of the core. @@ -263,14 +272,9 @@ xfs_inode_item_format( } /* - * Make sure to get the latest atime from the Linux inode. + * Make sure to get the latest timestamps from the Linux inode. */ - xfs_synchronize_atime(ip); - - /* - * make sure the linux inode is dirty - */ - xfs_mark_inode_dirty_sync(ip); + xfs_synchronize_times(ip); vecp->i_addr = (xfs_caddr_t)&ip->i_d; vecp->i_len = sizeof(struct xfs_icdinode); |