On Fri, May 25, 2018 at 3:36 PM Vishal Verma <vishal.l.ve...@intel.com> wrote:
> For 'fsdax' and 'devdax' namespaces, a 'map' location may be specified > for page structures storage. This can be 'mem', for system RAM, or 'dev' > for using pmem as the backing storage. Once set, there was no way of > telling using ndctl, which of the two locations a namespace was > configured for. Add this in util_namespace_to_json so that all > namespace listings contain the map location. > Reported-by: "Yigal Korman" <yigal.kor...@netapp.com> > Cc: Dan Williams <dan.j.willi...@intel.com> > Signed-off-by: Vishal Verma <vishal.l.ve...@intel.com> > --- > util/json.c | 18 ++++++++++++++++++ > 1 file changed, 18 insertions(+) > diff --git a/util/json.c b/util/json.c > index c606e1c..17dd90c 100644 > --- a/util/json.c > +++ b/util/json.c > @@ -667,11 +667,17 @@ struct json_object *util_namespace_to_json(struct ndctl_namespace *ndns, > { > struct json_object *jndns = json_object_new_object(); > struct json_object *jobj, *jbbs = NULL; > + const char *locations[] = { > + [NDCTL_PFN_LOC_NONE] = "none", > + [NDCTL_PFN_LOC_RAM] = "mem", > + [NDCTL_PFN_LOC_PMEM] = "dev", > + }; > unsigned long long size = ULLONG_MAX; > unsigned int sector_size = UINT_MAX; > enum ndctl_namespace_mode mode; > const char *bdev = NULL, *name; > unsigned int bb_count = 0; > + enum ndctl_pfn_loc loc; > struct ndctl_btt *btt; > struct ndctl_pfn *pfn; > struct ndctl_dax *dax; > @@ -749,6 +755,12 @@ struct json_object *util_namespace_to_json(struct ndctl_namespace *ndns, > jobj = util_raw_uuid(ndns); > if (jobj) > json_object_object_add(jndns, "raw_uuid", jobj); > + loc = ndctl_pfn_get_location(pfn); > + jobj = json_object_new_string(locations[loc]); > + if (!jobj) > + goto err; > + if (jobj) > + json_object_object_add(jndns, "map", jobj); > bdev = ndctl_pfn_get_block_device(pfn); > } else if (dax) { > struct daxctl_region *dax_region; > @@ -763,6 +775,12 @@ struct json_object *util_namespace_to_json(struct ndctl_namespace *ndns, > jobj = util_raw_uuid(ndns); > if (jobj) > json_object_object_add(jndns, "raw_uuid", jobj); > + loc = ndctl_dax_get_location(dax); > + jobj = json_object_new_string(locations[loc]); > + if (!jobj) > + goto err; > + if (jobj) > + json_object_object_add(jndns, "map", jobj); > if ((flags & UTIL_JSON_DAX) && dax_region) { > jobj = util_daxctl_region_to_json(dax_region, NULL, > flags); There appears to be one case missing in this: case NDCTL_NS_MODE_MEMORY: if (pfn) /* dynamic memory mode */ size = ndctl_pfn_get_size(pfn); else /* native/static memory mode */ size = ndctl_namespace_get_size(ndns); jobj = json_object_new_string("fsdax"); break; In the "/* native/static memory mode */" configuration we should emit a 'map:"mem"' indication. _______________________________________________ Linux-nvdimm mailing list Linux-nvdimm@lists.01.org https://lists.01.org/mailman/listinfo/linux-nvdimm