]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
freevxfs: derive f_fsid from bdev->bd_dev
authorAmir Goldstein <amir73il@gmail.com>
Tue, 24 Oct 2023 12:14:57 +0000 (15:14 +0300)
committerChristian Brauner <brauner@kernel.org>
Sat, 28 Oct 2023 14:16:19 +0000 (16:16 +0200)
The majority of blockdev filesystems, which do not have a UUID in their
on-disk format, derive f_fsid of statfs(2) from bdev->bd_dev.

Use the same practice for freevxfs.

This will allow reporting fanotify events with fanotify_event_info_fid.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Link: https://lore.kernel.org/r/20231024121457.3014063-1-amir73il@gmail.com
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/freevxfs/vxfs_super.c

index 310d73e254df2cea38dce331715c55606d728735..e6e2a2185e7c5dbe78b51e47d71d24f2b982d701 100644 (file)
@@ -76,6 +76,7 @@ vxfs_statfs(struct dentry *dentry, struct kstatfs *bufp)
 {
        struct vxfs_sb_info             *infp = VXFS_SBI(dentry->d_sb);
        struct vxfs_sb *raw_sb = infp->vsi_raw;
+       u64 id = huge_encode_dev(dentry->d_sb->s_bdev->bd_dev);
 
        bufp->f_type = VXFS_SUPER_MAGIC;
        bufp->f_bsize = dentry->d_sb->s_blocksize;
@@ -84,6 +85,7 @@ vxfs_statfs(struct dentry *dentry, struct kstatfs *bufp)
        bufp->f_bavail = 0;
        bufp->f_files = 0;
        bufp->f_ffree = fs32_to_cpu(infp, raw_sb->vs_ifree);
+       bufp->f_fsid = u64_to_fsid(id);
        bufp->f_namelen = VXFS_NAMELEN;
 
        return 0;