diff options
author | Christoph Hellwig <hch@infradead.org> | 2013-12-06 21:30:12 +0100 |
---|---|---|
committer | Ben Myers <bpm@sgi.com> | 2013-12-18 22:53:38 +0100 |
commit | 4f317369d46956ccd76b5d28cf66b3f8b24f3480 (patch) | |
tree | 7624a8a8df724da17ae50707d25c2e6eb52ad435 /fs/xfs | |
parent | xfs: reinstate the ilock in xfs_readdir (diff) | |
download | linux-4f317369d46956ccd76b5d28cf66b3f8b24f3480.tar.xz linux-4f317369d46956ccd76b5d28cf66b3f8b24f3480.zip |
xfs: take the ilock around xfs_bmapi_read in xfs_zero_remaining_bytes
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Ben Myers <bpm@sgi.com>
Diffstat (limited to 'fs/xfs')
-rw-r--r-- | fs/xfs/xfs_bmap_util.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c index 374ba050942f..202a51f7c450 100644 --- a/fs/xfs/xfs_bmap_util.c +++ b/fs/xfs/xfs_bmap_util.c @@ -1173,9 +1173,15 @@ xfs_zero_remaining_bytes( xfs_buf_unlock(bp); for (offset = startoff; offset <= endoff; offset = lastoffset + 1) { + uint lock_mode; + offset_fsb = XFS_B_TO_FSBT(mp, offset); nimap = 1; + + lock_mode = xfs_ilock_data_map_shared(ip); error = xfs_bmapi_read(ip, offset_fsb, 1, &imap, &nimap, 0); + xfs_iunlock(ip, lock_mode); + if (error || nimap < 1) break; ASSERT(imap.br_blockcount >= 1); |