bdev/nvme: Factor out ctrlr info json dump into a helper function

Signed-off-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Change-Id: I7f1e08ff13d890cb780e7b66c18a77ab85c82029
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12311
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Shuhei Matsumoto 2022-04-20 14:11:04 +09:00 committed by Tomasz Zawadzki
parent 13ca6e52d3
commit 50b6329ca0
4 changed files with 59 additions and 43 deletions

View File

@ -2422,6 +2422,56 @@ bdev_nvme_get_memory_domains(void *ctx, struct spdk_memory_domain **domains, int
return spdk_nvme_ctrlr_get_memory_domains(nvme_ns->ctrlr->ctrlr, domains, array_size); return spdk_nvme_ctrlr_get_memory_domains(nvme_ns->ctrlr->ctrlr, domains, array_size);
} }
static const char *
nvme_ctrlr_get_state_str(struct nvme_ctrlr *nvme_ctrlr)
{
if (nvme_ctrlr->destruct) {
return "deleting";
} else if (spdk_nvme_ctrlr_is_failed(nvme_ctrlr->ctrlr)) {
return "failed";
} else if (nvme_ctrlr->resetting) {
return "resetting";
} else if (nvme_ctrlr->reconnect_is_delayed > 0) {
return "reconnect_is_delayed";
} else {
return "enabled";
}
}
void
nvme_ctrlr_info_json(struct spdk_json_write_ctx *w, struct nvme_ctrlr *nvme_ctrlr)
{
struct spdk_nvme_transport_id *trid;
const struct spdk_nvme_ctrlr_opts *opts;
spdk_json_write_object_begin(w);
spdk_json_write_named_string(w, "state", nvme_ctrlr_get_state_str(nvme_ctrlr));
#ifdef SPDK_CONFIG_NVME_CUSE
size_t cuse_name_size = 128;
char cuse_name[cuse_name_size];
int rc = spdk_nvme_cuse_get_ctrlr_name(nvme_ctrlr->ctrlr, cuse_name, &cuse_name_size);
if (rc == 0) {
spdk_json_write_named_string(w, "cuse_device", cuse_name);
}
#endif
trid = &nvme_ctrlr->active_path_id->trid;
spdk_json_write_named_object_begin(w, "trid");
nvme_bdev_dump_trid_json(trid, w);
spdk_json_write_object_end(w);
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);
spdk_json_write_named_string(w, "addr", opts->src_addr);
spdk_json_write_named_string(w, "svcid", opts->src_svcid);
spdk_json_write_object_end(w);
spdk_json_write_object_end(w);
}
static void static void
nvme_namespace_info_json(struct spdk_json_write_ctx *w, nvme_namespace_info_json(struct spdk_json_write_ctx *w,
struct nvme_ns *nvme_ns) struct nvme_ns *nvme_ns)

View File

@ -234,6 +234,8 @@ void nvme_bdev_ctrlr_for_each(nvme_bdev_ctrlr_for_each_fn fn, void *ctx);
void nvme_bdev_dump_trid_json(const struct spdk_nvme_transport_id *trid, void nvme_bdev_dump_trid_json(const struct spdk_nvme_transport_id *trid,
struct spdk_json_write_ctx *w); struct spdk_json_write_ctx *w);
void nvme_ctrlr_info_json(struct spdk_json_write_ctx *w, struct nvme_ctrlr *nvme_ctrlr);
struct nvme_ns *nvme_ctrlr_get_ns(struct nvme_ctrlr *nvme_ctrlr, uint32_t nsid); struct nvme_ns *nvme_ctrlr_get_ns(struct nvme_ctrlr *nvme_ctrlr, uint32_t nsid);
struct nvme_ns *nvme_ctrlr_get_first_active_ns(struct nvme_ctrlr *nvme_ctrlr); struct nvme_ns *nvme_ctrlr_get_first_active_ns(struct nvme_ctrlr *nvme_ctrlr);
struct nvme_ns *nvme_ctrlr_get_next_active_ns(struct nvme_ctrlr *nvme_ctrlr, struct nvme_ns *ns); struct nvme_ns *nvme_ctrlr_get_next_active_ns(struct nvme_ctrlr *nvme_ctrlr, struct nvme_ns *ns);

View File

@ -537,60 +537,18 @@ SPDK_RPC_REGISTER("bdev_nvme_attach_controller", rpc_bdev_nvme_attach_controller
SPDK_RPC_RUNTIME) SPDK_RPC_RUNTIME)
SPDK_RPC_REGISTER_ALIAS_DEPRECATED(bdev_nvme_attach_controller, construct_nvme_bdev) SPDK_RPC_REGISTER_ALIAS_DEPRECATED(bdev_nvme_attach_controller, construct_nvme_bdev)
static const char *
nvme_ctrlr_get_state_str(struct nvme_ctrlr *nvme_ctrlr)
{
if (nvme_ctrlr->destruct) {
return "deleting";
} else if (spdk_nvme_ctrlr_is_failed(nvme_ctrlr->ctrlr)) {
return "failed";
} else if (nvme_ctrlr->resetting) {
return "resetting";
} else if (nvme_ctrlr->reconnect_is_delayed > 0) {
return "reconnect_is_delayed";
} else {
return "enabled";
}
}
static void static void
rpc_dump_nvme_bdev_controller_info(struct nvme_bdev_ctrlr *nbdev_ctrlr, void *ctx) rpc_dump_nvme_bdev_controller_info(struct nvme_bdev_ctrlr *nbdev_ctrlr, void *ctx)
{ {
struct spdk_json_write_ctx *w = ctx; struct spdk_json_write_ctx *w = ctx;
struct spdk_nvme_transport_id *trid;
struct nvme_ctrlr *nvme_ctrlr; struct nvme_ctrlr *nvme_ctrlr;
const struct spdk_nvme_ctrlr_opts *opts;
spdk_json_write_object_begin(w); spdk_json_write_object_begin(w);
spdk_json_write_named_string(w, "name", nbdev_ctrlr->name); spdk_json_write_named_string(w, "name", nbdev_ctrlr->name);
spdk_json_write_named_array_begin(w, "ctrlrs"); spdk_json_write_named_array_begin(w, "ctrlrs");
TAILQ_FOREACH(nvme_ctrlr, &nbdev_ctrlr->ctrlrs, tailq) { TAILQ_FOREACH(nvme_ctrlr, &nbdev_ctrlr->ctrlrs, tailq) {
spdk_json_write_object_begin(w); nvme_ctrlr_info_json(w, nvme_ctrlr);
spdk_json_write_named_string(w, "state", nvme_ctrlr_get_state_str(nvme_ctrlr));
#ifdef SPDK_CONFIG_NVME_CUSE
size_t cuse_name_size = 128;
char cuse_name[cuse_name_size];
int rc = spdk_nvme_cuse_get_ctrlr_name(nvme_ctrlr->ctrlr, cuse_name, &cuse_name_size);
if (rc == 0) {
spdk_json_write_named_string(w, "cuse_device", cuse_name);
}
#endif
trid = &nvme_ctrlr->active_path_id->trid;
spdk_json_write_named_object_begin(w, "trid");
nvme_bdev_dump_trid_json(trid, w);
spdk_json_write_object_end(w);
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);
spdk_json_write_named_string(w, "addr", opts->src_addr);
spdk_json_write_named_string(w, "svcid", opts->src_svcid);
spdk_json_write_object_end(w);
spdk_json_write_object_end(w);
} }
spdk_json_write_array_end(w); spdk_json_write_array_end(w);
spdk_json_write_object_end(w); spdk_json_write_object_end(w);

View File

@ -97,6 +97,9 @@ spdk_nvme_ctrlr_get_default_io_qpair_opts(struct spdk_nvme_ctrlr *ctrlr,
memset(opts, 0, opts_size); memset(opts, 0, opts_size);
} }
DEFINE_STUB(spdk_nvme_ctrlr_get_opts, const struct spdk_nvme_ctrlr_opts *,
(struct spdk_nvme_ctrlr *ctrlr), NULL);
DEFINE_STUB(spdk_nvme_ctrlr_get_max_xfer_size, uint32_t, DEFINE_STUB(spdk_nvme_ctrlr_get_max_xfer_size, uint32_t,
(const struct spdk_nvme_ctrlr *ctrlr), 0); (const struct spdk_nvme_ctrlr *ctrlr), 0);
@ -122,6 +125,9 @@ DEFINE_STUB(spdk_nvme_ctrlr_cmd_io_raw_with_md, int, (struct spdk_nvme_ctrlr *ct
struct spdk_nvme_qpair *qpair, struct spdk_nvme_cmd *cmd, void *buf, struct spdk_nvme_qpair *qpair, struct spdk_nvme_cmd *cmd, void *buf,
uint32_t len, void *md_buf, spdk_nvme_cmd_cb cb_fn, void *cb_arg), 0); uint32_t len, void *md_buf, spdk_nvme_cmd_cb cb_fn, void *cb_arg), 0);
DEFINE_STUB(spdk_nvme_cuse_get_ctrlr_name, int, (struct spdk_nvme_ctrlr *ctrlr, char *name,
size_t *size), 0);
DEFINE_STUB(spdk_nvme_ns_get_max_io_xfer_size, uint32_t, (struct spdk_nvme_ns *ns), 0); DEFINE_STUB(spdk_nvme_ns_get_max_io_xfer_size, uint32_t, (struct spdk_nvme_ns *ns), 0);
DEFINE_STUB(spdk_nvme_ns_get_extended_sector_size, uint32_t, (struct spdk_nvme_ns *ns), 0); DEFINE_STUB(spdk_nvme_ns_get_extended_sector_size, uint32_t, (struct spdk_nvme_ns *ns), 0);