linux-nvdimm.lists.01.org archive mirror
 help / color / mirror / Atom feed
* [PATCH ndctl] namespace-action: Don't act on any seed namespaces
@ 2020-07-05  4:15 Santosh Sivaraj
  2020-07-06  9:29 ` Harish
  0 siblings, 1 reply; 2+ messages in thread
From: Santosh Sivaraj @ 2020-07-05  4:15 UTC (permalink / raw)
  To: linux-nvdimm, Dan Williams, Vishal Verma; +Cc: Aneesh Kumar K.V, harish

Catch seed namespaces early on. This will prevent checking for sizes in enable,
disable and destroy namespace code path, which in turn prevents the inconsistent
reporting in count of enabled/disabled namespaces.

Signed-off-by: Santosh Sivaraj <santosh@fossix.org>
---
 ndctl/lib/libndctl.c |  5 -----
 ndctl/namespace.c    | 14 ++------------
 2 files changed, 2 insertions(+), 17 deletions(-)

diff --git a/ndctl/lib/libndctl.c b/ndctl/lib/libndctl.c
index ee737cb..d0599f7 100644
--- a/ndctl/lib/libndctl.c
+++ b/ndctl/lib/libndctl.c
@@ -4130,16 +4130,11 @@ NDCTL_EXPORT int ndctl_namespace_enable(struct ndctl_namespace *ndns)
 	const char *devname = ndctl_namespace_get_devname(ndns);
 	struct ndctl_ctx *ctx = ndctl_namespace_get_ctx(ndns);
 	struct ndctl_region *region = ndns->region;
-	unsigned long long size = ndctl_namespace_get_size(ndns);
 	int rc;
 
 	if (ndctl_namespace_is_enabled(ndns))
 		return 0;
 
-	/* Don't try to enable idle namespace (no capacity allocated) */
-	if (size == 0)
-		return -ENXIO;
-
 	rc = ndctl_bind(ctx, ndns->module, devname);
 
 	/*
diff --git a/ndctl/namespace.c b/ndctl/namespace.c
index 0550580..5a086d0 100644
--- a/ndctl/namespace.c
+++ b/ndctl/namespace.c
@@ -1102,7 +1102,6 @@ static int namespace_destroy(struct ndctl_region *region,
 		struct ndctl_namespace *ndns)
 {
 	const char *devname = ndctl_namespace_get_devname(ndns);
-	unsigned long long size;
 	bool did_zero = false;
 	int rc;
 
@@ -1147,19 +1146,9 @@ static int namespace_destroy(struct ndctl_region *region,
 		goto out;
 	}
 
-	size = ndctl_namespace_get_size(ndns);
-
 	rc = ndctl_namespace_delete(ndns);
 	if (rc)
 		debug("%s: failed to reclaim\n", devname);
-
-	/*
-	 * Don't report a destroyed namespace when no capacity was
-	 * allocated.
-	 */
-	if (size == 0 && rc == 0)
-		rc = 1;
-
 out:
 	return rc;
 }
@@ -2128,8 +2117,9 @@ 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
+				if ((strcmp(namespace, "all") != 0
 						&& strcmp(namespace, ndns_name) != 0)
+				    || ndctl_namespace_get_size(ndns) == 0)
 					continue;
 				switch (action) {
 				case ACTION_DISABLE:
-- 
2.26.2
_______________________________________________
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-leave@lists.01.org

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH ndctl] namespace-action: Don't act on any seed namespaces
  2020-07-05  4:15 [PATCH ndctl] namespace-action: Don't act on any seed namespaces Santosh Sivaraj
@ 2020-07-06  9:29 ` Harish
  0 siblings, 0 replies; 2+ messages in thread
From: Harish @ 2020-07-06  9:29 UTC (permalink / raw)
  To: Santosh Sivaraj, linux-nvdimm, Dan Williams, Vishal Verma
  Cc: Aneesh Kumar K.V

Tested-by: Harish <harish@linux.ibm.com>

- Harish

On 7/5/20 9:45 AM, Santosh Sivaraj wrote:
> Catch seed namespaces early on. This will prevent checking for sizes in enable,
> disable and destroy namespace code path, which in turn prevents the inconsistent
> reporting in count of enabled/disabled namespaces.
>
> Signed-off-by: Santosh Sivaraj <santosh@fossix.org>
> ---
>   ndctl/lib/libndctl.c |  5 -----
>   ndctl/namespace.c    | 14 ++------------
>   2 files changed, 2 insertions(+), 17 deletions(-)
>
> diff --git a/ndctl/lib/libndctl.c b/ndctl/lib/libndctl.c
> index ee737cb..d0599f7 100644
> --- a/ndctl/lib/libndctl.c
> +++ b/ndctl/lib/libndctl.c
> @@ -4130,16 +4130,11 @@ NDCTL_EXPORT int ndctl_namespace_enable(struct ndctl_namespace *ndns)
>   	const char *devname = ndctl_namespace_get_devname(ndns);
>   	struct ndctl_ctx *ctx = ndctl_namespace_get_ctx(ndns);
>   	struct ndctl_region *region = ndns->region;
> -	unsigned long long size = ndctl_namespace_get_size(ndns);
>   	int rc;
>   
>   	if (ndctl_namespace_is_enabled(ndns))
>   		return 0;
>   
> -	/* Don't try to enable idle namespace (no capacity allocated) */
> -	if (size == 0)
> -		return -ENXIO;
> -
>   	rc = ndctl_bind(ctx, ndns->module, devname);
>   
>   	/*
> diff --git a/ndctl/namespace.c b/ndctl/namespace.c
> index 0550580..5a086d0 100644
> --- a/ndctl/namespace.c
> +++ b/ndctl/namespace.c
> @@ -1102,7 +1102,6 @@ static int namespace_destroy(struct ndctl_region *region,
>   		struct ndctl_namespace *ndns)
>   {
>   	const char *devname = ndctl_namespace_get_devname(ndns);
> -	unsigned long long size;
>   	bool did_zero = false;
>   	int rc;
>   
> @@ -1147,19 +1146,9 @@ static int namespace_destroy(struct ndctl_region *region,
>   		goto out;
>   	}
>   
> -	size = ndctl_namespace_get_size(ndns);
> -
>   	rc = ndctl_namespace_delete(ndns);
>   	if (rc)
>   		debug("%s: failed to reclaim\n", devname);
> -
> -	/*
> -	 * Don't report a destroyed namespace when no capacity was
> -	 * allocated.
> -	 */
> -	if (size == 0 && rc == 0)
> -		rc = 1;
> -
>   out:
>   	return rc;
>   }
> @@ -2128,8 +2117,9 @@ 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
> +				if ((strcmp(namespace, "all") != 0
>   						&& strcmp(namespace, ndns_name) != 0)
> +				    || ndctl_namespace_get_size(ndns) == 0)
>   					continue;
>   				switch (action) {
>   				case ACTION_DISABLE:
_______________________________________________
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-leave@lists.01.org

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-07-06  9:29 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-05  4:15 [PATCH ndctl] namespace-action: Don't act on any seed namespaces Santosh Sivaraj
2020-07-06  9:29 ` Harish

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).