From 2730f5cac0e63ab301321f9e45398d77173f5241 Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Wed, 20 Apr 2022 14:39:47 +0900 Subject: [PATCH] bdev/nvme: Add cntlid to bdev_get_bdevs and bdev_nvme_get_controllers RPCs NVMe bdev name already includes the name of the NVMe bdev controller and the NSID. CNTLID will be a good ID to identify a namespace from a NVMe bdev when multipath is configured. However, the query RPCs, bdev_get_bdevs and bdev_nvme_get_controllers had not returned such information. Signed-off-by: Shuhei Matsumoto Change-Id: I2f2e355ff13f69ced616be803a3152c838cdc980 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12276 Reviewed-by: Jim Harris Reviewed-by: Aleksey Marchuk Tested-by: SPDK CI Jenkins Community-CI: Broadcom CI --- doc/jsonrpc.md | 3 ++- module/bdev/nvme/bdev_nvme.c | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/doc/jsonrpc.md b/doc/jsonrpc.md index eccda1c2c..a547ede54 100644 --- a/doc/jsonrpc.md +++ b/doc/jsonrpc.md @@ -3153,7 +3153,8 @@ Example response: "trid": { "trtype": "PCIe", "traddr": "0000:05:00.0" - } + }, + "cntlid": 0 } ] } diff --git a/module/bdev/nvme/bdev_nvme.c b/module/bdev/nvme/bdev_nvme.c index 40b2a3f82..1ec718ae3 100644 --- a/module/bdev/nvme/bdev_nvme.c +++ b/module/bdev/nvme/bdev_nvme.c @@ -2443,6 +2443,7 @@ nvme_ctrlr_info_json(struct spdk_json_write_ctx *w, struct nvme_ctrlr *nvme_ctrl { struct spdk_nvme_transport_id *trid; const struct spdk_nvme_ctrlr_opts *opts; + const struct spdk_nvme_ctrlr_data *cdata; spdk_json_write_object_begin(w); @@ -2462,6 +2463,9 @@ nvme_ctrlr_info_json(struct spdk_json_write_ctx *w, struct nvme_ctrlr *nvme_ctrl nvme_bdev_dump_trid_json(trid, w); spdk_json_write_object_end(w); + cdata = spdk_nvme_ctrlr_get_data(nvme_ctrlr->ctrlr); + spdk_json_write_named_uint16(w, "cntlid", cdata->cntlid); + opts = spdk_nvme_ctrlr_get_opts(nvme_ctrlr->ctrlr); spdk_json_write_named_object_begin(w, "host"); spdk_json_write_named_string(w, "nqn", opts->hostnqn); @@ -2516,6 +2520,8 @@ nvme_namespace_info_json(struct spdk_json_write_ctx *w, spdk_json_write_named_object_begin(w, "ctrlr_data"); + spdk_json_write_named_uint16(w, "cntlid", cdata->cntlid); + spdk_json_write_named_string_fmt(w, "vendor_id", "0x%04x", cdata->vid); snprintf(buf, sizeof(cdata->mn) + 1, "%s", cdata->mn);