diff options
Diffstat (limited to 'fs/xfs/xfs_file.c')
-rw-r--r-- | fs/xfs/xfs_file.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index c4559c6e6f2c..56afcdb2377d 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c | |||
@@ -770,10 +770,12 @@ xfs_file_aio_write( | |||
770 | if (ocount == 0) | 770 | if (ocount == 0) |
771 | return 0; | 771 | return 0; |
772 | 772 | ||
773 | xfs_wait_for_freeze(ip->i_mount, SB_FREEZE_WRITE); | 773 | sb_start_write(inode->i_sb); |
774 | 774 | ||
775 | if (XFS_FORCED_SHUTDOWN(ip->i_mount)) | 775 | if (XFS_FORCED_SHUTDOWN(ip->i_mount)) { |
776 | return -EIO; | 776 | ret = -EIO; |
777 | goto out; | ||
778 | } | ||
777 | 779 | ||
778 | if (unlikely(file->f_flags & O_DIRECT)) | 780 | if (unlikely(file->f_flags & O_DIRECT)) |
779 | ret = xfs_file_dio_aio_write(iocb, iovp, nr_segs, pos, ocount); | 781 | ret = xfs_file_dio_aio_write(iocb, iovp, nr_segs, pos, ocount); |
@@ -792,6 +794,8 @@ xfs_file_aio_write( | |||
792 | ret = err; | 794 | ret = err; |
793 | } | 795 | } |
794 | 796 | ||
797 | out: | ||
798 | sb_end_write(inode->i_sb); | ||
795 | return ret; | 799 | return ret; |
796 | } | 800 | } |
797 | 801 | ||