fuse: handle empty request_mask in statx
authorMiklos Szeredi <mszeredi@redhat.com>
Thu, 10 Aug 2023 10:45:05 +0000 (12:45 +0200)
committerMiklos Szeredi <mszeredi@redhat.com>
Wed, 16 Aug 2023 10:39:24 +0000 (12:39 +0200)
If no attribute is requested, then don't send request to userspace.

Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
fs/fuse/dir.c

index f67bef9d83c4bf449fc8f29263bfb1833c820b3d..d38ab93e20077d990dbb5bd8a8f978146d4bc1d9 100644 (file)
@@ -1209,7 +1209,12 @@ static int fuse_update_get_attr(struct inode *inode, struct file *file,
        u32 inval_mask = READ_ONCE(fi->inval_mask);
        u32 cache_mask = fuse_get_cache_mask(inode);
 
-       if (flags & AT_STATX_FORCE_SYNC)
+       /* FUSE only supports basic stats */
+       request_mask &= STATX_BASIC_STATS;
+
+       if (!request_mask)
+               sync = false;
+       else if (flags & AT_STATX_FORCE_SYNC)
                sync = true;
        else if (flags & AT_STATX_DONT_SYNC)
                sync = false;