mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-24 05:01:03 +02:00
libnvdimm, label: add address abstraction identifiers
Starting with v1.2 labels, 'address abstractions' can be hinted via an address abstraction id that implies an info-block format. The standard address abstraction in the specification is the v2 format of the Block-Translation-Table (BTT). Support for that is saved for a later patch, for now we add support for the Linux supported address abstractions BTT (v1), PFN, and DAX. The new 'holder_class' attribute for namespace devices is added for tooling to specify the 'abstraction_guid' to store in the namespace label. For v1.1 labels this field is undefined and any setting of 'holder_class' away from the default 'none' value will only have effect until the driver is unloaded. Setting 'holder_class' requires that whatever device tries to claim the namespace must be of the specified class. Cc: Vishal Verma <vishal.l.verma@intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
@@ -21,6 +21,14 @@ enum nvdimm_event {
|
||||
NVDIMM_REVALIDATE_POISON,
|
||||
};
|
||||
|
||||
enum nvdimm_claim_class {
|
||||
NVDIMM_CCLASS_NONE,
|
||||
NVDIMM_CCLASS_BTT,
|
||||
NVDIMM_CCLASS_PFN,
|
||||
NVDIMM_CCLASS_DAX,
|
||||
NVDIMM_CCLASS_UNKNOWN,
|
||||
};
|
||||
|
||||
struct nd_device_driver {
|
||||
struct device_driver drv;
|
||||
unsigned long type;
|
||||
@@ -41,12 +49,14 @@ static inline struct nd_device_driver *to_nd_device_driver(
|
||||
* @force_raw: ignore other personalities for the namespace (e.g. btt)
|
||||
* @dev: device model node
|
||||
* @claim: when set a another personality has taken ownership of the namespace
|
||||
* @claim_class: restrict claim type to a given class
|
||||
* @rw_bytes: access the raw namespace capacity with byte-aligned transfers
|
||||
*/
|
||||
struct nd_namespace_common {
|
||||
int force_raw;
|
||||
struct device dev;
|
||||
struct device *claim;
|
||||
enum nvdimm_claim_class claim_class;
|
||||
int (*rw_bytes)(struct nd_namespace_common *, resource_size_t offset,
|
||||
void *buf, size_t size, int rw, unsigned long flags);
|
||||
};
|
||||
|
Reference in New Issue
Block a user