statx: add mount ID
Systemd is hacking around to get it and it's trivial to add to statx, so... Cc: linux-api@vger.kernel.org Cc: linux-man@vger.kernel.org Signed-off-by: Miklos Szeredi <mszeredi@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
Родитель
761e28fa27
Коммит
fa2fcf4f1d
|
@ -22,6 +22,7 @@
|
|||
#include <asm/unistd.h>
|
||||
|
||||
#include "internal.h"
|
||||
#include "mount.h"
|
||||
|
||||
/**
|
||||
* generic_fillattr - Fill in the basic attributes from the inode struct
|
||||
|
@ -199,6 +200,8 @@ retry:
|
|||
goto out;
|
||||
|
||||
error = vfs_getattr(&path, stat, request_mask, flags);
|
||||
stat->mnt_id = real_mount(path.mnt)->mnt_id;
|
||||
stat->result_mask |= STATX_MNT_ID;
|
||||
path_put(&path);
|
||||
if (retry_estale(error, lookup_flags)) {
|
||||
lookup_flags |= LOOKUP_REVAL;
|
||||
|
@ -563,6 +566,7 @@ cp_statx(const struct kstat *stat, struct statx __user *buffer)
|
|||
tmp.stx_rdev_minor = MINOR(stat->rdev);
|
||||
tmp.stx_dev_major = MAJOR(stat->dev);
|
||||
tmp.stx_dev_minor = MINOR(stat->dev);
|
||||
tmp.stx_mnt_id = stat->mnt_id;
|
||||
|
||||
return copy_to_user(buffer, &tmp, sizeof(tmp)) ? -EFAULT : 0;
|
||||
}
|
||||
|
|
|
@ -47,6 +47,7 @@ struct kstat {
|
|||
struct timespec64 ctime;
|
||||
struct timespec64 btime; /* File creation time */
|
||||
u64 blocks;
|
||||
u64 mnt_id;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -123,7 +123,10 @@ struct statx {
|
|||
__u32 stx_dev_major; /* ID of device containing file [uncond] */
|
||||
__u32 stx_dev_minor;
|
||||
/* 0x90 */
|
||||
__u64 __spare2[14]; /* Spare space for future expansion */
|
||||
__u64 stx_mnt_id;
|
||||
__u64 __spare2;
|
||||
/* 0xa0 */
|
||||
__u64 __spare3[12]; /* Spare space for future expansion */
|
||||
/* 0x100 */
|
||||
};
|
||||
|
||||
|
@ -148,6 +151,7 @@ struct statx {
|
|||
#define STATX_BLOCKS 0x00000400U /* Want/got stx_blocks */
|
||||
#define STATX_BASIC_STATS 0x000007ffU /* The stuff in the normal stat struct */
|
||||
#define STATX_BTIME 0x00000800U /* Want/got stx_btime */
|
||||
#define STATX_MNT_ID 0x00001000U /* Got stx_mnt_id */
|
||||
|
||||
#define STATX__RESERVED 0x80000000U /* Reserved for future struct statx expansion */
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче