On Sat, Feb 06, 2021 at 01:48:29AM +0900, Minwoo Im wrote: > Not sure if this is okay just give ctrl->tagset for the head > request_queue, but this patch works fine as far.
Huh, that's probably not supposed to work: bio-based drivers should never use tagsets. Since this is getting a little more complicated, let's take it to the kernel mailing lists. Meanwhile, I'll work on a proposal for there. > --- > diff --git a/drivers/nvme/host/multipath.c b/drivers/nvme/host/multipath.c > index 282b7a4ea9a9..22febc7baa36 100644 > --- a/drivers/nvme/host/multipath.c > +++ b/drivers/nvme/host/multipath.c > @@ -375,7 +375,7 @@ int nvme_mpath_alloc_disk(struct nvme_ctrl *ctrl, struct > nvme_ns_head *head) > if (!(ctrl->subsys->cmic & NVME_CTRL_CMIC_MULTI_CTRL) || !multipath) > return 0; > > - q = blk_alloc_queue(ctrl->numa_node); > + q = blk_mq_init_queue(ctrl->tagset); > if (!q) > goto out; > blk_queue_flag_set(QUEUE_FLAG_NONROT, q); > @@ -677,6 +677,8 @@ void nvme_mpath_add_disk(struct nvme_ns *ns, struct > nvme_id_ns *id) > if (blk_queue_stable_writes(ns->queue) && ns->head->disk) > blk_queue_flag_set(QUEUE_FLAG_STABLE_WRITES, > ns->head->disk->queue); > + if (blk_queue_is_zoned(ns->queue)) > + blk_revalidate_disk_zones(ns->head->disk, NULL); > } > > void nvme_mpath_remove_disk(struct nvme_ns_head *head)