Donet Tom <[email protected]> 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 <[email protected]>
> ---
> 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;