statx: add mount ID
[linux-block.git] / fs / stat.c
index f7f07d1b73cb3b600423c95d0e17ecd9a9986fee..3d88c99f7743210bfae466800e0fb80f77d9b7d6 100644 (file)
--- a/fs/stat.c
+++ b/fs/stat.c
@@ -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;
 }