diff options
author | Christoph Hellwig <hch@infradead.org> | 2011-12-18 21:00:13 +0100 |
---|---|---|
committer | Ben Myers <bpm@sgi.com> | 2012-01-17 22:11:07 +0100 |
commit | 5bf1f26227a59b9634e95eb3c7c012b766e5e6a0 (patch) | |
tree | 940a58e03256bd70787d1341c90027ef334f5fac /fs | |
parent | xfs: remove the i_new_size field in struct xfs_inode (diff) | |
download | linux-5bf1f26227a59b9634e95eb3c7c012b766e5e6a0.tar.xz linux-5bf1f26227a59b9634e95eb3c7c012b766e5e6a0.zip |
xfs: always return with the iolock held from xfs_file_aio_write_checks
While xfs_iunlock is fine with 0 lockflags the calling conventions are much
cleaner if xfs_file_aio_write_checks never returns without the iolock held.
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Ben Myers <bpm@sgi.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/xfs/xfs_file.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index 632313926788..134ff2fe4f4d 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -636,7 +636,9 @@ out_lock: /* * Common pre-write limit and setup checks. * - * Returns with iolock held according to @iolock. + * Called with the iolocked held either shared and exclusive according to + * @iolock, and returns with it held. Might upgrade the iolock to exclusive + * if called for a direct write beyond i_size. */ STATIC ssize_t xfs_file_aio_write_checks( @@ -653,8 +655,7 @@ xfs_file_aio_write_checks( restart: error = generic_write_checks(file, pos, count, S_ISBLK(inode->i_mode)); if (error) { - xfs_rw_iunlock(ip, XFS_ILOCK_EXCL | *iolock); - *iolock = 0; + xfs_rw_iunlock(ip, XFS_ILOCK_EXCL); return error; } |