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.


Reply via email to