Commit 3850e13f authored by Keith Busch's avatar Keith Busch Committed by Jens Axboe

block: export dma_alignment attribute

User space may want to know how to align their buffers to avoid
bouncing. Export the queue attribute.
Signed-off-by: default avatarKeith Busch <kbusch@kernel.org>
Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20220610195830.3574005-4-kbusch@fb.comSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent c58c0074
...@@ -260,6 +260,15 @@ Description: ...@@ -260,6 +260,15 @@ Description:
for discards, and don't read this file. for discards, and don't read this file.
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/fua What: /sys/block/<disk>/queue/fua
Date: May 2018 Date: May 2018
Contact: linux-block@vger.kernel.org Contact: linux-block@vger.kernel.org
......
...@@ -274,6 +274,11 @@ static ssize_t queue_virt_boundary_mask_show(struct request_queue *q, char *page ...@@ -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); 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) \ #define QUEUE_SYSFS_BIT_FNS(name, flag, neg) \
static ssize_t \ static ssize_t \
queue_##name##_show(struct request_queue *q, char *page) \ queue_##name##_show(struct request_queue *q, char *page) \
...@@ -606,6 +611,7 @@ QUEUE_RO_ENTRY(queue_dax, "dax"); ...@@ -606,6 +611,7 @@ QUEUE_RO_ENTRY(queue_dax, "dax");
QUEUE_RW_ENTRY(queue_io_timeout, "io_timeout"); QUEUE_RW_ENTRY(queue_io_timeout, "io_timeout");
QUEUE_RW_ENTRY(queue_wb_lat, "wbt_lat_usec"); QUEUE_RW_ENTRY(queue_wb_lat, "wbt_lat_usec");
QUEUE_RO_ENTRY(queue_virt_boundary_mask, "virt_boundary_mask"); QUEUE_RO_ENTRY(queue_virt_boundary_mask, "virt_boundary_mask");
QUEUE_RO_ENTRY(queue_dma_alignment, "dma_alignment");
#ifdef CONFIG_BLK_DEV_THROTTLING_LOW #ifdef CONFIG_BLK_DEV_THROTTLING_LOW
QUEUE_RW_ENTRY(blk_throtl_sample_time, "throttle_sample_time"); QUEUE_RW_ENTRY(blk_throtl_sample_time, "throttle_sample_time");
...@@ -667,6 +673,7 @@ static struct attribute *queue_attrs[] = { ...@@ -667,6 +673,7 @@ static struct attribute *queue_attrs[] = {
&blk_throtl_sample_time_entry.attr, &blk_throtl_sample_time_entry.attr,
#endif #endif
&queue_virt_boundary_mask_entry.attr, &queue_virt_boundary_mask_entry.attr,
&queue_dma_alignment_entry.attr,
NULL, NULL,
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment