[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <ZjGAN8g3yqH01g1w@dread.disaster.area>
Date: Wed, 1 May 2024 09:35:19 +1000
From: Dave Chinner <david@...morbit.com>
To: John Garry <john.g.garry@...cle.com>
Cc: djwong@...nel.org, hch@....de, viro@...iv.linux.org.uk,
brauner@...nel.org, jack@...e.cz, chandan.babu@...cle.com,
willy@...radead.org, axboe@...nel.dk, martin.petersen@...cle.com,
linux-kernel@...r.kernel.org, linux-fsdevel@...r.kernel.org,
tytso@....edu, jbongio@...gle.com, ojaswin@...ux.ibm.com,
ritesh.list@...il.com, mcgrof@...nel.org, p.raghav@...sung.com,
linux-xfs@...r.kernel.org, catherine.hoang@...cle.com
Subject: Re: [PATCH v3 10/21] xfs: Update xfs_is_falloc_aligned() mask for
forcealign
On Mon, Apr 29, 2024 at 05:47:35PM +0000, John Garry wrote:
> For when forcealign is enabled, we want the alignment mask to cover an
> aligned extent, similar to rtvol.
>
> Signed-off-by: John Garry <john.g.garry@...cle.com>
> ---
> fs/xfs/xfs_file.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c
> index 632653e00906..e81e01e6b22b 100644
> --- a/fs/xfs/xfs_file.c
> +++ b/fs/xfs/xfs_file.c
> @@ -61,7 +61,10 @@ xfs_is_falloc_aligned(
> }
> mask = XFS_FSB_TO_B(mp, mp->m_sb.sb_rextsize) - 1;
> } else {
> - mask = mp->m_sb.sb_blocksize - 1;
> + if (xfs_inode_has_forcealign(ip) && ip->i_extsize > 1)
> + mask = (mp->m_sb.sb_blocksize * ip->i_extsize) - 1;
> + else
> + mask = mp->m_sb.sb_blocksize - 1;
> }
>
> return !((pos | len) & mask);
I think this whole function needs to be rewritten so that
non-power-of-2 extent sizes are supported on both devices properly.
xfs_extlen_t fsbs = 1;
u64 bytes;
u32 mod;
if (xfs_inode_has_forcealign(ip))
fsbs = ip->i_extsize;
else if (XFS_IS_REALTIME_INODE(ip))
fsbs = mp->m_sb.sb_rextsize;
bytes = XFS_FSB_TO_B(mp, fsbs);
if (is_power_of_2(fsbs))
return !((pos | len) & (bytes - 1));
div_u64_rem(pos, bytes, &mod);
if (mod)
return false;
div_u64_rem(len, bytes, &mod);
return mod == 0;
-Dave.
--
Dave Chinner
david@...morbit.com
Powered by blists - more mailing lists