diff options
author | Dan Williams <dan.j.williams@intel.com> | 2017-06-04 03:18:39 +0200 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2017-06-15 23:31:40 +0200 |
commit | b3fde74ea195d2f9f49830a29f971a0aab4cd67a (patch) | |
tree | 57919bab5e02417c880eb7887bb6672c5ac07d3d /drivers/nvdimm/dax_devs.c | |
parent | libnvdimm, label: add v1.2 label checksum support (diff) | |
download | linux-b3fde74ea195d2f9f49830a29f971a0aab4cd67a.tar.xz linux-b3fde74ea195d2f9f49830a29f971a0aab4cd67a.zip |
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>
Diffstat (limited to 'drivers/nvdimm/dax_devs.c')
-rw-r--r-- | drivers/nvdimm/dax_devs.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/nvdimm/dax_devs.c b/drivers/nvdimm/dax_devs.c index c1b6556aea6e..59f676381ae5 100644 --- a/drivers/nvdimm/dax_devs.c +++ b/drivers/nvdimm/dax_devs.c @@ -111,6 +111,14 @@ int nd_dax_probe(struct device *dev, struct nd_namespace_common *ndns) if (ndns->force_raw) return -ENODEV; + switch (ndns->claim_class) { + case NVDIMM_CCLASS_NONE: + case NVDIMM_CCLASS_DAX: + break; + default: + return -ENODEV; + } + nvdimm_bus_lock(&ndns->dev); nd_dax = nd_dax_alloc(nd_region); nd_pfn = &nd_dax->nd_pfn; |