[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <277920.1713364693@warthog.procyon.org.uk>
Date: Wed, 17 Apr 2024 15:38:13 +0100
From: David Howells <dhowells@...hat.com>
To: Paulo Alcantara <pc@...guebit.com>
Cc: dhowells@...hat.com, Steve French <sfrench@...ba.org>,
Shyam Prasad N <sprasad@...rosoft.com>, linux-cifs@...r.kernel.org,
linux-fsdevel@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] cifs: Fix reacquisition of volume cookie on still-live connection
Paulo Alcantara <pc@...guebit.com> wrote:
> Consider the following example where a tcon is reused from different
> CIFS superblocks:
>
> mount.cifs //srv/share /mnt/1 -o ${opts} # new super, new tcon
> mount.cifs //srv/share/dir /mnt/2 -o ${opts} # new super, reused tcon
>
> So, /mnt/1/dir/foo and /mnt/2/foo will lead to different inodes.
>
> The two mounts are accessing the same tcon (\\srv\share) but the new
> superblock was created because the prefix path "\dir" didn't match in
> cifs_match_super(). Trust me, that's a very common scenario.
Why does it need to lead to a different superblock, assuming ${opts} is the
same in both cases? Can we not do as NFS does and share the superblock,
walking during the mount process through the directory prefix to the root
object?
In other words, why does:
mount.cifs //srv/share /mnt/1 -o ${opts}
mount.cifs //srv/share/dir /mnt/2 -o ${opts}
give you a different result to:
mount.cifs //srv/share /mnt/1 -o ${opts}
mount --bind /mnt/1/dir /mnt/2
David
Powered by blists - more mailing lists