libnvdimm: Use max contiguous area for namespace size
authorKeith Busch <keith.busch@intel.com>
Tue, 24 Jul 2018 21:07:57 +0000 (15:07 -0600)
committerDave Jiang <dave.jiang@intel.com>
Wed, 25 Jul 2018 21:11:09 +0000 (14:11 -0700)
commit12e3129e29b406c41bc89231092a20d79dbf802c
treed774b3a77f6b9f457ae974847d55831172b1fb0f
parent06cb081a92e4b66c1ad3bf8d7b5830378e857eda
libnvdimm: Use max contiguous area for namespace size

This patch will find the max contiguous area to determine the largest
pmem namespace size that can be created. If the requested size exceeds
the largest available, ENOSPC error will be returned.

This fixes the allocation underrun error and wrong error return code
that have otherwise been observed as the following kernel warning:

  WARNING: CPU: <CPU> PID: <PID> at drivers/nvdimm/namespace_devs.c:913 size_store

Fixes: a1f3e4d6a0c3 ("libnvdimm, region: update nd_region_available_dpa() for multi-pmem support")
Cc: <stable@vger.kernel.org>
Signed-off-by: Keith Busch <keith.busch@intel.com>
Reviewed-by: Vishal Verma <vishal.l.verma@intel.com>
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
drivers/nvdimm/dimm_devs.c
drivers/nvdimm/namespace_devs.c
drivers/nvdimm/nd-core.h
drivers/nvdimm/region_devs.c