Message ID | 162854807792.1980150.8842369662740914960.stgit@dwillia2-desk3.amr.corp.intel.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | cxl_test: Enable CXL Topology and UAPI regression tests | expand |
On Mon, 9 Aug 2021 15:27:57 -0700 Dan Williams <dan.j.williams@intel.com> wrote: > In preparation to handle CXL labels with the same code that handles EFI > labels, add a specific interleave-set-cookie validation helper > rather than a getter since the CXL label type does not support this > concept. The answer for CXL labels will always be true. > > Signed-off-by: Dan Williams <dan.j.williams@intel.com> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> > --- > drivers/nvdimm/namespace_devs.c | 8 +++----- > drivers/nvdimm/nd.h | 7 +++++++ > 2 files changed, 10 insertions(+), 5 deletions(-) > > diff --git a/drivers/nvdimm/namespace_devs.c b/drivers/nvdimm/namespace_devs.c > index 94da804372bf..f33245c27cc4 100644 > --- a/drivers/nvdimm/namespace_devs.c > +++ b/drivers/nvdimm/namespace_devs.c > @@ -1847,15 +1847,13 @@ static bool has_uuid_at_pos(struct nd_region *nd_region, u8 *uuid, > list_for_each_entry(label_ent, &nd_mapping->labels, list) { > struct nd_namespace_label *nd_label = label_ent->label; > u16 position, nlabel; > - u64 isetcookie; > > if (!nd_label) > continue; > - isetcookie = nsl_get_isetcookie(ndd, nd_label); > position = nsl_get_position(ndd, nd_label); > nlabel = nsl_get_nlabel(ndd, nd_label); > > - if (isetcookie != cookie) > + if (!nsl_validate_isetcookie(ndd, nd_label, cookie)) > continue; > > if (memcmp(nd_label->uuid, uuid, NSLABEL_UUID_LEN) != 0) > @@ -1968,10 +1966,10 @@ static struct device *create_namespace_pmem(struct nd_region *nd_region, > return ERR_PTR(-ENXIO); > } > > - if (nsl_get_isetcookie(ndd, nd_label) != cookie) { > + if (!nsl_validate_isetcookie(ndd, nd_label, cookie)) { > dev_dbg(&nd_region->dev, "invalid cookie in label: %pUb\n", > nd_label->uuid); > - if (nsl_get_isetcookie(ndd, nd_label) != altcookie) > + if (!nsl_validate_isetcookie(ndd, nd_label, altcookie)) > return ERR_PTR(-EAGAIN); > > dev_dbg(&nd_region->dev, "valid altcookie in label: %pUb\n", > diff --git a/drivers/nvdimm/nd.h b/drivers/nvdimm/nd.h > index 61f43f0edabf..b3feaf3699f7 100644 > --- a/drivers/nvdimm/nd.h > +++ b/drivers/nvdimm/nd.h > @@ -83,6 +83,13 @@ static inline u64 nsl_get_isetcookie(struct nvdimm_drvdata *ndd, > return __le64_to_cpu(nd_label->isetcookie); > } > > +static inline bool nsl_validate_isetcookie(struct nvdimm_drvdata *ndd, > + struct nd_namespace_label *nd_label, > + u64 cookie) > +{ > + return cookie == __le64_to_cpu(nd_label->isetcookie); > +} > + > static inline u16 nsl_get_position(struct nvdimm_drvdata *ndd, > struct nd_namespace_label *nd_label) > { >
diff --git a/drivers/nvdimm/namespace_devs.c b/drivers/nvdimm/namespace_devs.c index 94da804372bf..f33245c27cc4 100644 --- a/drivers/nvdimm/namespace_devs.c +++ b/drivers/nvdimm/namespace_devs.c @@ -1847,15 +1847,13 @@ static bool has_uuid_at_pos(struct nd_region *nd_region, u8 *uuid, list_for_each_entry(label_ent, &nd_mapping->labels, list) { struct nd_namespace_label *nd_label = label_ent->label; u16 position, nlabel; - u64 isetcookie; if (!nd_label) continue; - isetcookie = nsl_get_isetcookie(ndd, nd_label); position = nsl_get_position(ndd, nd_label); nlabel = nsl_get_nlabel(ndd, nd_label); - if (isetcookie != cookie) + if (!nsl_validate_isetcookie(ndd, nd_label, cookie)) continue; if (memcmp(nd_label->uuid, uuid, NSLABEL_UUID_LEN) != 0) @@ -1968,10 +1966,10 @@ static struct device *create_namespace_pmem(struct nd_region *nd_region, return ERR_PTR(-ENXIO); } - if (nsl_get_isetcookie(ndd, nd_label) != cookie) { + if (!nsl_validate_isetcookie(ndd, nd_label, cookie)) { dev_dbg(&nd_region->dev, "invalid cookie in label: %pUb\n", nd_label->uuid); - if (nsl_get_isetcookie(ndd, nd_label) != altcookie) + if (!nsl_validate_isetcookie(ndd, nd_label, altcookie)) return ERR_PTR(-EAGAIN); dev_dbg(&nd_region->dev, "valid altcookie in label: %pUb\n", diff --git a/drivers/nvdimm/nd.h b/drivers/nvdimm/nd.h index 61f43f0edabf..b3feaf3699f7 100644 --- a/drivers/nvdimm/nd.h +++ b/drivers/nvdimm/nd.h @@ -83,6 +83,13 @@ static inline u64 nsl_get_isetcookie(struct nvdimm_drvdata *ndd, return __le64_to_cpu(nd_label->isetcookie); } +static inline bool nsl_validate_isetcookie(struct nvdimm_drvdata *ndd, + struct nd_namespace_label *nd_label, + u64 cookie) +{ + return cookie == __le64_to_cpu(nd_label->isetcookie); +} + static inline u16 nsl_get_position(struct nvdimm_drvdata *ndd, struct nd_namespace_label *nd_label) {
In preparation to handle CXL labels with the same code that handles EFI labels, add a specific interleave-set-cookie validation helper rather than a getter since the CXL label type does not support this concept. The answer for CXL labels will always be true. Signed-off-by: Dan Williams <dan.j.williams@intel.com> --- drivers/nvdimm/namespace_devs.c | 8 +++----- drivers/nvdimm/nd.h | 7 +++++++ 2 files changed, 10 insertions(+), 5 deletions(-)