Commit 52ac23b2 authored by Dan Williams's avatar Dan Williams

libnvdimm, dax: reserve space to store labels for device-dax

We may want to subdivide a device-dax range into multiple devices so
that each can have separate permissions or naming.  Reserve 128K of
label space by default so we have the capability of making allocation
decisions persistent.  This reservation is not something we can add
later since it would result in the default size of a device-dax range
changing between kernel versions.
Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
parent cd03412a
...@@ -540,6 +540,7 @@ static struct vmem_altmap *__nvdimm_setup_pfn(struct nd_pfn *nd_pfn, ...@@ -540,6 +540,7 @@ static struct vmem_altmap *__nvdimm_setup_pfn(struct nd_pfn *nd_pfn,
static int nd_pfn_init(struct nd_pfn *nd_pfn) static int nd_pfn_init(struct nd_pfn *nd_pfn)
{ {
u32 dax_label_reserve = is_nd_dax(&nd_pfn->dev) ? SZ_128K : 0;
struct nd_namespace_common *ndns = nd_pfn->ndns; struct nd_namespace_common *ndns = nd_pfn->ndns;
u32 start_pad = 0, end_trunc = 0; u32 start_pad = 0, end_trunc = 0;
resource_size_t start, size; resource_size_t start, size;
...@@ -606,10 +607,11 @@ static int nd_pfn_init(struct nd_pfn *nd_pfn) ...@@ -606,10 +607,11 @@ static int nd_pfn_init(struct nd_pfn *nd_pfn)
size = resource_size(&nsio->res); size = resource_size(&nsio->res);
npfns = (size - start_pad - end_trunc - SZ_8K) / SZ_4K; npfns = (size - start_pad - end_trunc - SZ_8K) / SZ_4K;
if (nd_pfn->mode == PFN_MODE_PMEM) if (nd_pfn->mode == PFN_MODE_PMEM)
offset = ALIGN(start + SZ_8K + 64 * npfns, nd_pfn->align) offset = ALIGN(start + SZ_8K + 64 * npfns + dax_label_reserve,
- start; nd_pfn->align) - start;
else if (nd_pfn->mode == PFN_MODE_RAM) else if (nd_pfn->mode == PFN_MODE_RAM)
offset = ALIGN(start + SZ_8K, nd_pfn->align) - start; offset = ALIGN(start + SZ_8K + dax_label_reserve,
nd_pfn->align) - start;
else else
return -ENXIO; return -ENXIO;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment