xfs: make rtbitmap ILOCKing consistent when scanning the rt bitmap file
xfs_rtalloc_query_range scans the realtime bitmap file in order of
increasing file offset, so this caller can take ILOCK_SHARED on the rt
bitmap inode instead of ILOCK_EXCL. This isn't going to yield any
practical benefits at mount time, but we'd like to make the locking
usage consistent around xfs_rtalloc_query_all calls. Make all the
places we do this use the same xfs_ilock lockflags for consistency.
Fixes: 4c934c7dd6
("xfs: report realtime space information via the rtbitmap")
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
This commit is contained in:
parent
9e13975bb0
commit
5f369dc5b4
@ -524,7 +524,7 @@ xfs_getfsmap_rtdev_rtbitmap_query(
|
||||
struct xfs_mount *mp = tp->t_mountp;
|
||||
int error;
|
||||
|
||||
xfs_ilock(mp->m_rbmip, XFS_ILOCK_SHARED);
|
||||
xfs_ilock(mp->m_rbmip, XFS_ILOCK_SHARED | XFS_ILOCK_RTBITMAP);
|
||||
|
||||
/*
|
||||
* Set up query parameters to return free rtextents covering the range
|
||||
@ -551,7 +551,7 @@ xfs_getfsmap_rtdev_rtbitmap_query(
|
||||
if (error)
|
||||
goto err;
|
||||
err:
|
||||
xfs_iunlock(mp->m_rbmip, XFS_ILOCK_SHARED);
|
||||
xfs_iunlock(mp->m_rbmip, XFS_ILOCK_SHARED | XFS_ILOCK_RTBITMAP);
|
||||
return error;
|
||||
}
|
||||
|
||||
|
@ -1311,10 +1311,10 @@ xfs_rtalloc_reinit_frextents(
|
||||
uint64_t val = 0;
|
||||
int error;
|
||||
|
||||
xfs_ilock(mp->m_rbmip, XFS_ILOCK_EXCL);
|
||||
xfs_ilock(mp->m_rbmip, XFS_ILOCK_SHARED | XFS_ILOCK_RTBITMAP);
|
||||
error = xfs_rtalloc_query_all(mp, NULL, xfs_rtalloc_count_frextent,
|
||||
&val);
|
||||
xfs_iunlock(mp->m_rbmip, XFS_ILOCK_EXCL);
|
||||
xfs_iunlock(mp->m_rbmip, XFS_ILOCK_SHARED | XFS_ILOCK_RTBITMAP);
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user