libnvdimm: namespace indices: read and validate
authorDan Williams <dan.j.williams@intel.com>
Tue, 9 Jun 2015 20:09:36 +0000 (16:09 -0400)
committerDan Williams <dan.j.williams@intel.com>
Thu, 25 Jun 2015 01:24:10 +0000 (21:24 -0400)
commit4a826c83db4edc040da3a66dbefd53f0cfcf457d
treeff26d9df31e46d3f7d8ff12fa288982460beacc3
parenteaf961536e1622ad21247ac8d44acd48ba65566e
libnvdimm: namespace indices: read and validate

This on media label format [1] consists of two index blocks followed by
an array of labels.  None of these structures are ever updated in place.
A sequence number tracks the current active index and the next one to
write, while labels are written to free slots.

    +------------+
    |            |
    |  nsindex0  |
    |            |
    +------------+
    |            |
    |  nsindex1  |
    |            |
    +------------+
    |   label0   |
    +------------+
    |   label1   |
    +------------+
    |            |
     ....nslot...
    |            |
    +------------+
    |   labelN   |
    +------------+

After reading valid labels, store the dpa ranges they claim into
per-dimm resource trees.

[1]: http://pmem.io/documents/NVDIMM_Namespace_Spec.pdf

Cc: Neil Brown <neilb@suse.de>
Acked-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/nvdimm/Makefile
drivers/nvdimm/dimm.c
drivers/nvdimm/dimm_devs.c
drivers/nvdimm/label.c [new file with mode: 0644]
drivers/nvdimm/label.h [new file with mode: 0644]
drivers/nvdimm/nd.h
include/uapi/linux/ndctl.h