Re: [ndctl PATCH v3 2/2] ndctl: add sector_size to 'ndctl list' output

2018-01-29 Thread Dan Williams
On Mon, Jan 29, 2018 at 1:48 PM, Ross Zwisler
 wrote:
> It used to be that the only PMEM namespaces with a variable sector size
> were ones with a BTT, but that has changed.  sector_size still doesn't make
> sense for device DAX since we don't have a block I/O path.
>
> If we don't have a specified sector size, as happens with namespaces of
> devtype nd_namespace_io and older v1.1 namespace labels, we will display
> the default sector size of 512.
>
> Signed-off-by: Ross Zwisler 
> Reviewed-by: Dave Jiang 
> ---
>  util/json.c | 29 -
>  1 file changed, 24 insertions(+), 5 deletions(-)
>
> diff --git a/util/json.c b/util/json.c
> index 95beaa2..17d8f13 100644
> --- a/util/json.c
> +++ b/util/json.c
> @@ -718,11 +718,6 @@ struct json_object *util_namespace_to_json(struct 
> ndctl_namespace *ndns,
> goto err;
> json_object_object_add(jndns, "uuid", jobj);
>
> -   jobj = json_object_new_int(ndctl_btt_get_sector_size(btt));
> -   if (!jobj)
> -   goto err;
> -   json_object_object_add(jndns, "sector_size", jobj);
> -
> bdev = ndctl_btt_get_block_device(btt);
> } else if (pfn) {
> ndctl_pfn_get_uuid(pfn, uuid);
> @@ -774,6 +769,30 @@ struct json_object *util_namespace_to_json(struct 
> ndctl_namespace *ndns,
> } else
> bdev = ndctl_namespace_get_block_device(ndns);
>
> +   jobj = NULL;
> +   if (btt) {
> +   jobj = json_object_new_int(ndctl_btt_get_sector_size(btt));
> +   if (!jobj)
> +   goto err;
> +   } else if (!dax) {
> +   unsigned int sector_size = 
> ndctl_namespace_get_sector_size(ndns);
> +
> +   /*
> +* The kernel will default to a 512 byte sector size on PMEM
> +* namespaces that don't explicitly have a sector size. This
> +* happens because they use pre-v1.2 labels or because they
> +* don't have a label space (devtype=nd_namespace_io).
> +*/
> +   if (!sector_size)
> +   sector_size = 512;
> +
> +   jobj = json_object_new_int(sector_size);
> +   if (!jobj)
> +   goto err;
> +   }
> +   if (jobj)
> +   json_object_object_add(jndns, "sector_size", jobj);
> +
> if (bdev && bdev[0]) {
> jobj = json_object_new_string(bdev);
> if (!jobj)
> --
> 2.14.3
>

Looks good to me, you can add:

Reviewed-by: Dan Williams 
___
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm


[ndctl PATCH v3 2/2] ndctl: add sector_size to 'ndctl list' output

2018-01-29 Thread Ross Zwisler
It used to be that the only PMEM namespaces with a variable sector size
were ones with a BTT, but that has changed.  sector_size still doesn't make
sense for device DAX since we don't have a block I/O path.

If we don't have a specified sector size, as happens with namespaces of
devtype nd_namespace_io and older v1.1 namespace labels, we will display
the default sector size of 512.

Signed-off-by: Ross Zwisler 
Reviewed-by: Dave Jiang 
---
 util/json.c | 29 -
 1 file changed, 24 insertions(+), 5 deletions(-)

diff --git a/util/json.c b/util/json.c
index 95beaa2..17d8f13 100644
--- a/util/json.c
+++ b/util/json.c
@@ -718,11 +718,6 @@ struct json_object *util_namespace_to_json(struct 
ndctl_namespace *ndns,
goto err;
json_object_object_add(jndns, "uuid", jobj);
 
-   jobj = json_object_new_int(ndctl_btt_get_sector_size(btt));
-   if (!jobj)
-   goto err;
-   json_object_object_add(jndns, "sector_size", jobj);
-
bdev = ndctl_btt_get_block_device(btt);
} else if (pfn) {
ndctl_pfn_get_uuid(pfn, uuid);
@@ -774,6 +769,30 @@ struct json_object *util_namespace_to_json(struct 
ndctl_namespace *ndns,
} else
bdev = ndctl_namespace_get_block_device(ndns);
 
+   jobj = NULL;
+   if (btt) {
+   jobj = json_object_new_int(ndctl_btt_get_sector_size(btt));
+   if (!jobj)
+   goto err;
+   } else if (!dax) {
+   unsigned int sector_size = 
ndctl_namespace_get_sector_size(ndns);
+
+   /*
+* The kernel will default to a 512 byte sector size on PMEM
+* namespaces that don't explicitly have a sector size. This
+* happens because they use pre-v1.2 labels or because they
+* don't have a label space (devtype=nd_namespace_io).
+*/
+   if (!sector_size)
+   sector_size = 512;
+
+   jobj = json_object_new_int(sector_size);
+   if (!jobj)
+   goto err;
+   }
+   if (jobj)
+   json_object_object_add(jndns, "sector_size", jobj);
+
if (bdev && bdev[0]) {
jobj = json_object_new_string(bdev);
if (!jobj)
-- 
2.14.3

___
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm