libnvdimm/label: Add a helper for nlabel validation
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. Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Link: https://lore.kernel.org/r/163116430293.2460985.12693942353621355232.stgit@dwillia2-desk3.amr.corp.intel.com Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
parent
d1c6e08e75
commit
8172db9252
@ -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;
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user