diff mbox series

[v3,11/28] libnvdimm/label: Add a helper for nlabel validation

Message ID 162982118423.1124374.11980785134458815600.stgit@dwillia2-desk3.amr.corp.intel.com
State Superseded
Commit 96b7220062c8a05b89ddff87ef8e042b977d64b4
Headers show
Series cxl_test: Enable CXL Topology and UAPI regression tests | expand

Commit Message

Dan Williams Aug. 24, 2021, 4:06 p.m. UTC
In the CXL namespace label there is no need for nlabel since that is
inferred from the region. Add a helper that moves nsl_get_label() behind
a helper that validates the number of labels relative to the region.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
---
 drivers/nvdimm/namespace_devs.c |    5 ++---
 drivers/nvdimm/nd.h             |    7 +++++++
 2 files changed, 9 insertions(+), 3 deletions(-)

Comments

Jonathan Cameron Sept. 2, 2021, 4:37 p.m. UTC | #1
On Tue, 24 Aug 2021 09:06:24 -0700
Dan Williams <dan.j.williams@intel.com> wrote:

> In the CXL namespace label there is no need for nlabel since that is
> inferred from the region. Add a helper that moves nsl_get_label() behind
> a helper that validates the number of labels relative to the region.
> 
> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Looks a bit pointless here but makes sense by patch 14.

Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

> ---
>  drivers/nvdimm/namespace_devs.c |    5 ++---
>  drivers/nvdimm/nd.h             |    7 +++++++
>  2 files changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/nvdimm/namespace_devs.c b/drivers/nvdimm/namespace_devs.c
> index d4959981c7d4..28ed14052e36 100644
> --- a/drivers/nvdimm/namespace_devs.c
> +++ b/drivers/nvdimm/namespace_devs.c
> @@ -1848,12 +1848,11 @@ static bool has_uuid_at_pos(struct nd_region *nd_region, const uuid_t *uuid,
>  
>  		list_for_each_entry(label_ent, &nd_mapping->labels, list) {
>  			struct nd_namespace_label *nd_label = label_ent->label;
> -			u16 position, nlabel;
> +			u16 position;
>  
>  			if (!nd_label)
>  				continue;
>  			position = nsl_get_position(ndd, nd_label);
> -			nlabel = nsl_get_nlabel(ndd, nd_label);
>  
>  			if (!nsl_validate_isetcookie(ndd, nd_label, cookie))
>  				continue;
> @@ -1870,7 +1869,7 @@ static bool has_uuid_at_pos(struct nd_region *nd_region, const uuid_t *uuid,
>  				return false;
>  			}
>  			found_uuid = true;
> -			if (nlabel != nd_region->ndr_mappings)
> +			if (!nsl_validate_nlabel(nd_region, ndd, nd_label))
>  				continue;
>  			if (position != pos)
>  				continue;
> diff --git a/drivers/nvdimm/nd.h b/drivers/nvdimm/nd.h
> index ec3c9aad7f50..036638bdb7e3 100644
> --- a/drivers/nvdimm/nd.h
> +++ b/drivers/nvdimm/nd.h
> @@ -342,6 +342,13 @@ struct nd_region {
>  	struct nd_mapping mapping[];
>  };
>  
> +static inline bool nsl_validate_nlabel(struct nd_region *nd_region,
> +				       struct nvdimm_drvdata *ndd,
> +				       struct nd_namespace_label *nd_label)
> +{
> +	return nsl_get_nlabel(ndd, nd_label) == nd_region->ndr_mappings;
> +}
> +
>  struct nd_blk_region {
>  	int (*enable)(struct nvdimm_bus *nvdimm_bus, struct device *dev);
>  	int (*do_io)(struct nd_blk_region *ndbr, resource_size_t dpa,
>
diff mbox series

Patch

diff --git a/drivers/nvdimm/namespace_devs.c b/drivers/nvdimm/namespace_devs.c
index d4959981c7d4..28ed14052e36 100644
--- a/drivers/nvdimm/namespace_devs.c
+++ b/drivers/nvdimm/namespace_devs.c
@@ -1848,12 +1848,11 @@  static bool has_uuid_at_pos(struct nd_region *nd_region, const uuid_t *uuid,
 
 		list_for_each_entry(label_ent, &nd_mapping->labels, list) {
 			struct nd_namespace_label *nd_label = label_ent->label;
-			u16 position, nlabel;
+			u16 position;
 
 			if (!nd_label)
 				continue;
 			position = nsl_get_position(ndd, nd_label);
-			nlabel = nsl_get_nlabel(ndd, nd_label);
 
 			if (!nsl_validate_isetcookie(ndd, nd_label, cookie))
 				continue;
@@ -1870,7 +1869,7 @@  static bool has_uuid_at_pos(struct nd_region *nd_region, const uuid_t *uuid,
 				return false;
 			}
 			found_uuid = true;
-			if (nlabel != nd_region->ndr_mappings)
+			if (!nsl_validate_nlabel(nd_region, ndd, nd_label))
 				continue;
 			if (position != pos)
 				continue;
diff --git a/drivers/nvdimm/nd.h b/drivers/nvdimm/nd.h
index ec3c9aad7f50..036638bdb7e3 100644
--- a/drivers/nvdimm/nd.h
+++ b/drivers/nvdimm/nd.h
@@ -342,6 +342,13 @@  struct nd_region {
 	struct nd_mapping mapping[];
 };
 
+static inline bool nsl_validate_nlabel(struct nd_region *nd_region,
+				       struct nvdimm_drvdata *ndd,
+				       struct nd_namespace_label *nd_label)
+{
+	return nsl_get_nlabel(ndd, nd_label) == nd_region->ndr_mappings;
+}
+
 struct nd_blk_region {
 	int (*enable)(struct nvdimm_bus *nvdimm_bus, struct device *dev);
 	int (*do_io)(struct nd_blk_region *ndbr, resource_size_t dpa,