gfs2: Add support for statx inode flags
authorAndreas Gruenbacher <agruenba@redhat.com>
Mon, 9 Oct 2017 15:55:58 +0000 (17:55 +0200)
committerAndreas Gruenbacher <agruenba@redhat.com>
Tue, 31 Oct 2017 13:26:58 +0000 (14:26 +0100)
Add support for the STATX_ATTR_ flags in statx.  (Compression,
encryption, and the nodump flag are not supported by gfs2.)

Partially fixes xfstest generic/424.

Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Reviewed-by: Andrew Price <anprice@redhat.com>
Signed-off-by: Bob Peterson <rpeterso@redhat.com>
fs/gfs2/inode.c

index 4749a6b..4e971b1 100644 (file)
@@ -1987,6 +1987,7 @@ static int gfs2_getattr(const struct path *path, struct kstat *stat,
        struct inode *inode = d_inode(path->dentry);
        struct gfs2_inode *ip = GFS2_I(inode);
        struct gfs2_holder gh;
+       u32 gfsflags;
        int error;
 
        gfs2_holder_mark_uninitialized(&gh);
@@ -1996,7 +1997,20 @@ static int gfs2_getattr(const struct path *path, struct kstat *stat,
                        return error;
        }
 
+       gfsflags = ip->i_diskflags;
+       if (gfsflags & GFS2_DIF_APPENDONLY)
+               stat->attributes |= STATX_ATTR_APPEND;
+       if (gfsflags & GFS2_DIF_IMMUTABLE)
+               stat->attributes |= STATX_ATTR_IMMUTABLE;
+
+       stat->attributes_mask |= (STATX_ATTR_APPEND |
+                                 STATX_ATTR_COMPRESSED |
+                                 STATX_ATTR_ENCRYPTED |
+                                 STATX_ATTR_IMMUTABLE |
+                                 STATX_ATTR_NODUMP);
+
        generic_fillattr(inode, stat);
+
        if (gfs2_holder_initialized(&gh))
                gfs2_glock_dq_uninit(&gh);