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?