Commit 5f369dc5 authored by Darrick J. Wong's avatar Darrick J. Wong
Browse files

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: 4c934c7d ("xfs: report realtime space information via the rtbitmap")
Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
parent 9e13975b
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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;
}

+2 −2
Original line number Diff line number Diff line
@@ -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;