Re: file metadata via fs API
From: Miklos Szeredi <miklos@szeredi.hu>
Date: 2020-08-12 12:43:50
Also in:
linux-fsdevel, linux-security-module, lkml
On Wed, Aug 12, 2020 at 1:28 PM Karel Zak [off-list ref] wrote:
The proposal is based on paths and open(), how do you plan to deal with mount IDs? David's fsinfo() allows to ask for mount info by mount ID and it works well with mount notification where you get the ID. The collaboration with notification interface is critical for our use-cases.
One would use the notification to keep an up to date set of attributes for each watched mount, right? That presumably means the mount ID <-> mount path mapping already exists, which means it's just possible to use the open(mount_path, O_PATH) to obtain the base fd. If that assumption is not true, we could add a new interface for opening the root of the mount by ID. Fsinfo uses the dfd as a root for checking connectivity and the filename as the mount ID + a special flag indicating that it's not "dfd + path" we are dealing with but "rootfd + mntid". That sort of semantic multiplexing is quite ugly and I wouldn't suggest doing that with openat(2). A new syscall that returns an fd pointing to the root of the mount might be the best solution: int open_mount(int root_fd, u64 mntid, int flags); Yeah, yeah this is adding just another syscall interface, but notice how: a) it does one simple thing, no multiplexing at all b) is general purpose, and could be used for example in conjunction with open_by_handle_at(2), that also requires an fd pointing to a mount. Thanks, Miklos