diff mbox series

gfs2: fs: derive f_fsid from s_uuid

Message ID 20231024075535.2994553-1-amir73il@gmail.com (mailing list archive)
State New, archived
Headers show
Series gfs2: fs: derive f_fsid from s_uuid | expand

Commit Message

Amir Goldstein Oct. 24, 2023, 7:55 a.m. UTC
gfs2 already has optional persistent uuid.

Use that uuid to report f_fsid in statfs(2), same as ext2/ext4/zonefs.

This allows gfs2 to be monitored by fanotify filesystem watch.
for example, with inotify-tools 4.23.8.0, the following command can be
used to watch changes over entire filesystem:

  fsnotifywatch --filesystem /mnt/gfs2

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
---

Andreas,

I do not have a test setup for gfs2, but this change it quite trivial,
so I am posting it only compile tested.

There is no need to test fanotify. It enough to test statfs returns
a non-zero f_fsid, e.g.:

  strace -e fstatfs du /mnt/gfs2

Thanks,
Amir.

 fs/gfs2/super.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Jan Kara Oct. 24, 2023, 9:42 a.m. UTC | #1
On Tue 24-10-23 10:55:35, Amir Goldstein wrote:
> gfs2 already has optional persistent uuid.
> 
> Use that uuid to report f_fsid in statfs(2), same as ext2/ext4/zonefs.
> 
> This allows gfs2 to be monitored by fanotify filesystem watch.
> for example, with inotify-tools 4.23.8.0, the following command can be
> used to watch changes over entire filesystem:
> 
>   fsnotifywatch --filesystem /mnt/gfs2
> 
> Signed-off-by: Amir Goldstein <amir73il@gmail.com>

Looks good. Feel free to add:

Reviewed-by: Jan Kara <jack@suse.cz>

								Honza

> ---
> 
> Andreas,
> 
> I do not have a test setup for gfs2, but this change it quite trivial,
> so I am posting it only compile tested.
> 
> There is no need to test fanotify. It enough to test statfs returns
> a non-zero f_fsid, e.g.:
> 
>   strace -e fstatfs du /mnt/gfs2
> 
> Thanks,
> Amir.
> 
>  fs/gfs2/super.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/fs/gfs2/super.c b/fs/gfs2/super.c
> index 02d93da21b2b..ea769af6bb23 100644
> --- a/fs/gfs2/super.c
> +++ b/fs/gfs2/super.c
> @@ -1006,6 +1006,7 @@ static int gfs2_statfs(struct dentry *dentry, struct kstatfs *buf)
>  	buf->f_files = sc.sc_dinodes + sc.sc_free;
>  	buf->f_ffree = sc.sc_free;
>  	buf->f_namelen = GFS2_FNAMESIZE;
> +	buf->f_fsid = uuid_to_fsid(sb->s_uuid.b);
>  
>  	return 0;
>  }
> -- 
> 2.34.1
>
Andreas Gruenbacher Oct. 24, 2023, 11:15 a.m. UTC | #2
Amir,

On Tue, Oct 24, 2023 at 9:56 AM Amir Goldstein <amir73il@gmail.com> wrote:
> gfs2 already has optional persistent uuid.
>
> Use that uuid to report f_fsid in statfs(2), same as ext2/ext4/zonefs.

I've applied this patch, thank you.

Andreas
diff mbox series

Patch

diff --git a/fs/gfs2/super.c b/fs/gfs2/super.c
index 02d93da21b2b..ea769af6bb23 100644
--- a/fs/gfs2/super.c
+++ b/fs/gfs2/super.c
@@ -1006,6 +1006,7 @@  static int gfs2_statfs(struct dentry *dentry, struct kstatfs *buf)
 	buf->f_files = sc.sc_dinodes + sc.sc_free;
 	buf->f_ffree = sc.sc_free;
 	buf->f_namelen = GFS2_FNAMESIZE;
+	buf->f_fsid = uuid_to_fsid(sb->s_uuid.b);
 
 	return 0;
 }