Linux NFS development
 help / color / mirror / Atom feed
From: Li Lingfeng <lilingfeng3@huawei.com>
To: Zhang Yi <yi.zhang@huaweicloud.com>
Cc: <linux-nfs@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<ehagberg@janestreet.com>, <yukuai1@huaweicloud.com>,
	<houtao1@huawei.com>, <yangerkun@huawei.com>,
	<lilingfeng@huaweicloud.com>, <trondmy@kernel.org>,
	<anna@kernel.org>
Subject: Re: [PATCH] nfs: remove SB_RDONLY when remounting nfs
Date: Mon, 3 Mar 2025 20:58:18 +0800	[thread overview]
Message-ID: <9cb1493b-b2b2-4a5a-a71f-bfae5c2db8bc@huawei.com> (raw)
In-Reply-To: <aaef9940-8510-404f-bbc5-f0260ef90d21@huaweicloud.com>


在 2025/3/3 11:33, Zhang Yi 写道:
> On 2025/2/21 16:26, Li Lingfeng wrote:
>> In some scenarios, when mounting NFS, more than one superblock may be
>> created. The final superblock used is the last one created, but only the
>> first superblock carries the ro flag passed from user space. If a ro flag
>> is added to the superblock via remount, it will trigger the issue
>> described in Link[1].
>>
>> Link[2] attempted to address this by marking the superblock as ro during
>> the initial mount. However, this introduced a new problem in scenarios
>> where multiple mount points share the same superblock:
>> [root@a ~]# mount /dev/sdb /mnt/sdb
>> [root@a ~]# echo "/mnt/sdb *(rw,no_root_squash)" > /etc/exports
>> [root@a ~]# echo "/mnt/sdb/test_dir2 *(ro,no_root_squash)" >> /etc/exports
>> [root@a ~]# systemctl restart nfs-server
>> [root@a ~]# mount -t nfs -o rw 127.0.0.1:/mnt/sdb/test_dir1 /mnt/test_mp1
>> [root@a ~]# mount | grep nfs4
>> 127.0.0.1:/mnt/sdb/test_dir1 on /mnt/test_mp1 type nfs4 (rw,relatime,...
>> [root@a ~]# mount -t nfs -o ro 127.0.0.1:/mnt/sdb/test_dir2 /mnt/test_mp2
>> [root@a ~]# mount | grep nfs4
>> 127.0.0.1:/mnt/sdb/test_dir1 on /mnt/test_mp1 type nfs4 (ro,relatime,...
>> 127.0.0.1:/mnt/sdb/test_dir2 on /mnt/test_mp2 type nfs4 (ro,relatime,...
>> [root@a ~]#
>>
>> When mounting the second NFS, the shared superblock is marked as ro,
>> causing the previous NFS mount to become read-only.
>>
>> To resolve both issues, the ro flag is no longer applied to the superblock
>> during remount. Instead, the ro flag on the mount is used to control
>> whether the mount point is read-only.
>>
>> Fixes: 281cad46b34d ("NFS: Create a submount rpc_op")
>> Link[1]: https://lore.kernel.org/all/20240604112636.236517-3-lilingfeng@huaweicloud.com/
>> Link[2]: https://lore.kernel.org/all/20241130035818.1459775-1-lilingfeng3@huawei.com/
>> Signed-off-by: Li Lingfeng <lilingfeng3@huawei.com>
>> ---
>>   fs/nfs/super.c | 1 +
>>   1 file changed, 1 insertion(+)
>>
>> diff --git a/fs/nfs/super.c b/fs/nfs/super.c
>> index aeb715b4a690..f08e1d7fb179 100644
>> --- a/fs/nfs/super.c
>> +++ b/fs/nfs/super.c
>> @@ -1047,6 +1047,7 @@ int nfs_reconfigure(struct fs_context *fc)
>>   
>>   	sync_filesystem(sb);
>>   
>> +	fc->sb_flags &= ~SB_RDONLY;
> What about change sb_flags_mask instead? Something like below,
>
> 	fc->sb_flags_mask &= ~SB_RDONLY;
>
> and I'd also suggested to add a comment to explain the reason in detail.
>
> Thanks,
> Yi.

Thanks for your advice.  I will send v2 soon.


      reply	other threads:[~2025-03-03 12:58 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-21  8:26 [PATCH] nfs: remove SB_RDONLY when remounting nfs Li Lingfeng
2025-03-03  1:08 ` Li Lingfeng
2025-03-03  3:33 ` Zhang Yi
2025-03-03 12:58   ` Li Lingfeng [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9cb1493b-b2b2-4a5a-a71f-bfae5c2db8bc@huawei.com \
    --to=lilingfeng3@huawei.com \
    --cc=anna@kernel.org \
    --cc=ehagberg@janestreet.com \
    --cc=houtao1@huawei.com \
    --cc=lilingfeng@huaweicloud.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=trondmy@kernel.org \
    --cc=yangerkun@huawei.com \
    --cc=yi.zhang@huaweicloud.com \
    --cc=yukuai1@huaweicloud.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox