Message ID | 20220722071228.146690-10-ebiggers@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | make statx() return DIO alignment information | expand |
On Fri, Jul 22, 2022 at 12:12:28AM -0700, Eric Biggers wrote: > From: Eric Biggers <ebiggers@google.com> > > Add support for STATX_DIOALIGN to xfs, so that direct I/O alignment > restrictions are exposed to userspace in a generic way. Looks good: Reviewed-by: Christoph Hellwig <hch@lst.de>
On Fri, Jul 22, 2022 at 12:12:28AM -0700, Eric Biggers wrote: > From: Eric Biggers <ebiggers@google.com> > > Add support for STATX_DIOALIGN to xfs, so that direct I/O alignment > restrictions are exposed to userspace in a generic way. > > Signed-off-by: Eric Biggers <ebiggers@google.com> LGTM Reviewed-by: Darrick J. Wong <djwong@kernel.org> --D > --- > fs/xfs/xfs_iops.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c > index 29f5b8b8aca69a..bac3f56141801e 100644 > --- a/fs/xfs/xfs_iops.c > +++ b/fs/xfs/xfs_iops.c > @@ -605,6 +605,15 @@ xfs_vn_getattr( > stat->blksize = BLKDEV_IOSIZE; > stat->rdev = inode->i_rdev; > break; > + case S_IFREG: > + if (request_mask & STATX_DIOALIGN) { > + struct xfs_buftarg *target = xfs_inode_buftarg(ip); > + > + stat->result_mask |= STATX_DIOALIGN; > + stat->dio_mem_align = target->bt_logical_sectorsize; > + stat->dio_offset_align = target->bt_logical_sectorsize; > + } > + fallthrough; > default: > stat->blksize = xfs_stat_blksize(ip); > stat->rdev = 0; > -- > 2.37.0 >
diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index 29f5b8b8aca69a..bac3f56141801e 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c @@ -605,6 +605,15 @@ xfs_vn_getattr( stat->blksize = BLKDEV_IOSIZE; stat->rdev = inode->i_rdev; break; + case S_IFREG: + if (request_mask & STATX_DIOALIGN) { + struct xfs_buftarg *target = xfs_inode_buftarg(ip); + + stat->result_mask |= STATX_DIOALIGN; + stat->dio_mem_align = target->bt_logical_sectorsize; + stat->dio_offset_align = target->bt_logical_sectorsize; + } + fallthrough; default: stat->blksize = xfs_stat_blksize(ip); stat->rdev = 0;