Skip to content

Commit

Permalink
xfs: prevent against ioend livelocks in xfs_file_fsync
Browse files Browse the repository at this point in the history
We need to take some locks to prevent new ioends from coming in when we wait
for all existing ones to go away.  Up to Linux 3.0 that was done using the
i_mutex held by the VFS fsync code, but now that we are called without
it we need to take care of it ourselves.  Use the I/O lock instead of
i_mutex just like we do in other places.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Alex Elder <aelder@sgi.com>
  • Loading branch information
Christoph Hellwig authored and Alex Elder committed Jul 27, 2011
1 parent 34951f5 commit d1166ec
Showing 1 changed file with 2 additions and 0 deletions.
2 changes: 2 additions & 0 deletions fs/xfs/linux-2.6/xfs_file.c
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,9 @@ xfs_file_fsync(

xfs_iflags_clear(ip, XFS_ITRUNCATED);

xfs_ilock(ip, XFS_IOLOCK_SHARED);
xfs_ioend_wait(ip);
xfs_iunlock(ip, XFS_IOLOCK_SHARED);

if (mp->m_flags & XFS_MOUNT_BARRIER) {
/*
Expand Down

0 comments on commit d1166ec

Please sign in to comment.