Donet Tom <donet...@linux.ibm.com> writes:

> If any one of BTT, PFN, or DAX is not present, but the other two
> are, then the region capabilities are not displayed in the
> ndctl list -R -C command.
>
> This is because util_region_capabilities_to_json() returns NULL
> if any one of BTT, PFN, or DAX is not present.
>
> In this patch, we have changed the logic to display all the region
> capabilities that are present.
>
> Test Results with CONFIG_BTT disabled
> =====================================
> Without this patch
> ------------------
>  # ./build/ndctl/ndctl  list -R -C
>  [
>   {
>     "dev":"region1",
>     "size":549755813888,
>     "align":16777216,
>     "available_size":549755813888,
>     "max_available_extent":549755813888,
>     "type":"pmem",
>     "iset_id":11510624209454722969,
>     "persistence_domain":"memory_controller"
>   },
>
> With this patch
> ---------------
>  # ./build/ndctl/ndctl  list -R -C
>  [
>   {
>     "dev":"region1",
>     "size":549755813888,
>     "align":16777216,
>     "available_size":549755813888,
>     "max_available_extent":549755813888,
>     "type":"pmem",
>     "iset_id":11510624209454722969,
>     "capabilities":[
>       {
>         "mode":"fsdax",
>         "alignments":[
>           65536,
>           16777216
>         ]
>       },
>       {
>         "mode":"devdax",
>         "alignments":[
>           65536,
>           16777216
>         ]
>       }
>     ],
>     "persistence_domain":"memory_controller"
>   },
>
> Signed-off-by: Donet Tom <donet...@linux.ibm.com>
> ---
>  ndctl/json.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/ndctl/json.c b/ndctl/json.c
> index 23bad7f..3df3bc4 100644
> --- a/ndctl/json.c
> +++ b/ndctl/json.c
> @@ -381,9 +381,6 @@ struct json_object 
> *util_region_capabilities_to_json(struct ndctl_region *region
>       struct ndctl_pfn *pfn = ndctl_region_get_pfn_seed(region);
>       struct ndctl_dax *dax = ndctl_region_get_dax_seed(region);
>  
> -     if (!btt || !pfn || !dax)
> -             return NULL;
> -

I think this was meant to be:

        if (!btt && !pfn && !dax)
                return NULL;

I think that would be the more appropriate fix.

Cheers,
Jeff

>       jcaps = json_object_new_array();
>       if (!jcaps)
>               return NULL;
> @@ -436,7 +433,8 @@ struct json_object 
> *util_region_capabilities_to_json(struct ndctl_region *region
>               json_object_object_add(jcap, "alignments", jobj);
>       }
>  
> -     return jcaps;
> +     if (btt || pfn || dax)
> +             return jcaps;
>  err:
>       json_object_put(jcaps);
>       return NULL;


Reply via email to