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

Christoph Hellwig
2022-01-21T07:12:59Z

On Thu, Jan 20, 2022 at 06:36:03PM -0800, Darrick J. Wong wrote:
> Sure. How's this? I couldn't think of a real case of directio
> requiring different alignments for pos and bytecount, so the only real
> addition here is the alignment requirements for best performance.

While I see some benefits of adding the information to a catchall like
statx we really need to be careful to not bloat the structure like
crazy.

> struct statx {
> ...
> /* 0x90 */
> __u64 stx_mnt_id;
>
> /* Memory buffer alignment required for directio, in bytes. */
> __u32 stx_dio_mem_align;
>
> /* File range alignment required for directio, in bytes. */
> __u32 stx_dio_fpos_align_min;

So this really needs a good explanation why we need both iven that we
had no real use case for this.

> /* File range alignment needed for best performance, in bytes. */
> __u32 stx_dio_fpos_align_opt;

And why we really care about this. I guess you want to allow sector
size dio in reflink setups, but discourage it. But is this really as
important?

> /* Maximum size of a directio request, in bytes. */
> __u32 stx_dio_max_iosize;

I know XFS_IOC_DIOINFO had this, but does it really make much sense?
Why do we need it for direct I/O and not buffered I/O?