Commit 9999200f authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe
Browse files

aoe: pass queue_limits to blk_mq_alloc_disk



Pass the few limits aoe imposes directly to blk_mq_alloc_disk instead
of setting them one at a time and improve the way the default
max_hw_sectors is initialized while we're at it.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20240215070300.2200308-3-hch@lst.de


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 5d6789ce
Loading
Loading
Loading
Loading
+7 −8
Original line number Diff line number Diff line
@@ -24,8 +24,8 @@ static DEFINE_MUTEX(aoeblk_mutex);
static struct kmem_cache *buf_pool_cache;
static struct dentry *aoe_debugfs_dir;

/* GPFS needs a larger value than the default. */
static int aoe_maxsectors;
/* random default picked from the historic block max_sectors cap */
static int aoe_maxsectors = 2560;
module_param(aoe_maxsectors, int, 0644);
MODULE_PARM_DESC(aoe_maxsectors,
	"When nonzero, set the maximum number of sectors per I/O request");
@@ -334,6 +334,10 @@ aoeblk_gdalloc(void *vp)
	mempool_t *mp;
	struct blk_mq_tag_set *set;
	sector_t ssize;
	struct queue_limits lim = {
		.max_hw_sectors		= aoe_maxsectors,
		.io_opt			= SZ_2M,
	};
	ulong flags;
	int late = 0;
	int err;
@@ -371,7 +375,7 @@ aoeblk_gdalloc(void *vp)
		goto err_mempool;
	}

	gd = blk_mq_alloc_disk(set, NULL, d);
	gd = blk_mq_alloc_disk(set, &lim, d);
	if (IS_ERR(gd)) {
		pr_err("aoe: cannot allocate block queue for %ld.%d\n",
			d->aoemajor, d->aoeminor);
@@ -384,14 +388,9 @@ aoeblk_gdalloc(void *vp)
	WARN_ON(d->flags & DEVFL_TKILL);
	WARN_ON(d->gd);
	WARN_ON(d->flags & DEVFL_UP);
	/* random number picked from the history block max_sectors cap */
	blk_queue_max_hw_sectors(gd->queue, 2560u);
	blk_queue_io_opt(gd->queue, SZ_2M);
	d->bufpool = mp;
	d->blkq = gd->queue;
	d->gd = gd;
	if (aoe_maxsectors)
		blk_queue_max_hw_sectors(gd->queue, aoe_maxsectors);
	gd->major = AOE_MAJOR;
	gd->first_minor = d->sysminor;
	gd->minors = AOE_PARTITIONS;