mirror of https://gitee.com/openkylin/linux.git
staging: erofs: support statx
statx() has already been supported in commit a528d35e8b
("statx: Add a system call to make enhanced file info available"),
user programs can get more useful attributes.
Signed-off-by: Gao Xiang <gaoxiang25@huawei.com>
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
1f48d05628
commit
89f27eded5
|
@ -285,7 +285,25 @@ struct inode *erofs_iget(struct super_block *sb,
|
|||
return inode;
|
||||
}
|
||||
|
||||
int erofs_getattr(const struct path *path, struct kstat *stat,
|
||||
u32 request_mask, unsigned int query_flags)
|
||||
{
|
||||
struct inode *const inode = d_inode(path->dentry);
|
||||
struct erofs_vnode *const vi = EROFS_V(inode);
|
||||
|
||||
if (vi->data_mapping_mode == EROFS_INODE_LAYOUT_COMPRESSION)
|
||||
stat->attributes |= STATX_ATTR_COMPRESSED;
|
||||
|
||||
stat->attributes |= STATX_ATTR_IMMUTABLE;
|
||||
stat->attributes_mask |= (STATX_ATTR_COMPRESSED |
|
||||
STATX_ATTR_IMMUTABLE);
|
||||
|
||||
generic_fillattr(inode, stat);
|
||||
return 0;
|
||||
}
|
||||
|
||||
const struct inode_operations erofs_generic_iops = {
|
||||
.getattr = erofs_getattr,
|
||||
#ifdef CONFIG_EROFS_FS_XATTR
|
||||
.listxattr = erofs_listxattr,
|
||||
#endif
|
||||
|
@ -294,6 +312,7 @@ const struct inode_operations erofs_generic_iops = {
|
|||
|
||||
const struct inode_operations erofs_symlink_iops = {
|
||||
.get_link = page_get_link,
|
||||
.getattr = erofs_getattr,
|
||||
#ifdef CONFIG_EROFS_FS_XATTR
|
||||
.listxattr = erofs_listxattr,
|
||||
#endif
|
||||
|
@ -302,6 +321,7 @@ const struct inode_operations erofs_symlink_iops = {
|
|||
|
||||
const struct inode_operations erofs_fast_symlink_iops = {
|
||||
.get_link = simple_get_link,
|
||||
.getattr = erofs_getattr,
|
||||
#ifdef CONFIG_EROFS_FS_XATTR
|
||||
.listxattr = erofs_listxattr,
|
||||
#endif
|
||||
|
|
|
@ -556,6 +556,8 @@ static inline bool is_inode_fast_symlink(struct inode *inode)
|
|||
}
|
||||
|
||||
struct inode *erofs_iget(struct super_block *sb, erofs_nid_t nid, bool dir);
|
||||
int erofs_getattr(const struct path *path, struct kstat *stat,
|
||||
u32 request_mask, unsigned int query_flags);
|
||||
|
||||
/* namei.c */
|
||||
extern const struct inode_operations erofs_dir_iops;
|
||||
|
|
|
@ -247,6 +247,7 @@ static struct dentry *erofs_lookup(struct inode *dir,
|
|||
|
||||
const struct inode_operations erofs_dir_iops = {
|
||||
.lookup = erofs_lookup,
|
||||
.getattr = erofs_getattr,
|
||||
#ifdef CONFIG_EROFS_FS_XATTR
|
||||
.listxattr = erofs_listxattr,
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue