Re: [PATCH 10/21] block: Add fops atomic write support

Bart Van Assche
2023-10-04T17:34:20Z

On 10/4/23 02:14, John Garry wrote:
> On 03/10/2023 17:45, Bart Van Assche wrote:
>> On 10/3/23 01:37, John Garry wrote:
>>> I don't think that is_power_of_2(write length) is specific to XFS.
>>
>> I think this is specific to XFS. Can you show me the F2FS code that
>> restricts the length of an atomic write to a power of two? I haven't
>> found it. The only power-of-two check that I found in F2FS is the
>> following (maybe I overlooked something):
>>
>> $ git grep -nH is_power fs/f2fs
>> fs/f2fs/super.c:3914:    if (!is_power_of_2(zone_sectors)) {
>
> Any usecases which we know of requires a power-of-2 block size.
>
> Do you know of a requirement for other sizes? Or are you concerned that
> it is unnecessarily restrictive?
>
> We have to deal with HW features like atomic write boundary and FS
> restrictions like extent and stripe alignment transparent, which are
> almost always powers-of-2, so naturally we would want to work with
> powers-of-2 for atomic write sizes.
>
> The power-of-2 stuff could be dropped if that is what people want.
> However we still want to provide a set of rules to the user to make
> those HW and FS features mentioned transparent to the user.

Hi John,

My concern is that the power-of-2 requirements are only needed for
traditional filesystems and not for log-structured filesystems (BTRFS,
F2FS, BCACHEFS).

What I'd like to see is that each filesystem declares its atomic write
requirements (in struct address_space_operations?) and that
blkdev_atomic_write_valid() checks the filesystem-specific atomic write
requirements.

Thanks,

Bart.