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: Keith Busch <kbusch@kernel.org> Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Link: https://lore.kernel.org/r/20220610195830.3574005-4-kbusch@fb.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
c58c0074c5
commit
3850e13f28
|
@ -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
|
||||||
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");
|
||||||
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[] = {
|
||||||
&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,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue