Message ID | 20220526010613.4016118-4-kbusch@fb.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | direct io dma alignment | expand |
On Wed, May 25, 2022 at 06:06:07PM -0700, Keith Busch wrote: > From: Keith Busch <kbusch@kernel.org> > > User space may want to know how to align their buffers to avoid > bouncing. Export the queue attribute. > > Signed-off-by: Keith Busch <kbusch@kernel.org> > Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> > Reviewed-by: Christoph Hellwig <hch@lst.de> > --- > Documentation/ABI/stable/sysfs-block | 9 +++++++++ > block/blk-sysfs.c | 7 +++++++ > 2 files changed, 16 insertions(+) > > diff --git a/Documentation/ABI/stable/sysfs-block b/Documentation/ABI/stable/sysfs-block > index e8797cd09aff..08f6d00df138 100644 > --- a/Documentation/ABI/stable/sysfs-block > +++ b/Documentation/ABI/stable/sysfs-block > @@ -142,6 +142,15 @@ Description: > Default value of this file is '1'(on). > > > +What: /sys/block/<disk>/queue/dma_alignment > +Date: May 2022 > +Contact: linux-block@vger.kernel.org > +Description: > + Reports the alignment that user space addresses must have to be > + used for raw block device access with O_DIRECT and other driver > + specific passthrough mechanisms. > + Please keep this file in alphabetical order. - Eric
diff --git a/Documentation/ABI/stable/sysfs-block b/Documentation/ABI/stable/sysfs-block index e8797cd09aff..08f6d00df138 100644 --- a/Documentation/ABI/stable/sysfs-block +++ b/Documentation/ABI/stable/sysfs-block @@ -142,6 +142,15 @@ Description: Default value of this file is '1'(on). +What: /sys/block/<disk>/queue/dma_alignment +Date: May 2022 +Contact: linux-block@vger.kernel.org +Description: + Reports the alignment that user space addresses must have to be + used for raw block device access with O_DIRECT and other driver + specific passthrough mechanisms. + + What: /sys/block/<disk>/queue/chunk_sectors Date: September 2016 Contact: Hannes Reinecke <hare@suse.com> diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c index 88bd41d4cb59..14607565d781 100644 --- a/block/blk-sysfs.c +++ b/block/blk-sysfs.c @@ -274,6 +274,11 @@ static ssize_t queue_virt_boundary_mask_show(struct request_queue *q, char *page return queue_var_show(q->limits.virt_boundary_mask, page); } +static ssize_t queue_dma_alignment_show(struct request_queue *q, char *page) +{ + return queue_var_show(queue_dma_alignment(q), page); +} + #define QUEUE_SYSFS_BIT_FNS(name, flag, neg) \ static ssize_t \ queue_##name##_show(struct request_queue *q, char *page) \ @@ -606,6 +611,7 @@ QUEUE_RO_ENTRY(queue_dax, "dax"); QUEUE_RW_ENTRY(queue_io_timeout, "io_timeout"); QUEUE_RW_ENTRY(queue_wb_lat, "wbt_lat_usec"); QUEUE_RO_ENTRY(queue_virt_boundary_mask, "virt_boundary_mask"); +QUEUE_RO_ENTRY(queue_dma_alignment, "dma_alignment"); #ifdef CONFIG_BLK_DEV_THROTTLING_LOW QUEUE_RW_ENTRY(blk_throtl_sample_time, "throttle_sample_time"); @@ -667,6 +673,7 @@ static struct attribute *queue_attrs[] = { &blk_throtl_sample_time_entry.attr, #endif &queue_virt_boundary_mask_entry.attr, + &queue_dma_alignment_entry.attr, NULL, };