Re: [PATCH 02/25] vfs: Allow fsinfo() to query what's in an fs_context [ver #13]

From: David Howells
Date: Fri Jun 21 2019 - 10:50:55 EST


Christian Brauner <christian@xxxxxxxxxx> wrote:

> > >If you tried to go through /proc/pid/fd with open(O_PATH), I think
> > >you'd get
> > >the symlink, not the target.
> >
> > Then you should use fdget(), no? :)
>
> That is unless you want fsinfo() to be useable on any fd and just fds
> that are returned from the new mount-api syscalls. Maybe that wasn't
> clear from my first mail.

fsinfo(), as coded, is usable on any fd, as for fstat(), statx() and
fstatfs().

I have made it such that if you do this on the fd returned by fsopen() or
fspick(), the access is diverted to the filesystem that the fs_context refers
to since querying anon_inodes is of little value.

Now, it could be argued that it should require an AT_xxx flag to cause this
diversion to happen.

> Is the information returned for:
>
> int fd = fsopen()/fspick();
> fsinfo(fd);
>
> int ofd = open("/", O_PATH);
> fsinfo(ofd, ...);
>
> the same if they refer to the same mount or would they differ?

At the moment it differs. In the former case, there may not even be a
superblock attached to the fd to query, though invariants like filesystem
parameter types and names can be queried.

David