[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200406160706.GC2147@fieldses.org>
Date: Mon, 6 Apr 2020 12:07:06 -0400
From: "J. Bruce Fields" <bfields@...ldses.org>
To: Miklos Szeredi <miklos@...redi.hu>
Cc: Lennart Poettering <mzxreary@...inter.de>,
Ian Kent <raven@...maw.net>,
David Howells <dhowells@...hat.com>,
Christian Brauner <christian.brauner@...ntu.com>,
Linus Torvalds <torvalds@...ux-foundation.org>,
Al Viro <viro@...iv.linux.org.uk>, dray@...hat.com,
Karel Zak <kzak@...hat.com>,
Miklos Szeredi <mszeredi@...hat.com>,
Steven Whitehouse <swhiteho@...hat.com>,
Jeff Layton <jlayton@...hat.com>, andres@...razel.de,
keyrings@...r.kernel.org, linux-fsdevel@...r.kernel.org,
linux-kernel@...r.kernel.org, Aleksa Sarai <cyphar@...har.com>
Subject: Re: Upcoming: Notifications, FS notifications and fsinfo()
The patch makes sense to me, thanks!
In the NFS case it's implementing the "mountpoint" export option:
mountpoint=path
mp This option makes it possible to only export a directory if it
has successfully been mounted. If no path is given (e.g.
mountpoint or mp) then the export point must also be a mount
point. If it isn't then the export point is not exported. This
allows you to be sure that the directory underneath a mountpoint
will never be exported by accident if, for example, the filesysâ
tem failed to mount due to a disc error.
If a path is given (e.g. mountpoint=/path or mp=/path) then the
nominated path must be a mountpoint for the exportpoint to be
exported.
--b.
On Mon, Apr 06, 2020 at 10:35:55AM +0200, Miklos Szeredi wrote:
> From: Miklos Szeredi <mszeredi@...hat.com>
> Subject: statx: add mount_root
>
> Determining whether a path or file descriptor refers to a mountpoint (or
> more precisely a mount root) is not trivial using current tools.
>
> Add a flag to statx that indicates whether the path or fd refers to the
> root of a mount or not.
>
> Reported-by: Lennart Poettering <mzxreary@...inter.de>
> Reported-by: J. Bruce Fields <bfields@...ldses.org>
> Signed-off-by: Miklos Szeredi <mszeredi@...hat.com>
> ---
> fs/stat.c | 3 +++
> include/uapi/linux/stat.h | 1 +
> 2 files changed, 4 insertions(+)
>
> --- a/include/uapi/linux/stat.h
> +++ b/include/uapi/linux/stat.h
> @@ -172,6 +172,7 @@ struct statx {
> #define STATX_ATTR_NODUMP 0x00000040 /* [I] File is not to be dumped */
> #define STATX_ATTR_ENCRYPTED 0x00000800 /* [I] File requires key to decrypt in fs */
> #define STATX_ATTR_AUTOMOUNT 0x00001000 /* Dir: Automount trigger */
> +#define STATX_ATTR_MOUNT_ROOT 0x00002000 /* Root of a mount */
> #define STATX_ATTR_VERITY 0x00100000 /* [I] Verity protected file */
>
>
> --- a/fs/stat.c
> +++ b/fs/stat.c
> @@ -202,6 +202,9 @@ int vfs_statx(int dfd, const char __user
> error = vfs_getattr(&path, stat, request_mask, flags);
> stat->mnt_id = real_mount(path.mnt)->mnt_id;
> stat->result_mask |= STATX_MNT_ID;
> + if (path.mnt->mnt_root == path.dentry)
> + stat->attributes |= STATX_ATTR_MOUNT_ROOT;
> + stat->attributes_mask |= STATX_ATTR_MOUNT_ROOT;
> path_put(&path);
> if (retry_estale(error, lookup_flags)) {
> lookup_flags |= LOOKUP_REVAL;
Powered by blists - more mailing lists