Skip to content

Commit

Permalink
xfs: avoid setting XFS_ILOG_CORE if i_version doesn't need incrementing
Browse files Browse the repository at this point in the history
If XFS_ILOG_CORE is already set then go ahead and increment it.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Acked-by: Darrick J. Wong <darrick.wong@oracle.com>
Acked-by: Dave Chinner <dchinner@redhat.com>
  • Loading branch information
Jeff Layton committed Jan 29, 2018
1 parent e38cf30 commit d17260f
Showing 1 changed file with 8 additions and 6 deletions.
14 changes: 8 additions & 6 deletions fs/xfs/xfs_trans_inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -112,15 +112,17 @@ xfs_trans_log_inode(

/*
* First time we log the inode in a transaction, bump the inode change
* counter if it is configured for this to occur. We don't use
* inode_inc_version() because there is no need for extra locking around
* i_version as we already hold the inode locked exclusively for
* metadata modification.
* counter if it is configured for this to occur. While we have the
* inode locked exclusively for metadata modification, we can usually
* avoid setting XFS_ILOG_CORE if no one has queried the value since
* the last time it was incremented. If we have XFS_ILOG_CORE already
* set however, then go ahead and bump the i_version counter
* unconditionally.
*/
if (!(ip->i_itemp->ili_item.li_desc->lid_flags & XFS_LID_DIRTY) &&
IS_I_VERSION(VFS_I(ip))) {
inode_inc_iversion(VFS_I(ip));
flags |= XFS_ILOG_CORE;
if (inode_maybe_inc_iversion(VFS_I(ip), flags & XFS_ILOG_CORE))
flags |= XFS_ILOG_CORE;
}

tp->t_flags |= XFS_TRANS_DIRTY;
Expand Down

0 comments on commit d17260f

Please sign in to comment.