mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:41:42 +00:00
xfs: create helpers to deal with rounding xfs_filblks_t to rtx boundaries
We're about to segment xfs_rtblock_t addresses, so we must create type-specific helpers to do rt extent rounding of file mapping block lengths because the rtb helpers soon will not do the right thing there. Signed-off-by: Darrick J. Wong <djwong@kernel.org> Reviewed-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
fd7588fa64
commit
3f0205ebe7
@ -1123,7 +1123,7 @@ xfs_rtfree_blocks(
|
||||
|
||||
ASSERT(rtlen <= XFS_MAX_BMBT_EXTLEN);
|
||||
|
||||
mod = xfs_rtb_to_rtxoff(mp, rtlen);
|
||||
mod = xfs_blen_to_rtxoff(mp, rtlen);
|
||||
if (mod) {
|
||||
ASSERT(mod == 0);
|
||||
return -EIO;
|
||||
|
@ -101,6 +101,27 @@ xfs_blen_to_rtbxlen(
|
||||
return div_u64(blen, mp->m_sb.sb_rextsize);
|
||||
}
|
||||
|
||||
/* Return the offset of a file block length within an rt extent. */
|
||||
static inline xfs_extlen_t
|
||||
xfs_blen_to_rtxoff(
|
||||
struct xfs_mount *mp,
|
||||
xfs_filblks_t blen)
|
||||
{
|
||||
if (likely(mp->m_rtxblklog >= 0))
|
||||
return blen & mp->m_rtxblkmask;
|
||||
|
||||
return do_div(blen, mp->m_sb.sb_rextsize);
|
||||
}
|
||||
|
||||
/* Round this block count up to the nearest rt extent size. */
|
||||
static inline xfs_filblks_t
|
||||
xfs_blen_roundup_rtx(
|
||||
struct xfs_mount *mp,
|
||||
xfs_filblks_t blen)
|
||||
{
|
||||
return roundup_64(blen, mp->m_sb.sb_rextsize);
|
||||
}
|
||||
|
||||
/* Convert an rt block number into an rt extent number. */
|
||||
static inline xfs_rtxnum_t
|
||||
xfs_rtb_to_rtx(
|
||||
@ -126,15 +147,6 @@ xfs_rtb_to_rtxoff(
|
||||
return do_div(rtbno, mp->m_sb.sb_rextsize);
|
||||
}
|
||||
|
||||
/* Round this rtblock up to the nearest rt extent size. */
|
||||
static inline xfs_rtblock_t
|
||||
xfs_rtb_roundup_rtx(
|
||||
struct xfs_mount *mp,
|
||||
xfs_rtblock_t rtbno)
|
||||
{
|
||||
return roundup_64(rtbno, mp->m_sb.sb_rextsize);
|
||||
}
|
||||
|
||||
/* Round this file block offset up to the nearest rt extent size. */
|
||||
static inline xfs_rtblock_t
|
||||
xfs_fileoff_roundup_rtx(
|
||||
|
@ -217,7 +217,7 @@ xfs_exchrange_mappings(
|
||||
* length in @fxr are safe to round up.
|
||||
*/
|
||||
if (xfs_inode_has_bigrtalloc(ip2))
|
||||
req.blockcount = xfs_rtb_roundup_rtx(mp, req.blockcount);
|
||||
req.blockcount = xfs_blen_roundup_rtx(mp, req.blockcount);
|
||||
|
||||
error = xfs_exchrange_estimate(&req);
|
||||
if (error)
|
||||
|
Loading…
Reference in New Issue
Block a user