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_fileoff_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 block offsets 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
ea99122b18
commit
fd7588fa64
@ -135,13 +135,22 @@ xfs_rtb_roundup_rtx(
|
||||
return roundup_64(rtbno, mp->m_sb.sb_rextsize);
|
||||
}
|
||||
|
||||
/* Round this rtblock down to the nearest rt extent size. */
|
||||
/* Round this file block offset up to the nearest rt extent size. */
|
||||
static inline xfs_rtblock_t
|
||||
xfs_rtb_rounddown_rtx(
|
||||
xfs_fileoff_roundup_rtx(
|
||||
struct xfs_mount *mp,
|
||||
xfs_rtblock_t rtbno)
|
||||
xfs_fileoff_t off)
|
||||
{
|
||||
return rounddown_64(rtbno, mp->m_sb.sb_rextsize);
|
||||
return roundup_64(off, mp->m_sb.sb_rextsize);
|
||||
}
|
||||
|
||||
/* Round this file block offset down to the nearest rt extent size. */
|
||||
static inline xfs_rtblock_t
|
||||
xfs_fileoff_rounddown_rtx(
|
||||
struct xfs_mount *mp,
|
||||
xfs_fileoff_t off)
|
||||
{
|
||||
return rounddown_64(off, mp->m_sb.sb_rextsize);
|
||||
}
|
||||
|
||||
/* Convert an rt extent number to a file block offset in the rt bitmap file. */
|
||||
|
@ -541,7 +541,7 @@ xfs_can_free_eofblocks(
|
||||
*/
|
||||
end_fsb = XFS_B_TO_FSB(mp, (xfs_ufsize_t)XFS_ISIZE(ip));
|
||||
if (xfs_inode_has_bigrtalloc(ip))
|
||||
end_fsb = xfs_rtb_roundup_rtx(mp, end_fsb);
|
||||
end_fsb = xfs_fileoff_roundup_rtx(mp, end_fsb);
|
||||
last_fsb = XFS_B_TO_FSB(mp, mp->m_super->s_maxbytes);
|
||||
if (last_fsb <= end_fsb)
|
||||
return false;
|
||||
@ -863,8 +863,8 @@ xfs_free_file_space(
|
||||
|
||||
/* We can only free complete realtime extents. */
|
||||
if (xfs_inode_has_bigrtalloc(ip)) {
|
||||
startoffset_fsb = xfs_rtb_roundup_rtx(mp, startoffset_fsb);
|
||||
endoffset_fsb = xfs_rtb_rounddown_rtx(mp, endoffset_fsb);
|
||||
startoffset_fsb = xfs_fileoff_roundup_rtx(mp, startoffset_fsb);
|
||||
endoffset_fsb = xfs_fileoff_rounddown_rtx(mp, endoffset_fsb);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user