Only include dax region and sub-device info when requested by this new option to ndctl list. If '--device-dax' is the only option then the listing will only include namespaces in device-dax mode.
Signed-off-by: Dan Williams <dan.j.willi...@intel.com> --- ndctl/builtin-list.c | 7 ++++++- ndctl/builtin-xaction-namespace.c | 2 +- util/json.c | 12 +++++++----- util/json.h | 2 +- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/ndctl/builtin-list.c b/ndctl/builtin-list.c index b09da3057519..ed4edf6f0249 100644 --- a/ndctl/builtin-list.c +++ b/ndctl/builtin-list.c @@ -23,6 +23,7 @@ static struct { bool namespaces; bool idle; bool health; + bool dax; } list; static struct { @@ -98,7 +99,7 @@ static struct json_object *list_namespaces(struct ndctl_region *region, jnamespaces); } - jndns = util_namespace_to_json(ndns, list.idle); + jndns = util_namespace_to_json(ndns, list.idle, list.dax); if (!jndns) { fail("\n"); continue; @@ -233,6 +234,8 @@ int cmd_list(int argc, const char **argv, void *ctx) "include region info"), OPT_BOOLEAN('N', "namespaces", &list.namespaces, "include namespace info (default)"), + OPT_BOOLEAN('X', "device-dax", &list.dax, + "include device-dax info"), OPT_BOOLEAN('i', "idle", &list.idle, "include idle devices"), OPT_END(), }; @@ -265,6 +268,8 @@ int cmd_list(int argc, const char **argv, void *ctx) list.buses = !!param.bus; list.regions = !!param.region; list.dimms = !!param.dimm; + if (list.dax && !param.mode) + param.mode = "dax"; } if (num_list_flags() == 0) diff --git a/ndctl/builtin-xaction-namespace.c b/ndctl/builtin-xaction-namespace.c index f7a4e5b74a16..2c4f85f5e4ac 100644 --- a/ndctl/builtin-xaction-namespace.c +++ b/ndctl/builtin-xaction-namespace.c @@ -352,7 +352,7 @@ static int setup_namespace(struct ndctl_region *region, error("%s: failed to enable\n", ndctl_namespace_get_devname(ndns)); } else { - struct json_object *jndns = util_namespace_to_json(ndns, 0); + struct json_object *jndns = util_namespace_to_json(ndns, 0, 0); if (jndns) printf("%s\n", json_object_to_json_string_ext(jndns, diff --git a/util/json.c b/util/json.c index 82e677c2c7a7..299c1b5782ee 100644 --- a/util/json.c +++ b/util/json.c @@ -139,7 +139,7 @@ static json_object *util_daxctl_region_to_json(struct daxctl_region *region, } struct json_object *util_namespace_to_json(struct ndctl_namespace *ndns, - bool include_idle) + bool include_idle, bool include_dax) { struct json_object *jndns = json_object_new_object(); unsigned long long size = ULLONG_MAX; @@ -231,10 +231,12 @@ struct json_object *util_namespace_to_json(struct ndctl_namespace *ndns, if (!jobj) goto err; json_object_object_add(jndns, "uuid", jobj); - dax_region = ndctl_dax_get_daxctl_region(dax); - jobj = util_daxctl_region_to_json(dax_region, include_idle); - if (jobj) - json_object_object_add(jndns, "daxdevs", jobj); + if (include_dax) { + dax_region = ndctl_dax_get_daxctl_region(dax); + jobj = util_daxctl_region_to_json(dax_region, include_idle); + if (jobj) + json_object_object_add(jndns, "daxdevs", jobj); + } } else if (ndctl_namespace_get_type(ndns) != ND_DEVICE_NAMESPACE_IO) { const char *name; diff --git a/util/json.h b/util/json.h index 7492e51621a7..b8fc00f57ea8 100644 --- a/util/json.h +++ b/util/json.h @@ -11,7 +11,7 @@ struct json_object *util_bus_to_json(struct ndctl_bus *bus); struct json_object *util_dimm_to_json(struct ndctl_dimm *dimm); struct json_object *util_mapping_to_json(struct ndctl_mapping *mapping); struct json_object *util_namespace_to_json(struct ndctl_namespace *ndns, - bool include_idle); + bool include_idle, bool include_dax); #ifdef HAVE_NDCTL_SMART struct json_object *util_dimm_health_to_json(struct ndctl_dimm *dimm); #else _______________________________________________ Linux-nvdimm mailing list Linux-nvdimm@lists.01.org https://lists.01.org/mailman/listinfo/linux-nvdimm