diff options
Diffstat (limited to 'fs/ext4/inode.c')
-rw-r--r-- | fs/ext4/inode.c | 35 |
1 files changed, 32 insertions, 3 deletions
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 4247d8d25687..5d02b922afa3 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c | |||
@@ -5390,11 +5390,40 @@ err_out: | |||
5390 | int ext4_getattr(const struct path *path, struct kstat *stat, | 5390 | int ext4_getattr(const struct path *path, struct kstat *stat, |
5391 | u32 request_mask, unsigned int query_flags) | 5391 | u32 request_mask, unsigned int query_flags) |
5392 | { | 5392 | { |
5393 | struct inode *inode; | 5393 | struct inode *inode = d_inode(path->dentry); |
5394 | unsigned long long delalloc_blocks; | 5394 | struct ext4_inode *raw_inode; |
5395 | struct ext4_inode_info *ei = EXT4_I(inode); | ||
5396 | unsigned int flags; | ||
5397 | |||
5398 | if (EXT4_FITS_IN_INODE(raw_inode, ei, i_crtime)) { | ||
5399 | stat->result_mask |= STATX_BTIME; | ||
5400 | stat->btime.tv_sec = ei->i_crtime.tv_sec; | ||
5401 | stat->btime.tv_nsec = ei->i_crtime.tv_nsec; | ||
5402 | } | ||
5403 | |||
5404 | flags = ei->i_flags & EXT4_FL_USER_VISIBLE; | ||
5405 | if (flags & EXT4_APPEND_FL) | ||
5406 | stat->attributes |= STATX_ATTR_APPEND; | ||
5407 | if (flags & EXT4_COMPR_FL) | ||
5408 | stat->attributes |= STATX_ATTR_COMPRESSED; | ||
5409 | if (flags & EXT4_ENCRYPT_FL) | ||
5410 | stat->attributes |= STATX_ATTR_ENCRYPTED; | ||
5411 | if (flags & EXT4_IMMUTABLE_FL) | ||
5412 | stat->attributes |= STATX_ATTR_IMMUTABLE; | ||
5413 | if (flags & EXT4_NODUMP_FL) | ||
5414 | stat->attributes |= STATX_ATTR_NODUMP; | ||
5395 | 5415 | ||
5396 | inode = d_inode(path->dentry); | ||
5397 | generic_fillattr(inode, stat); | 5416 | generic_fillattr(inode, stat); |
5417 | return 0; | ||
5418 | } | ||
5419 | |||
5420 | int ext4_file_getattr(const struct path *path, struct kstat *stat, | ||
5421 | u32 request_mask, unsigned int query_flags) | ||
5422 | { | ||
5423 | struct inode *inode = d_inode(path->dentry); | ||
5424 | u64 delalloc_blocks; | ||
5425 | |||
5426 | ext4_getattr(path, stat, request_mask, query_flags); | ||
5398 | 5427 | ||
5399 | /* | 5428 | /* |
5400 | * If there is inline data in the inode, the inode will normally not | 5429 | * If there is inline data in the inode, the inode will normally not |