mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-10-22 23:13:01 +02:00
block: better split mq vs non-mq code in add_disk_fwnode
Add a big conditional for blk-mq vs not mq at the beginning of add_disk_fwnode so that elevator_init_mq is only called for blk-mq disks, and add checks that the right methods or set or not set based on the queue type. Signed-off-by: Christoph Hellwig <hch@lst.de> Link: https://lore.kernel.org/r/20250106083531.799976-2-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
b7175e24d6
commit
6783811569
|
@ -400,21 +400,23 @@ int __must_check add_disk_fwnode(struct device *parent, struct gendisk *disk,
|
|||
struct device *ddev = disk_to_dev(disk);
|
||||
int ret;
|
||||
|
||||
/* Only makes sense for bio-based to set ->poll_bio */
|
||||
if (queue_is_mq(disk->queue) && disk->fops->poll_bio)
|
||||
if (queue_is_mq(disk->queue)) {
|
||||
/*
|
||||
* ->submit_bio and ->poll_bio are bypassed for blk-mq drivers.
|
||||
*/
|
||||
if (disk->fops->submit_bio || disk->fops->poll_bio)
|
||||
return -EINVAL;
|
||||
|
||||
/*
|
||||
* The disk queue should now be all set with enough information about
|
||||
* the device for the elevator code to pick an adequate default
|
||||
* elevator if one is needed, that is, for devices requesting queue
|
||||
* registration.
|
||||
* Initialize the I/O scheduler code and pick a default one if
|
||||
* needed.
|
||||
*/
|
||||
elevator_init_mq(disk->queue);
|
||||
|
||||
/* Mark bdev as having a submit_bio, if needed */
|
||||
if (disk->fops->submit_bio)
|
||||
} else {
|
||||
if (!disk->fops->submit_bio)
|
||||
return -EINVAL;
|
||||
bdev_set_flag(disk->part0, BD_HAS_SUBMIT_BIO);
|
||||
}
|
||||
|
||||
/*
|
||||
* If the driver provides an explicit major number it also must provide
|
||||
|
|
Loading…
Reference in New Issue
Block a user