mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 04:31:50 +00:00
f2fs: support STATX_DIOALIGN
Add support for STATX_DIOALIGN to f2fs, so that direct I/O alignment restrictions are exposed to userspace in a generic way. Signed-off-by: Eric Biggers <ebiggers@google.com> Acked-by: Jaegeuk Kim <jaegeuk@kernel.org> Link: https://lore.kernel.org/r/20220827065851.135710-8-ebiggers@kernel.org
This commit is contained in:
parent
bd36732931
commit
c8c02272a9
@ -847,6 +847,24 @@ int f2fs_getattr(struct user_namespace *mnt_userns, const struct path *path,
|
||||
stat->btime.tv_nsec = fi->i_crtime.tv_nsec;
|
||||
}
|
||||
|
||||
/*
|
||||
* Return the DIO alignment restrictions if requested. We only return
|
||||
* this information when requested, since on encrypted files it might
|
||||
* take a fair bit of work to get if the file wasn't opened recently.
|
||||
*
|
||||
* f2fs sometimes supports DIO reads but not DIO writes. STATX_DIOALIGN
|
||||
* cannot represent that, so in that case we report no DIO support.
|
||||
*/
|
||||
if ((request_mask & STATX_DIOALIGN) && S_ISREG(inode->i_mode)) {
|
||||
unsigned int bsize = i_blocksize(inode);
|
||||
|
||||
stat->result_mask |= STATX_DIOALIGN;
|
||||
if (!f2fs_force_buffered_io(inode, WRITE)) {
|
||||
stat->dio_mem_align = bsize;
|
||||
stat->dio_offset_align = bsize;
|
||||
}
|
||||
}
|
||||
|
||||
flags = fi->i_flags;
|
||||
if (flags & F2FS_COMPR_FL)
|
||||
stat->attributes |= STATX_ATTR_COMPRESSED;
|
||||
|
Loading…
Reference in New Issue
Block a user