Grab the latest definition of the pfn infoblock in preparation for
creating a write-infoblock command, and update read-infoblock parsing.

Signed-off-by: Dan Williams <[email protected]>
---
 ndctl/namespace.c |    2 ++
 ndctl/namespace.h |   12 +++++++++++-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/ndctl/namespace.c b/ndctl/namespace.c
index cfa0563f59a1..e38151430436 100644
--- a/ndctl/namespace.c
+++ b/ndctl/namespace.c
@@ -1612,6 +1612,8 @@ static json_object *pfn_parse(struct pfn_sb *pfn_sb, 
struct ndctl_namespace *ndn
        parse_hex(pfn_sb, start_pad, 32);
        parse_hex(pfn_sb, end_trunc, 32);
        parse_hex(pfn_sb, align, 32);
+       parse_hex(pfn_sb, page_size, 32);
+       parse_hex(pfn_sb, page_struct_size, 16);
 
        return jblock;
 err:
diff --git a/ndctl/namespace.h b/ndctl/namespace.h
index 861dfbfa5127..0f17df20ca3a 100644
--- a/ndctl/namespace.h
+++ b/ndctl/namespace.h
@@ -209,6 +209,12 @@ struct arena_map {
 #define PFN_SIG "NVDIMM_PFN_INFO\0"
 #define DAX_SIG "NVDIMM_DAX_INFO\0"
 
+enum pfn_mode {
+       PFN_MODE_NONE,
+       PFN_MODE_RAM,
+       PFN_MODE_PMEM,
+};
+
 struct pfn_sb {
        u8 signature[PFN_SIG_LEN];
        u8 uuid[16];
@@ -224,7 +230,11 @@ struct pfn_sb {
        le32 end_trunc;
        /* minor-version-2 record the base alignment of the mapping */
        le32 align;
-       u8 padding[4000];
+       /* minor-version-3 guarantee the padding and flags are zero */
+       /* minor-version-4 record the page size and struct page size */
+       le32 page_size;
+       le16 page_struct_size;
+       u8 padding[3994];
        le64 checksum;
 };
 
_______________________________________________
Linux-nvdimm mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to