On 07/19/2017 02:33 PM, Dan Williams wrote:
> Commit 10663a60d723 "ndctl, list: add '--device-dax' option" tried to
> cleanup the default namespace output by putting the device-dax details
> behind an extra option. This was done in anticipation of device-dax
> sub-division support, but the kernel has since added support for
> multiple-pmem namespaces per region and limiting device-dax instances to
> one per parent namespace. With the limitation in place we can directly
> associate a device-dax instance with a namespace and omit the dax-region
> details in ndctl.

$ ndctl list
...
  {
    "dev":"namespace7.0",
    "mode":"dax",
    "size":8453619712,
    "uuid":"c57b18aa-0c6a-4775-aa3e-e25f2a7c0c2f",
    "chardev":"dax7.0",
    "numa_node":1
  },
...


Thanks!

-- ljk
> 
> Reported-by: Linda Knippers <[email protected]>
> Signed-off-by: Dan Williams <[email protected]>
> ---
>  util/json.c |   14 ++++++++++++--
>  1 file changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/util/json.c b/util/json.c
> index 80512bdabeae..25188a61064f 100644
> --- a/util/json.c
> +++ b/util/json.c
> @@ -622,18 +622,28 @@ struct json_object *util_namespace_to_json(struct 
> ndctl_namespace *ndns,
>       } else if (dax) {
>               struct daxctl_region *dax_region;
>  
> +             dax_region = ndctl_dax_get_daxctl_region(dax);
>               ndctl_dax_get_uuid(dax, uuid);
>               uuid_unparse(uuid, buf);
>               jobj = json_object_new_string(buf);
>               if (!jobj)
>                       goto err;
>               json_object_object_add(jndns, "uuid", jobj);
> -             if (flags & UTIL_JSON_DAX) {
> -                     dax_region = ndctl_dax_get_daxctl_region(dax);
> +             if ((flags & UTIL_JSON_DAX) && dax_region) {
>                       jobj = util_daxctl_region_to_json(dax_region, NULL,
>                                       flags);
>                       if (jobj)
>                               json_object_object_add(jndns, "daxregion", 
> jobj);
> +             } else if (dax_region) {
> +                     struct daxctl_dev *dev;
> +                     const char *name;
> +
> +                     dev = daxctl_dev_get_first(dax_region);
> +                     name = daxctl_dev_get_devname(dev);
> +                     jobj = json_object_new_string(name);
> +                     if (!jobj)
> +                             goto err;
> +                     json_object_object_add(jndns, "chardev", jobj);
>               }
>       } else if (ndctl_namespace_get_type(ndns) != ND_DEVICE_NAMESPACE_IO) {
>               const char *name;
> 

_______________________________________________
Linux-nvdimm mailing list
[email protected]
https://lists.01.org/mailman/listinfo/linux-nvdimm

Reply via email to