diff options
author | Christoph Hellwig <hch@infradead.org> | 2013-12-07 00:30:12 +0400 |
---|---|---|
committer | Ben Myers <bpm@sgi.com> | 2013-12-19 01:53:38 +0400 |
commit | 4f317369d46956ccd76b5d28cf66b3f8b24f3480 (patch) | |
tree | 7624a8a8df724da17ae50707d25c2e6eb52ad435 /fs/xfs/xfs_bmap_util.c | |
parent | 40194ecc6d78327d98e66de3213db96ca0a31e6f (diff) | |
download | linux-4f317369d46956ccd76b5d28cf66b3f8b24f3480.tar.xz |
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/xfs_bmap_util.c')
-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); |