Re: [PATCH v10 0/5] add support for direct I/O with fscrypt using blk-crypto

Eric Biggers
2022-02-09T02:39:42Z

On Mon, Jan 24, 2022 at 10:03:32AM +1100, Dave Chinner wrote:
> >
> > /* 0xa0 */
> >
> > /* File range alignment needed for best performance, in bytes. */
> > __u32 stx_dio_fpos_align_opt;
>
> This is a common property of both DIO and buffered IO, so no need
> for it to be dio-only property.
>
> __u32 stx_offset_align_optimal;
>

Looking at this more closely: will stx_offset_align_optimal actually be useful,
given that st[x]_blksize already exists?

From the stat(2) and statx(2) man pages:

st_blksize
This field gives the "preferred" block size for efficient
filesystem I/O.

stx_blksize
The "preferred" block size for efficient filesystem I/O. (Writ‐
ing to a file in smaller chunks may cause an inefficient read-
modify-rewrite.)

File offsets aren't explicitly mentioned, but I think it's implied they should
be a multiple of st[x]_blksize, just like the I/O size. Otherwise, the I/O
would obviously require reading/writing partial blocks.

So, the proposed stx_offset_align_optimal field sounds like the same thing to
me. Is there anything I'm misunderstanding?

Putting stx_offset_align_optimal behind the STATX_DIRECTIO flag would also be
confusing if it would apply to both direct and buffered I/O.

- Eric