mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 16:54:21 +00:00 
			
		
		
		
	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
					
				
					 2 changed files with 9 additions and 3 deletions
				
			
		|  | @ -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…
	
	Add table
		
		Reference in a new issue
	
	 Dan Williams
						Dan Williams