diff mbox series

nfs: pass ro flag to second superblock

Message ID 20241130035818.1459775-1-lilingfeng3@huawei.com (mailing list archive)
State New
Headers show
Series nfs: pass ro flag to second superblock | expand

Commit Message

Li Lingfeng Nov. 30, 2024, 3:58 a.m. UTC
During the process of mounting an NFSv4 client, two superblocks will be
created in sequence. The first superblock corresponds to the root
directory exported by the server, and the second superblock corresponds to
the directory that will be actually mounted. The first superblock will
eventually be destroyed.
The flag passed from user mode will only be passed to the first
superblock, resulting in the actual used superblock not carrying the flag
passed from user mode(fs_context_for_submount() will set sb_flags as 0).

Since the superblock of NFS does not carry the ro tag, the file system
status displayed by /proc/self/mountstats shows that NFS is always in the
rw state, which may mislead users.

Pass ro flag passed by user carried by the fc to second superblock to fix
it.

Fixes: 281cad46b34d ("NFS: Create a submount rpc_op")
Signed-off-by: Li Lingfeng <lilingfeng3@huawei.com>
---
 fs/nfs/nfs4super.c | 1 +
 1 file changed, 1 insertion(+)
diff mbox series

Patch

diff --git a/fs/nfs/nfs4super.c b/fs/nfs/nfs4super.c
index b29a26923ce0..6c3ea620b75d 100644
--- a/fs/nfs/nfs4super.c
+++ b/fs/nfs/nfs4super.c
@@ -233,6 +233,7 @@  static int do_nfs4_mount(struct nfs_server *server,
 	if (IS_ERR(dentry))
 		return PTR_ERR(dentry);
 
+	dentry->d_sb->s_flags |= (fc->sb_flags & SB_RDONLY);
 	fc->root = dentry;
 	return 0;
 }