Re: [PATCH 5/7] xfs: hoist multi-fsb allocation unit detection to a helper

Dave Chinner
2024-04-07T23:07:34Z

On Tue, Mar 26, 2024 at 06:52:18PM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <djwong@kernel.org>
>
> Replace the open-coded logic to decide if a file has a multi-fsb
> allocation unit to a helper to make the code easier to read.
>
> Signed-off-by: Darrick J. Wong <djwong@kernel.org>
> ---
> fs/xfs/xfs_bmap_util.c | 4 ++--
> fs/xfs/xfs_inode.h | 9 +++++++++
> 2 files changed, 11 insertions(+), 2 deletions(-)
>
>
> diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c
> index 19e11d1da6607..c17b5858fed62 100644
> --- a/fs/xfs/xfs_bmap_util.c
> +++ b/fs/xfs/xfs_bmap_util.c
> @@ -542,7 +542,7 @@ xfs_can_free_eofblocks(
> * forever.
> */
> end_fsb = XFS_B_TO_FSB(mp, (xfs_ufsize_t)XFS_ISIZE(ip));
> - if (XFS_IS_REALTIME_INODE(ip) && mp->m_sb.sb_rextsize > 1)
> + if (xfs_inode_has_bigallocunit(ip))
> end_fsb = xfs_rtb_roundup_rtx(mp, end_fsb);

This makes no sense with the upcoming forced alignment changes to
this code.

That essentially brings "big alloc unit" to the data device based on
extent size hints, and it will need to do different rounding
calculations depending on whether it is a RT inode or not. Hence I
don't think hiding the RT specific allocation/truncation setup like
this is compatible with those changes - it will simply have to be
undone before it can be reworked....

-Dave.
--
Dave Chinner
david@fromorbit.com