rtbno & mp->m_groups[XG_TYPE_RTG].blkmask);
}
-static inline xfs_rgnumber_t
-xfs_daddr_to_rgno(
- struct xfs_mount *mp,
- xfs_daddr_t daddr)
-{
- if (!xfs_has_rtgroups(mp))
- return 0;
-
- return div_u64(XFS_BB_TO_FSBT(mp, daddr),
- mp->m_groups[XG_TYPE_RTG].blocks);
-}
-
static inline xfs_rtblock_t
xfs_daddr_to_rtb(
struct xfs_mount *mp,
xfs_daddr_t daddr)
{
+ struct xfs_groups *g = &mp->m_groups[XG_TYPE_RTG];
xfs_rfsblock_t bno = XFS_BB_TO_FSBT(mp, daddr);
if (xfs_has_rtgroups(mp)) {
- xfs_rgnumber_t rgno = xfs_daddr_to_rgno(mp, daddr);
- uint32_t rem;
+ xfs_rgnumber_t rgno;
+ uint32_t rgbno;
- div_u64_rem(bno, mp->m_groups[XG_TYPE_RTG].blocks, &rem);
- return ((xfs_rtblock_t)rgno << mp->m_sb.sb_rgblklog) + rem;
+ rgno = div_u64_rem(bno, g->blocks, &rgbno);
+ return ((xfs_rtblock_t)rgno << g->blklog) + rgbno;
}
return bno;