From: Christoph Hellwig <hch@lst.de>
To: Jens Axboe <axboe@kernel.dk>
Cc: linux-block@vger.kernel.org
Subject: [PATCH 5/5] null_blk: pass queue_limits to blk_mq_alloc_disk
Date: Wed, 14 Feb 2024 10:55:01 +0100 [thread overview]
Message-ID: <20240214095501.1883819-6-hch@lst.de> (raw)
In-Reply-To: <20240214095501.1883819-1-hch@lst.de>
Pass the queue limits directly to blk_mq_alloc_disk instead of
setting them one at a time.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
drivers/block/null_blk/main.c | 33 ++++++++++++++++++++-------------
drivers/block/null_blk/zoned.c | 7 -------
2 files changed, 20 insertions(+), 20 deletions(-)
diff --git a/drivers/block/null_blk/main.c b/drivers/block/null_blk/main.c
index 0c8d5042321302..6dd50332514d7c 100644
--- a/drivers/block/null_blk/main.c
+++ b/drivers/block/null_blk/main.c
@@ -1694,7 +1694,7 @@ static void null_del_dev(struct nullb *nullb)
dev->nullb = NULL;
}
-static void null_config_discard(struct nullb *nullb)
+static void null_config_discard(struct nullb *nullb, struct queue_limits *lim)
{
if (nullb->dev->discard == false)
return;
@@ -1711,7 +1711,7 @@ static void null_config_discard(struct nullb *nullb)
return;
}
- blk_queue_max_discard_sectors(nullb->q, UINT_MAX >> 9);
+ lim->max_hw_discard_sectors = UINT_MAX >> 9;
}
static const struct block_device_operations null_ops = {
@@ -1869,6 +1869,12 @@ static bool null_setup_fault(void)
static int null_add_dev(struct nullb_device *dev)
{
+ struct queue_limits lim = {
+ .logical_block_size = dev->blocksize,
+ .physical_block_size = dev->blocksize,
+ .max_hw_sectors = dev->max_sectors,
+ };
+
struct nullb *nullb;
int rv;
@@ -1894,7 +1900,18 @@ static int null_add_dev(struct nullb_device *dev)
if (rv)
goto out_cleanup_queues;
- nullb->disk = blk_mq_alloc_disk(nullb->tag_set, NULL, nullb);
+ if (dev->virt_boundary)
+ lim.virt_boundary_mask = PAGE_SIZE - 1;
+ if (dev->zoned) {
+ lim.zoned = true;
+ lim.chunk_sectors = dev->zone_size_sects;
+ lim.max_zone_append_sectors = dev->zone_size_sects;
+ lim.max_open_zones = dev->zone_max_open;
+ lim.max_active_zones = dev->zone_max_active;
+ }
+ null_config_discard(nullb, &lim);
+
+ nullb->disk = blk_mq_alloc_disk(nullb->tag_set, &lim, nullb);
if (IS_ERR(nullb->disk)) {
rv = PTR_ERR(nullb->disk);
goto out_cleanup_tags;
@@ -1930,16 +1947,6 @@ static int null_add_dev(struct nullb_device *dev)
dev->index = rv;
mutex_unlock(&lock);
- blk_queue_logical_block_size(nullb->q, dev->blocksize);
- blk_queue_physical_block_size(nullb->q, dev->blocksize);
- if (dev->max_sectors)
- blk_queue_max_hw_sectors(nullb->q, dev->max_sectors);
-
- if (dev->virt_boundary)
- blk_queue_virt_boundary(nullb->q, PAGE_SIZE - 1);
-
- null_config_discard(nullb);
-
if (config_item_name(&dev->group.cg_item)) {
/* Use configfs dir name as the device name */
snprintf(nullb->disk_name, sizeof(nullb->disk_name),
diff --git a/drivers/block/null_blk/zoned.c b/drivers/block/null_blk/zoned.c
index 3605afe105dac9..8ece18b0ea30c8 100644
--- a/drivers/block/null_blk/zoned.c
+++ b/drivers/block/null_blk/zoned.c
@@ -156,18 +156,11 @@ int null_init_zoned_dev(struct nullb_device *dev, struct request_queue *q)
int null_register_zoned_dev(struct nullb *nullb)
{
- struct nullb_device *dev = nullb->dev;
struct request_queue *q = nullb->q;
- disk_set_zoned(nullb->disk);
blk_queue_flag_set(QUEUE_FLAG_ZONE_RESETALL, q);
blk_queue_required_elevator_features(q, ELEVATOR_F_ZBD_SEQ_WRITE);
- blk_queue_chunk_sectors(q, dev->zone_size_sects);
nullb->disk->nr_zones = bdev_nr_zones(nullb->disk->part0);
- blk_queue_max_zone_append_sectors(q, dev->zone_size_sects);
- disk_set_max_open_zones(nullb->disk, dev->zone_max_open);
- disk_set_max_active_zones(nullb->disk, dev->zone_max_active);
-
return blk_revalidate_disk_zones(nullb->disk, NULL);
}
--
2.39.2
next prev parent reply other threads:[~2024-02-14 9:55 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-14 9:54 drop bio mode from null_blk and convert it to atomic queue limits Christoph Hellwig
2024-02-14 9:54 ` [PATCH 1/5] null_blk: remove the bio based I/O path Christoph Hellwig
2024-02-14 11:25 ` Damien Le Moal
2024-02-14 17:25 ` Keith Busch
2024-02-14 23:16 ` Damien Le Moal
2024-02-14 23:34 ` Keith Busch
2024-02-15 8:05 ` Christoph Hellwig
2024-02-14 9:54 ` [PATCH 2/5] null_blk: initialize the tag_set timeout in null_init_tag_set Christoph Hellwig
2024-02-14 11:26 ` Damien Le Moal
2024-02-14 9:54 ` [PATCH 3/5] null_blk: refactor tag_set setup Christoph Hellwig
2024-02-14 11:29 ` Damien Le Moal
2024-02-14 9:55 ` [PATCH 4/5] null_blk: remove null_gendisk_register Christoph Hellwig
2024-02-14 11:30 ` Damien Le Moal
2024-02-14 9:55 ` Christoph Hellwig [this message]
2024-02-14 11:32 ` [PATCH 5/5] null_blk: pass queue_limits to blk_mq_alloc_disk Damien Le Moal
2024-02-14 14:08 ` drop bio mode from null_blk and convert it to atomic queue limits Johannes Thumshirn
-- strict thread matches above, loose matches on Subject: below --
2024-02-19 6:29 drop bio mode from null_blk and convert it to atomic queue limits v2 Christoph Hellwig
2024-02-19 6:29 ` [PATCH 5/5] null_blk: pass queue_limits to blk_mq_alloc_disk Christoph Hellwig
2024-02-20 5:32 drop bio mode from null_blk and convert it to atomic queue limits v3 Christoph Hellwig
2024-02-20 5:33 ` [PATCH 5/5] null_blk: pass queue_limits to blk_mq_alloc_disk Christoph Hellwig
2024-02-20 7:23 ` Hannes Reinecke
2024-02-20 9:32 drop bio mode from null_blk and convert it to atomic queue limits v4 Christoph Hellwig
2024-02-20 9:32 ` [PATCH 5/5] null_blk: pass queue_limits to blk_mq_alloc_disk Christoph Hellwig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240214095501.1883819-6-hch@lst.de \
--to=hch@lst.de \
--cc=axboe@kernel.dk \
--cc=linux-block@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.