[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <33700d9d-08d3-4fad-8ca4-e6beb3529bcb@oracle.com>
Date: Wed, 1 May 2024 11:48:59 +0100
From: John Garry <john.g.garry@...cle.com>
To: Dave Chinner <david@...morbit.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 01/05/2024 00:35, Dave Chinner wrote:
>> 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;
ok, but I still have a doubt about non-power-of-2 forcealign extsize
support.
Thanks,
John
Powered by blists - more mailing lists