[PATCH 08/20] nvme: call nvme_identify_ns as the first thing in nvme_alloc_ns_block
Damien Le Moal
Damien.LeMoal at wdc.com
Mon Sep 28 10:32:04 EDT 2020
On 2020/09/28 21:35, Christoph Hellwig wrote:
> Check if the namespace actually exists as the very first thing and don't
> bother with any extra work if not. This should speed up and simplify
> the sequential scanning for NVMe 1.0 devices.
>
> Signed-off-by: Christoph Hellwig <hch at lst.de>
> ---
> drivers/nvme/host/core.c | 15 +++++++--------
> 1 file changed, 7 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
> index 7b1423c7e7fc58..4a5c4d45755b55 100644
> --- a/drivers/nvme/host/core.c
> +++ b/drivers/nvme/host/core.c
> @@ -3887,9 +3887,12 @@ static void nvme_alloc_ns(struct nvme_ctrl *ctrl, unsigned nsid)
> char disk_name[DISK_NAME_LEN];
> int node = ctrl->numa_node, flags = GENHD_FL_EXT_DEVT, ret;
>
> + if (nvme_identify_ns(ctrl, nsid, &id))
> + return;
> +
> ns = kzalloc_node(sizeof(*ns), GFP_KERNEL, node);
> if (!ns)
> - return;
> + goto out_free_id;
>
> ns->queue = blk_mq_init_queue(ctrl->tagset);
> if (IS_ERR(ns->queue))
> @@ -3911,13 +3914,9 @@ static void nvme_alloc_ns(struct nvme_ctrl *ctrl, unsigned nsid)
> blk_queue_logical_block_size(ns->queue, 1 << ns->lba_shift);
> nvme_set_queue_limits(ctrl, ns->queue);
>
> - ret = nvme_identify_ns(ctrl, nsid, &id);
> - if (ret)
> - goto out_free_queue;
> -
> ret = nvme_init_ns_head(ns, nsid, id);
> if (ret)
> - goto out_free_id;
> + goto out_free_queue;
> nvme_set_disk_name(disk_name, ns, ctrl, &flags);
>
> disk = alloc_disk_node(0, node);
> @@ -3968,12 +3967,12 @@ static void nvme_alloc_ns(struct nvme_ctrl *ctrl, unsigned nsid)
> list_del_init(&ns->head->entry);
> mutex_unlock(&ctrl->subsys->lock);
> nvme_put_ns_head(ns->head);
> - out_free_id:
> - kfree(id);
> out_free_queue:
> blk_cleanup_queue(ns->queue);
> out_free_ns:
> kfree(ns);
> + out_free_id:
> + kfree(id);
> }
>
> static void nvme_ns_remove(struct nvme_ns *ns)
>
Looks good.
Reviewed-by: Damien Le Moal <damien.lemoal at wdc.com>
--
Damien Le Moal
Western Digital Research
More information about the Linux-nvme
mailing list