Commit 024910cb authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Alex Elder
Browse files

xfs: fix inode pincount check in fsync



We need to hold the ilock to check the inode pincount safely.  While
we're at it also remove the check for ip->i_itemp->ili_last_lsn, a
pinned inode always has it set.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDave Chinner <david@fromorbit.com>
Signed-off-by: default avatarAlex Elder <aelder@sgi.com>
parent 77d7a0c2
Loading
Loading
Loading
Loading
+4 −9
Original line number Diff line number Diff line
@@ -180,17 +180,12 @@ xfs_file_fsync(
		 * disk yet, the inode will be still be pinned.  If it is,
		 * force the log.
		 */
		xfs_iunlock(ip, XFS_ILOCK_SHARED);
		if (xfs_ipincount(ip)) {
			if (ip->i_itemp->ili_last_lsn) {
			error = _xfs_log_force_lsn(ip->i_mount,
					ip->i_itemp->ili_last_lsn,
					XFS_LOG_SYNC, &log_flushed);
			} else {
				error = _xfs_log_force(ip->i_mount,
						XFS_LOG_SYNC, &log_flushed);
			}
		}
		xfs_iunlock(ip, XFS_ILOCK_SHARED);
	}

	if (ip->i_mount->m_flags & XFS_MOUNT_BARRIER) {