hw/block/nvme: split setup and register for namespace

In NVMe, namespace is being attached to process I/O.  We register NVMe
namespace to a controller via nvme_register_namespace() during
nvme_ns_setup().  This is main reason of receiving NvmeCtrl object
instance to this function to map the namespace to a controller.

To make namespace instance more independent, it should be split into two
parts: setup and register.  This patch split them into two differnt
parts, and finally nvme_ns_setup() does not have nothing to do with
NvmeCtrl instance at all.

This patch is a former patch to introduce NVMe subsystem scheme to the
existing design especially for multi-path.  In that case, it should be
split into two to make namespace independent from a controller.

Signed-off-by: Minwoo Im <minwoo.im.dev@gmail.com>
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
This commit is contained in:
Minwoo Im 2021-01-17 23:53:34 +09:00 committed by Klaus Jensen
parent 337ccd7650
commit 15d024d4aa

View File

@ -321,10 +321,6 @@ int nvme_ns_setup(NvmeCtrl *n, NvmeNamespace *ns, Error **errp)
nvme_ns_init_zoned(ns, 0); nvme_ns_init_zoned(ns, 0);
} }
if (nvme_register_namespace(n, ns, errp)) {
return -1;
}
return 0; return 0;
} }
@ -362,6 +358,13 @@ static void nvme_ns_realize(DeviceState *dev, Error **errp)
"could not setup namespace: "); "could not setup namespace: ");
return; return;
} }
if (nvme_register_namespace(n, ns, errp)) {
error_propagate_prepend(errp, local_err,
"could not register namespace: ");
return;
}
} }
static Property nvme_ns_props[] = { static Property nvme_ns_props[] = {