diff options
author | Dan Williams <dan.j.williams@intel.com> | 2017-06-03 18:30:43 +0900 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2017-06-15 14:31:39 -0700 |
commit | 564e871aa66f548a947b23808d3140f326381f0c (patch) | |
tree | b1c2b0c45f296df59d1924847d97f86add22d7c1 /drivers/nvdimm/label.h | |
parent | 87085ff2e90ecfa91f8bb0cb0ce19ea661bd6f83 (diff) | |
download | linux-564e871aa66f548a947b23808d3140f326381f0c.tar.gz linux-564e871aa66f548a947b23808d3140f326381f0c.tar.bz2 linux-564e871aa66f548a947b23808d3140f326381f0c.zip |
libnvdimm, label: add v1.2 nvdimm label definitions
In support of improved interoperability between operating systems and pre-boot
environments the Intel proposed NVDIMM Namespace Specification [1], has been
adopted and modified to the the UEFI 2.7 NVDIMM Label Protocol [2].
Update the definitions of the namespace label data structures so that the new
format can be supported alongside the existing label format.
The new specification changes the default label size to 256 bytes, so
everywhere that relied on sizeof(struct nd_namespace_label) must now use the
sizeof_namespace_label() helper.
There should be no functional differences from these changes as the
default is still the v1.1 128-byte format. Future patches will move the
default to the v1.2 definition.
[1]: http://pmem.io/documents/NVDIMM_Namespace_Spec.pdf
[2]: http://www.uefi.org/sites/default/files/resources/UEFI_Spec_2_7.pdf
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/nvdimm/label.h')
-rw-r--r-- | drivers/nvdimm/label.h | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/drivers/nvdimm/label.h b/drivers/nvdimm/label.h index a59ef6eef2a3..f39bfb31f72f 100644 --- a/drivers/nvdimm/label.h +++ b/drivers/nvdimm/label.h @@ -15,6 +15,7 @@ #include <linux/ndctl.h> #include <linux/sizes.h> +#include <linux/uuid.h> #include <linux/io.h> enum { @@ -60,7 +61,8 @@ static const char NSINDEX_SIGNATURE[] = "NAMESPACE_INDEX\0"; */ struct nd_namespace_index { u8 sig[NSINDEX_SIG_LEN]; - __le32 flags; + u8 flags[3]; + u8 labelsize; __le32 seq; __le64 myoff; __le64 mysize; @@ -98,7 +100,16 @@ struct nd_namespace_label { __le64 dpa; __le64 rawsize; __le32 slot; - __le32 unused; + /* + * Accessing fields past this point should be gated by a + * namespace_label_has() check. + */ + u8 align; + u8 reserved[3]; + guid_t type_guid; + guid_t abstraction_guid; + u8 reserved2[88]; + __le64 checksum; }; /** |