From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-it0-x244.google.com (mail-it0-x244.google.com [IPv6:2607:f8b0:4001:c0b::244]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 788EC20977877 for ; Mon, 28 May 2018 11:05:01 -0700 (PDT) Received: by mail-it0-x244.google.com with SMTP id l6-v6so2261371iti.2 for ; Mon, 28 May 2018 11:05:01 -0700 (PDT) MIME-Version: 1.0 References: <20180525223556.9244-1-vishal.l.verma@intel.com> In-Reply-To: <20180525223556.9244-1-vishal.l.verma@intel.com> From: Dan Williams Date: Mon, 28 May 2018 11:04:48 -0700 Message-ID: Subject: Re: [ndctl PATCH] ndctl, list: display the 'map' location in listings List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: linux-nvdimm-bounces@lists.01.org Sender: "Linux-nvdimm" To: "Verma, Vishal L" Cc: Yigal.Korman@netapp.com, "linux-nvdimm@lists.01.org" List-ID: On Fri, May 25, 2018 at 3:36 PM Vishal Verma 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" > Cc: Dan Williams > Signed-off-by: Vishal Verma > --- > 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