[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC PATCH V2 04/11] hw/block/nvme: split setup and register for namespa
From: |
Minwoo Im |
Subject: |
[RFC PATCH V2 04/11] hw/block/nvme: split setup and register for namespace |
Date: |
Sun, 17 Jan 2021 23:53:34 +0900 |
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>
---
hw/block/nvme-ns.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/hw/block/nvme-ns.c b/hw/block/nvme-ns.c
index fc42ae184e01..3f0e4e461420 100644
--- a/hw/block/nvme-ns.c
+++ b/hw/block/nvme-ns.c
@@ -320,10 +320,6 @@ int nvme_ns_setup(NvmeCtrl *n, NvmeNamespace *ns, Error
**errp)
nvme_ns_init_zoned(ns, 0);
}
- if (nvme_register_namespace(n, ns, errp)) {
- return -1;
- }
-
return 0;
}
@@ -361,6 +357,13 @@ static void nvme_ns_realize(DeviceState *dev, Error **errp)
"could not setup namespace: ");
return;
}
+
+ if (nvme_register_namespace(n, ns, errp)) {
+ error_propagate_prepend(errp, local_err,
+ "could not register namespace: ");
+ return;
+ }
+
}
static Property nvme_ns_props[] = {
--
2.17.1
- [RFC PATCH V2 00/11] hw/block/nvme: support multi-path for ctrl/ns, Minwoo Im, 2021/01/17
- [RFC PATCH V2 01/11] hw/block/nvme: remove unused argument in nvme_ns_init_zoned, Minwoo Im, 2021/01/17
- [RFC PATCH V2 02/11] hw/block/nvme: open code for volatile write cache, Minwoo Im, 2021/01/17
- [RFC PATCH V2 03/11] hw/block/nvme: remove unused argument in nvme_ns_init_blk, Minwoo Im, 2021/01/17
- [RFC PATCH V2 04/11] hw/block/nvme: split setup and register for namespace,
Minwoo Im <=
- [RFC PATCH V2 05/11] hw/block/nvme: remove unused argument in nvme_ns_setup, Minwoo Im, 2021/01/17
- [RFC PATCH V2 06/11] hw/block/nvme: introduce nvme-subsys device, Minwoo Im, 2021/01/17
- [RFC PATCH V2 07/11] hw/block/nvme: support to map controller to a subsystem, Minwoo Im, 2021/01/17
- [RFC PATCH V2 08/11] hw/block/nvme: add CMIC enum value for Identify Controller, Minwoo Im, 2021/01/17
- [RFC PATCH V2 10/11] hw/block/nvme: add NMIC enum value for Identify Namespace, Minwoo Im, 2021/01/17
- [RFC PATCH V2 09/11] hw/block/nvme: support for multi-controller in subsystem, Minwoo Im, 2021/01/17