xfs: Convert to new freezing code
Generic code now blocks all writers from standard write paths. So we add blocking of all writers coming from ioctl (we get a protection of ioctl against racing remount read-only as a bonus) and convert xfs_file_aio_write() to a non-racy freeze protection. We also keep freeze protection on transaction start to block internal filesystem writes such as removal of preallocated blocks. CC: Ben Myers <bpm@sgi.com> CC: Alex Elder <elder@kernel.org> CC: xfs@oss.sgi.com Signed-off-by: Jan Kara <jack@suse.cz> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
@@ -781,10 +781,12 @@ xfs_file_aio_write(
|
||||
if (ocount == 0)
|
||||
return 0;
|
||||
|
||||
xfs_wait_for_freeze(ip->i_mount, SB_FREEZE_WRITE);
|
||||
sb_start_write(inode->i_sb);
|
||||
|
||||
if (XFS_FORCED_SHUTDOWN(ip->i_mount))
|
||||
return -EIO;
|
||||
if (XFS_FORCED_SHUTDOWN(ip->i_mount)) {
|
||||
ret = -EIO;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (unlikely(file->f_flags & O_DIRECT))
|
||||
ret = xfs_file_dio_aio_write(iocb, iovp, nr_segs, pos, ocount);
|
||||
@@ -803,6 +805,8 @@ xfs_file_aio_write(
|
||||
ret = err;
|
||||
}
|
||||
|
||||
out:
|
||||
sb_end_write(inode->i_sb);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user