Re: [PATCH 16/17] nvme: implement multipath access to nvme subsystems
From: Guan Junxiong <hidden>
Date: 2017-10-30 03:37:55
Also in:
linux-nvme
From: Guan Junxiong <hidden>
Date: 2017-10-30 03:37:55
Also in:
linux-nvme
On 2017/10/23 22:51, Christoph Hellwig wrote:
@@ -2427,20 +2681,46 @@ static struct nvme_ns_head *nvme_alloc_ns_head(struct nvme_ctrl *ctrl, if (ret) { dev_err(ctrl->device, "duplicate IDs for nsid %d\n", nsid); - goto out_free_head; + goto out_release_instance; } + ret = -ENOMEM; + q = blk_alloc_queue_node(GFP_KERNEL, NUMA_NO_NODE); + if (!q) + goto out_free_head; + q->queuedata = head; + blk_queue_make_request(q, nvme_ns_head_make_request); + q->poll_fn = nvme_ns_head_poll; + queue_flag_set_unlocked(QUEUE_FLAG_NONROT, q); + /* set to a default value for 512 until disk is validated */ + blk_queue_logical_block_size(q, 512); + nvme_set_queue_limits(ctrl, q); + + head->disk = alloc_disk(0); + if (!head->disk) + goto out_cleanup_queue; + head->disk->fops = &nvme_ns_head_ops; + head->disk->private_data = head; + head->disk->queue = q; + head->disk->flags = GENHD_FL_EXT_DEVT; + sprintf(head->disk->disk_name, "nvme%dn%d", + ctrl->subsys->instance, nsid);
Is it okay to use head->instance instead of nsid for disk name nvme#n# ? Becuase _nsid_ sets are not continuous sometimes, so disk name is ugly in that case.