diff options
author | Dan Williams <dan.j.williams@intel.com> | 2015-07-24 23:42:34 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2015-07-25 12:57:56 -0400 |
commit | 8ca243536d21ae2d08f61b1c5af4ac3d4bb697e4 (patch) | |
tree | 05d157736682a5121f26588a6f4254be1b4da2da | |
parent | 52721d9d3334c1cb1f76219a161084094ec634dc (diff) |
libnvdimm: fix namespace seed creation
A new BLK namespace "seed" device is created whenever the current seed
is successfully probed. However, if that namespace is assigned to a BTT
it may never directly experience a successful probe as it is a
subordinate device to a BTT configuration.
The effect of the current code is that no new namespaces can be
instantiated, after the seed namespace, to consume available BLK DPA
capacity. Fix this by treating a successful BTT probe event as a
successful probe event for the backing namespace.
Reported-by: Nicholas Moulin <nicholas.w.moulin@linux.intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
-rw-r--r-- | drivers/nvdimm/region_devs.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/nvdimm/region_devs.c b/drivers/nvdimm/region_devs.c index a5233422f9dc..7384455792bf 100644 --- a/drivers/nvdimm/region_devs.c +++ b/drivers/nvdimm/region_devs.c | |||
@@ -458,10 +458,15 @@ static void nd_region_notify_driver_action(struct nvdimm_bus *nvdimm_bus, | |||
458 | nvdimm_bus_unlock(dev); | 458 | nvdimm_bus_unlock(dev); |
459 | } | 459 | } |
460 | if (is_nd_btt(dev) && probe) { | 460 | if (is_nd_btt(dev) && probe) { |
461 | struct nd_btt *nd_btt = to_nd_btt(dev); | ||
462 | |||
461 | nd_region = to_nd_region(dev->parent); | 463 | nd_region = to_nd_region(dev->parent); |
462 | nvdimm_bus_lock(dev); | 464 | nvdimm_bus_lock(dev); |
463 | if (nd_region->btt_seed == dev) | 465 | if (nd_region->btt_seed == dev) |
464 | nd_region_create_btt_seed(nd_region); | 466 | nd_region_create_btt_seed(nd_region); |
467 | if (nd_region->ns_seed == &nd_btt->ndns->dev && | ||
468 | is_nd_blk(dev->parent)) | ||
469 | nd_region_create_blk_seed(nd_region); | ||
465 | nvdimm_bus_unlock(dev); | 470 | nvdimm_bus_unlock(dev); |
466 | } | 471 | } |
467 | } | 472 | } |