|
@@ -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;
|