[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <ZlXaj9Qv0bm9PAjX@infradead.org>
Date: Tue, 28 May 2024 06:22:23 -0700
From: Christoph Hellwig <hch@...radead.org>
To: Christian Brauner <brauner@...nel.org>
Cc: Christoph Hellwig <hch@...radead.org>, Jan Kara <jack@...e.cz>,
Aleksa Sarai <cyphar@...har.com>,
Alexander Viro <viro@...iv.linux.org.uk>,
Chuck Lever <chuck.lever@...cle.com>,
Jeff Layton <jlayton@...nel.org>,
Amir Goldstein <amir73il@...il.com>,
Alexander Aring <alex.aring@...il.com>,
linux-fsdevel@...r.kernel.org, linux-nfs@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-api@...r.kernel.org
Subject: Re: [PATCH RFC v2] fhandle: expose u64 mount id to
name_to_handle_at(2)
On Tue, May 28, 2024 at 02:04:16PM +0200, Christian Brauner wrote:
> Can you please explain how opening an fd based on a handle returned from
> name_to_handle_at() and not using a mount file descriptor for
> open_by_handle_at() would work?
Same as NFS file handles:
name_to_handle_at returns a handle that includes a file system
identifier.
open_by_handle_at looks up the superblock based on that identifier.
For the identifier I could imagin three choices:
1) use the fsid as returned in statfs and returned by fsnotify.
The downside is that it is "only" 64-bit. The upside is that
we have a lot of plumbing for it
2) fixed 128-bit identifier to provide more entropy
3) a variable length identifier, which is more similar to NFS,
but also a lot more complicated
We'd need a global lookup structure to find the sb by id. The simplest
one would be a simple linear loop over super_blocks which isn't terribly
efficient, but probably better than whatever userspace is doing to
find a mount fd right now.
Let me cook up a simple prototype for 1) as it shouldn't be more than
a few hundred lines of code.
Powered by blists - more mailing lists