Michal Suchanek <[email protected]> writes:

> Hello,
>
> this is a fix for github issue #41. I tested on system with vpmem with
> ndctl 64.1 that the issue is fixed. master builds with the fix applied.
>
> 8<-------------------------------------------------------------------->8
>
> The kernel always creates zero length namespace with uuid 0 in each
> region.
>
> When processing all namespaces the user gets confusing errors from ndctl
> trying to process this namespace. Skip it.
>
> The user can still specify the namespace by name directly in case
> processing it is desirable.
>
> Fixes: #41
>
> Signed-off-by: Michal Suchanek <[email protected]>
> ---
>  ndctl/namespace.c | 16 +++++++++++++---
>  1 file changed, 13 insertions(+), 3 deletions(-)

Reviewed-by: Santosh S <[email protected]>

Tested on a vpmem system with master branch, and I can see the issue got fixed.

# ./ndctl/ndctl enable-namespace all
error enabling namespaces: No such device or address
enabled 24 namespaces

After this patch

# ./ndctl/ndctl enable-namespace all 
enabled 24 namespaces

Thanks,
Santosh

>
> diff --git a/ndctl/namespace.c b/ndctl/namespace.c
> index 0550580707e8..6f4a4b5b8883 100644
> --- a/ndctl/namespace.c
> +++ b/ndctl/namespace.c
> @@ -2128,9 +2128,19 @@ static int do_xaction_namespace(const char *namespace,
>                       ndctl_namespace_foreach_safe(region, ndns, _n) {
>                               ndns_name = ndctl_namespace_get_devname(ndns);
>  
> -                             if (strcmp(namespace, "all") != 0
> -                                             && strcmp(namespace, ndns_name) 
> != 0)
> -                                     continue;
> +                             if (strcmp(namespace, "all") == 0) {
> +                                     static const uuid_t zero_uuid;
> +                                     uuid_t uuid;
> +
> +                                     ndctl_namespace_get_uuid(ndns, uuid);
> +                                     if (!ndctl_namespace_get_size(ndns) &&
> +                                         !memcmp(uuid, zero_uuid, 
> sizeof(uuid_t)))
> +                                             continue;
> +                             } else {
> +                                     if (strcmp(namespace, ndns_name) != 0)
> +                                             continue;
> +                             }
> +
>                               switch (action) {
>                               case ACTION_DISABLE:
>                                       rc = ndctl_namespace_disable_safe(ndns);
> -- 
> 2.23.0
_______________________________________________
Linux-nvdimm mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to