Subject: Re: linux-next: build failure after merge of the btrfs tree

From: Qu Wenruo <[email-masked]>
Date: Thu, 24 Oct 2024 11:22:57 +1030

在 2024/10/24 11:17, David Sterba 写道:
> On Thu, Oct 24, 2024 at 08:58:58AM +1030, Qu Wenruo wrote:
>>
>>
>> 在 2024/10/24 08:27, Stephen Rothwell 写道:
>>> Hi all,
>>>
>>> After merging the btrfs tree, today's linux-next build (x86_64
>>> allmodconfig) failed like this:
>>>
>>> fs/btrfs/super.c: In function 'btrfs_reconfigure_for_mount':
>>> fs/btrfs/super.c:2011:56: error: suggest parentheses around '&&' within '||' [-Werror=parentheses]
>>>    2011 |         if (!fc->oldapi || !(fc->sb_flags & SB_RDONLY) && (mnt->mnt_sb->s_flags & SB_RDONLY))
>>>         |                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>> cc1: all warnings being treated as errors
>>>
>>> Caused by commit
>>>
>>>     4642e430c55b ("btrfs: fix mount failure due to remount races")
>>
>> My bad, in fact a new patch is going to remove the oldapi check
>> completely as newer mount using new API will break the per-subvolume
>> RO/RW again.
>>
>> Thus a new patch is needed to remove the oldapi check first
>> (https://lore.kernel.org/linux-btrfs/[email-masked]/),
>> then the newer v2 patch
>> (https://lore.kernel.org/linux-btrfs/[email-masked]/T/#t)
>> will be completely fine.
> 
> I probably missed the v2 and picked the patch with warning that I did
> not consider too serious but it seems linux-next builds with -Werrror.
> Meanwhile I've updated the for-next snapshot branch and dropped the
> patch.

I'd prefer to pick the v2 and its dependency ("btrfs: fix per-subvolume 
RO/RW flags with new mount API") for early testing.

As I'm pretty sure the rolling distros are already rolling out new mount 
using the fsconfig API, and breaking our per-subvolume RO/RW mount.

The promise that new mount API will solve the per-subvolume RO/RW 
without reconfiguration is mostly a lie.
The reality is, RO mount is still passed with both 
fsconfig(FSCONFIG_SET_FLAG, "ro") and  mount_setattr(MOUNT_ATTR_RDONLY), 
doing exactly the same thing as the old mount.

Thanks,
Qu