mirror of https://gitee.com/openkylin/linux.git
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. Cc: linux-api@vger.kernel.org Cc: linux-man@vger.kernel.org Reported-by: Lennart Poettering <mzxreary@0pointer.de> Reported-by: J. Bruce Fields <bfields@fieldses.org> Signed-off-by: Miklos Szeredi <mszeredi@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
fa2fcf4f1d
commit
80340fe360
|
@ -202,6 +202,9 @@ int vfs_statx(int dfd, const char __user *filename, int flags,
|
||||||
error = vfs_getattr(&path, stat, request_mask, flags);
|
error = vfs_getattr(&path, stat, request_mask, flags);
|
||||||
stat->mnt_id = real_mount(path.mnt)->mnt_id;
|
stat->mnt_id = real_mount(path.mnt)->mnt_id;
|
||||||
stat->result_mask |= STATX_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);
|
path_put(&path);
|
||||||
if (retry_estale(error, lookup_flags)) {
|
if (retry_estale(error, lookup_flags)) {
|
||||||
lookup_flags |= LOOKUP_REVAL;
|
lookup_flags |= LOOKUP_REVAL;
|
||||||
|
|
|
@ -181,6 +181,7 @@ struct statx {
|
||||||
#define STATX_ATTR_NODUMP 0x00000040 /* [I] File is not to be dumped */
|
#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_ENCRYPTED 0x00000800 /* [I] File requires key to decrypt in fs */
|
||||||
#define STATX_ATTR_AUTOMOUNT 0x00001000 /* Dir: Automount trigger */
|
#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 */
|
#define STATX_ATTR_VERITY 0x00100000 /* [I] Verity protected file */
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue