f2fs: support statx
authorChao Yu <yuchao0@huawei.com>
Wed, 3 May 2017 15:59:12 +0000 (23:59 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Wed, 24 May 2017 04:05:34 +0000 (21:05 -0700)
Last kernel has already support new syscall statx() in commit a528d35e8bfc
("statx: Add a system call to make enhanced file info available"), with
this interface we can show more file info including file creation and some
attribute flags to user.

This patch tries to support this functionality.

Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/file.c

index 9b3e7635222c985b92684f75310a08db372861d6..8ccbfe53c03c2a35216c603ab08c9319710f7a3f 100644 (file)
@@ -633,9 +633,30 @@ int f2fs_truncate(struct inode *inode)
 }
 
 int f2fs_getattr(const struct path *path, struct kstat *stat,
-                u32 request_mask, unsigned int flags)
+                u32 request_mask, unsigned int query_flags)
 {
        struct inode *inode = d_inode(path->dentry);
+       struct f2fs_inode_info *fi = F2FS_I(inode);
+       unsigned int flags;
+
+       flags = fi->i_flags & FS_FL_USER_VISIBLE;
+       if (flags & FS_APPEND_FL)
+               stat->attributes |= STATX_ATTR_APPEND;
+       if (flags & FS_COMPR_FL)
+               stat->attributes |= STATX_ATTR_COMPRESSED;
+       if (f2fs_encrypted_inode(inode))
+               stat->attributes |= STATX_ATTR_ENCRYPTED;
+       if (flags & FS_IMMUTABLE_FL)
+               stat->attributes |= STATX_ATTR_IMMUTABLE;
+       if (flags & FS_NODUMP_FL)
+               stat->attributes |= STATX_ATTR_NODUMP;
+
+       stat->attributes_mask |= (STATX_ATTR_APPEND |
+                                 STATX_ATTR_COMPRESSED |
+                                 STATX_ATTR_ENCRYPTED |
+                                 STATX_ATTR_IMMUTABLE |
+                                 STATX_ATTR_NODUMP);
+
        generic_fillattr(inode, stat);
        stat->blocks <<= 3;
        return 0;