Commit 27e32cd2 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe
Browse files

block: pass a queue_limits argument to blk_mq_alloc_disk



Pass a queue_limits to blk_mq_alloc_disk and apply it if non-NULL.  This
will allow allocating queues with valid queue limits instead of setting
the values one at a time later.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarKeith Busch <kbusch@kernel.org>
Reviewed-by: default avatarJohn Garry <john.g.garry@oracle.com>
Reviewed-by: default avatarChaitanya Kulkarni <kch@nvidia.com>
Reviewed-by: default avatarMing Lei <ming.lei@redhat.com>
Reviewed-by: default avatarDamien Le Moal <dlemoal@kernel.org>
Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
Link: https://lore.kernel.org/r/20240213073425.1621680-11-hch@lst.de


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 9ac4dd8c
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -906,7 +906,7 @@ static int ubd_add(int n, char **error_out)
	if (err)
		goto out;

	disk = blk_mq_alloc_disk(&ubd_dev->tag_set, ubd_dev);
	disk = blk_mq_alloc_disk(&ubd_dev->tag_set, NULL, ubd_dev);
	if (IS_ERR(disk)) {
		err = PTR_ERR(disk);
		goto out_cleanup_tags;
+3 −2
Original line number Diff line number Diff line
@@ -4130,13 +4130,14 @@ void blk_mq_destroy_queue(struct request_queue *q)
}
EXPORT_SYMBOL(blk_mq_destroy_queue);

struct gendisk *__blk_mq_alloc_disk(struct blk_mq_tag_set *set, void *queuedata,
struct gendisk *__blk_mq_alloc_disk(struct blk_mq_tag_set *set,
		struct queue_limits *lim, void *queuedata,
		struct lock_class_key *lkclass)
{
	struct request_queue *q;
	struct gendisk *disk;

	q = blk_mq_alloc_queue(set, NULL, queuedata);
	q = blk_mq_alloc_queue(set, lim, queuedata);
	if (IS_ERR(q))
		return ERR_CAST(q);

+1 −1
Original line number Diff line number Diff line
@@ -1779,7 +1779,7 @@ static int fd_alloc_disk(int drive, int system)
	struct gendisk *disk;
	int err;

	disk = blk_mq_alloc_disk(&unit[drive].tag_set, NULL);
	disk = blk_mq_alloc_disk(&unit[drive].tag_set, NULL, NULL);
	if (IS_ERR(disk))
		return PTR_ERR(disk);

+1 −1
Original line number Diff line number Diff line
@@ -371,7 +371,7 @@ aoeblk_gdalloc(void *vp)
		goto err_mempool;
	}

	gd = blk_mq_alloc_disk(set, d);
	gd = blk_mq_alloc_disk(set, NULL, d);
	if (IS_ERR(gd)) {
		pr_err("aoe: cannot allocate block queue for %ld.%d\n",
			d->aoemajor, d->aoeminor);
+1 −1
Original line number Diff line number Diff line
@@ -1994,7 +1994,7 @@ static int ataflop_alloc_disk(unsigned int drive, unsigned int type)
{
	struct gendisk *disk;

	disk = blk_mq_alloc_disk(&unit[drive].tag_set, NULL);
	disk = blk_mq_alloc_disk(&unit[drive].tag_set, NULL, NULL);
	if (IS_ERR(disk))
		return PTR_ERR(disk);

Loading