diff options
Diffstat (limited to 'fs/xfs/xfs_inode_item.c')
| -rw-r--r-- | fs/xfs/xfs_inode_item.c | 17 | 
1 files changed, 8 insertions, 9 deletions
diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c index 6cdbf90c6f7..d041d47d9d8 100644 --- a/fs/xfs/xfs_inode_item.c +++ b/fs/xfs/xfs_inode_item.c @@ -505,6 +505,14 @@ xfs_inode_item_push(  	}  	/* +	 * Stale inode items should force out the iclog. +	 */ +	if (ip->i_flags & XFS_ISTALE) { +		rval = XFS_ITEM_PINNED; +		goto out_unlock; +	} + +	/*  	 * Someone else is already flushing the inode.  Nothing we can do  	 * here but wait for the flush to finish and remove the item from  	 * the AIL. @@ -514,15 +522,6 @@ xfs_inode_item_push(  		goto out_unlock;  	} -	/* -	 * Stale inode items should force out the iclog. -	 */ -	if (ip->i_flags & XFS_ISTALE) { -		xfs_ifunlock(ip); -		xfs_iunlock(ip, XFS_ILOCK_SHARED); -		return XFS_ITEM_PINNED; -	} -  	ASSERT(iip->ili_fields != 0 || XFS_FORCED_SHUTDOWN(ip->i_mount));  	ASSERT(iip->ili_logged == 0 || XFS_FORCED_SHUTDOWN(ip->i_mount));  |