bdev/nvme: add JSON config dump

Change-Id: I0f22e6051e291b3eac8589fe0f686f7db445d71c
Signed-off-by: Pawel Wodkowski <pawelx.wodkowski@intel.com>
Reviewed-on: https://review.gerrithub.io/406587
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Pawel Wodkowski 2018-04-05 17:43:55 +02:00 committed by Daniel Verkamp
parent 46cbc7408a
commit 33aad6ee8d

View File

@ -50,6 +50,7 @@
#include "spdk_internal/log.h"
static void bdev_nvme_get_spdk_running_config(FILE *fp);
static int bdev_nvme_config_json(struct spdk_json_write_ctx *w);
struct nvme_ctrlr {
/**
@ -163,6 +164,7 @@ static struct spdk_bdev_module nvme_if = {
.module_init = bdev_nvme_library_init,
.module_fini = bdev_nvme_library_fini,
.config_text = bdev_nvme_get_spdk_running_config,
.config_json = bdev_nvme_config_json,
.get_ctx_size = bdev_nvme_get_ctx_size,
};
@ -671,6 +673,12 @@ bdev_nvme_dump_info_json(void *ctx, struct spdk_json_write_ctx *w)
return 0;
}
static void
bdev_nvme_write_config_json(struct spdk_bdev *bdev, struct spdk_json_write_ctx *w)
{
/* No config per bdev needed */
}
static uint64_t
bdev_nvme_get_spin_time(struct spdk_io_channel *ch)
{
@ -699,6 +707,7 @@ static const struct spdk_bdev_fn_table nvmelib_fn_table = {
.io_type_supported = bdev_nvme_io_type_supported,
.get_io_channel = bdev_nvme_get_io_channel,
.dump_info_json = bdev_nvme_dump_info_json,
.write_config_json = bdev_nvme_write_config_json,
.get_spin_time = bdev_nvme_get_spin_time,
};
@ -1460,6 +1469,48 @@ bdev_nvme_get_spdk_running_config(FILE *fp)
fprintf(fp, "\n");
}
static int
bdev_nvme_config_json(struct spdk_json_write_ctx *w)
{
struct nvme_ctrlr *nvme_ctrlr;
struct spdk_nvme_transport_id *trid;
const char *adrfam;
pthread_mutex_lock(&g_bdev_nvme_mutex);
TAILQ_FOREACH(nvme_ctrlr, &g_nvme_ctrlrs, tailq) {
trid = &nvme_ctrlr->trid;
spdk_json_write_object_begin(w);
spdk_json_write_named_string(w, "method", "construct_nvme_bdev");
spdk_json_write_named_object_begin(w, "params");
spdk_json_write_named_string(w, "name", nvme_ctrlr->name);
spdk_json_write_named_string(w, "trtype", spdk_nvme_transport_id_trtype_str(trid->trtype));
spdk_json_write_named_string(w, "traddr", trid->traddr);
adrfam = spdk_nvme_transport_id_adrfam_str(trid->adrfam);
if (adrfam) {
spdk_json_write_named_string(w, "adrfam", adrfam);
}
if (trid->trsvcid[0] != '\0') {
spdk_json_write_named_string(w, "trsvcid", trid->trsvcid);
}
if (trid->subnqn[0] != '\0') {
spdk_json_write_named_string(w, "subnqn", trid->subnqn);
}
spdk_json_write_object_end(w);
spdk_json_write_object_end(w);
}
pthread_mutex_unlock(&g_bdev_nvme_mutex);
return 0;
}
struct spdk_nvme_ctrlr *
spdk_bdev_nvme_get_ctrlr(struct spdk_bdev *bdev)
{