libnvdimm, label: add address abstraction identifiers
authorDan Williams <dan.j.williams@intel.com>
Sun, 4 Jun 2017 01:18:39 +0000 (10:18 +0900)
committerDan Williams <dan.j.williams@intel.com>
Thu, 15 Jun 2017 21:31:40 +0000 (14:31 -0700)
commitb3fde74ea195d2f9f49830a29f971a0aab4cd67a
tree57919bab5e02417c880eb7887bb6672c5ac07d3d
parent355d838878e1baec494c228458238d078dc3ca51
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>
drivers/nvdimm/btt_devs.c
drivers/nvdimm/claim.c
drivers/nvdimm/core.c
drivers/nvdimm/dax_devs.c
drivers/nvdimm/label.c
drivers/nvdimm/label.h
drivers/nvdimm/namespace_devs.c
drivers/nvdimm/nd.h
drivers/nvdimm/pfn_devs.c
include/linux/nd.h