libnvdimm, namespace: do not delete namespace-id 0
authorDan Williams <dan.j.williams@intel.com>
Tue, 24 Jan 2017 19:24:07 +0000 (00:54 +0530)
committerDan Williams <dan.j.williams@intel.com>
Wed, 1 Feb 2017 02:18:21 +0000 (18:18 -0800)
commit9d032f4201d39e5cf43a8709a047e481f5723fdc
tree05ce238b174f3fa8f56d0310a6b0a866c986d1b3
parent970d14e3989160ee9e97c7d75ecbc893fd29dab9
libnvdimm, namespace: do not delete namespace-id 0

Given that the naming of pmem devices changes from the pmemX form to the
pmemX.Y form when namespace id is greater than 0, arrange for namespaces
with id-0 to be exempt from deletion. Otherwise a simple reconfiguration
of an existing namespace to a new mode results in a name change of the
resulting block device:

    # ndctl list --namespace=namespace1.0
    {
      "dev":"namespace1.0",
      "mode":"raw",
      "size":2147483648,
      "uuid":"3dadf3dc-89b9-4b24-b20e-abc8a4707ce3",
      "blockdev":"pmem1"
    }

    # ndctl create-namespace --reconfig=namespace1.0 --mode=memory --force
    {
      "dev":"namespace1.1",
      "mode":"memory",
      "size":2111832064,
      "uuid":"7b4a6341-7318-4219-a02c-fb57c0bbf613",
      "blockdev":"pmem1.1"
    }

This change does require tooling changes to explicitly look for
namespaceX.0 if the seed has already advanced to another namespace.

Cc: <stable@vger.kernel.org>
Fixes: 98a29c39dc68 ("libnvdimm, namespace: allow creation of multiple pmem-namespaces per region")
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/nvdimm/namespace_devs.c