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

xfs: convert do_div calls to xfs_rtb_to_rtx helper calls



Convert these calls to use the helpers, and clean up all these places
where the same variable can have different units depending on where it
is in the function.

Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
parent 5dc3a80d
Loading
Loading
Loading
Loading
+2 −6
Original line number Diff line number Diff line
@@ -4826,12 +4826,8 @@ xfs_bmap_del_extent_delay(
	ASSERT(got->br_startoff <= del->br_startoff);
	ASSERT(got_endoff >= del_endoff);

	if (isrt) {
		uint64_t	rtexts = del->br_blockcount;

		do_div(rtexts, mp->m_sb.sb_rextsize);
		xfs_mod_frextents(mp, rtexts);
	}
	if (isrt)
		xfs_mod_frextents(mp, xfs_rtb_to_rtx(mp, del->br_blockcount));

	/*
	 * Update the inode delalloc counter now and wait to update the
+14 −0
Original line number Diff line number Diff line
@@ -70,6 +70,20 @@ xfs_rtb_to_rtxrem(
	return div_u64_rem(rtbno, mp->m_sb.sb_rextsize, off);
}

/*
 * Convert an rt block number into an rt extent number, rounding up to the next
 * rt extent if the rt block is not aligned to an rt extent boundary.
 */
static inline xfs_rtxnum_t
xfs_rtb_to_rtxup(
	struct xfs_mount	*mp,
	xfs_rtblock_t		rtbno)
{
	if (do_div(rtbno, mp->m_sb.sb_rextsize))
		rtbno++;
	return rtbno;
}

/*
 * Functions for walking free space rtextents in the realtime bitmap.
 */
+5 −9
Original line number Diff line number Diff line
@@ -128,26 +128,22 @@ xchk_rtbitmap(
void
xchk_xref_is_used_rt_space(
	struct xfs_scrub	*sc,
	xfs_rtblock_t		fsbno,
	xfs_rtblock_t		rtbno,
	xfs_extlen_t		len)
{
	xfs_rtxnum_t		startext;
	xfs_rtxnum_t		endext;
	xfs_rtxlen_t		extcount;
	bool			is_free;
	int			error;

	if (xchk_skip_xref(sc->sm))
		return;

	startext = fsbno;
	endext = fsbno + len - 1;
	do_div(startext, sc->mp->m_sb.sb_rextsize);
	do_div(endext, sc->mp->m_sb.sb_rextsize);
	extcount = endext - startext + 1;
	startext = xfs_rtb_to_rtx(sc->mp, rtbno);
	endext = xfs_rtb_to_rtx(sc->mp, rtbno + len - 1);
	xfs_ilock(sc->mp->m_rbmip, XFS_ILOCK_SHARED | XFS_ILOCK_RTBITMAP);
	error = xfs_rtalloc_extent_is_free(sc->mp, sc->tp, startext, extcount,
			&is_free);
	error = xfs_rtalloc_extent_is_free(sc->mp, sc->tp, startext,
			endext - startext + 1, &is_free);
	if (!xchk_should_check_xref(sc, &error, NULL))
		goto out_unlock;
	if (is_free)
+4 −6
Original line number Diff line number Diff line
@@ -156,14 +156,12 @@ xfs_bmap_rtalloc(
	 * Realtime allocation, done through xfs_rtallocate_extent.
	 */
	if (ignore_locality)
		ap->blkno = 0;
		rtx = 0;
	else
		do_div(ap->blkno, mp->m_sb.sb_rextsize);
	rtx = ap->blkno;
	ap->length = ralen;
		rtx = xfs_rtb_to_rtx(mp, ap->blkno);
	raminlen = max_t(xfs_rtxlen_t, 1, xfs_extlen_to_rtxlen(mp, minlen));
	error = xfs_rtallocate_extent(ap->tp, ap->blkno, raminlen, ap->length,
			&ralen, ap->wasdel, prod, &rtx);
	error = xfs_rtallocate_extent(ap->tp, rtx, raminlen, ralen, &ralen,
			ap->wasdel, prod, &rtx);
	if (error)
		return error;

+2 −5
Original line number Diff line number Diff line
@@ -539,11 +539,8 @@ xfs_getfsmap_rtdev_rtbitmap(
	 * Set up query parameters to return free rtextents covering the range
	 * we want.
	 */
	alow.ar_startext = start_rtb;
	ahigh.ar_startext = end_rtb;
	do_div(alow.ar_startext, mp->m_sb.sb_rextsize);
	if (do_div(ahigh.ar_startext, mp->m_sb.sb_rextsize))
		ahigh.ar_startext++;
	alow.ar_startext = xfs_rtb_to_rtx(mp, start_rtb);
	ahigh.ar_startext = xfs_rtb_to_rtxup(mp, end_rtb);
	error = xfs_rtalloc_query_range(mp, tp, &alow, &ahigh,
			xfs_getfsmap_rtdev_rtbitmap_helper, info);
	if (error)
Loading