mirror of https://github.com/xemu-project/xemu.git
hw/nvme: reattach subsystem namespaces on hotplug
With commit5ffbaeed16
("hw/nvme: fix controller hot unplugging") namespaces get moved from the controller to the subsystem if one is specified. That keeps the namespaces alive after a controller hot-unplug, but after a controller hotplug we have to reconnect the namespaces from the subsystem to the controller. Fixes:5ffbaeed16
("hw/nvme: fix controller hot unplugging") Cc: Klaus Jensen <k.jensen@samsung.com> Reviewed-by: Keith Busch <kbusch@kernel.org> Signed-off-by: Hannes Reinecke <hare@suse.de> [k.jensen: only attach to shared and non-detached namespaces] Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
This commit is contained in:
parent
44a3aa0608
commit
9fc6e86e8b
|
@ -14,7 +14,7 @@
|
||||||
int nvme_subsys_register_ctrl(NvmeCtrl *n, Error **errp)
|
int nvme_subsys_register_ctrl(NvmeCtrl *n, Error **errp)
|
||||||
{
|
{
|
||||||
NvmeSubsystem *subsys = n->subsys;
|
NvmeSubsystem *subsys = n->subsys;
|
||||||
int cntlid;
|
int cntlid, nsid;
|
||||||
|
|
||||||
for (cntlid = 0; cntlid < ARRAY_SIZE(subsys->ctrls); cntlid++) {
|
for (cntlid = 0; cntlid < ARRAY_SIZE(subsys->ctrls); cntlid++) {
|
||||||
if (!subsys->ctrls[cntlid]) {
|
if (!subsys->ctrls[cntlid]) {
|
||||||
|
@ -29,12 +29,20 @@ int nvme_subsys_register_ctrl(NvmeCtrl *n, Error **errp)
|
||||||
|
|
||||||
subsys->ctrls[cntlid] = n;
|
subsys->ctrls[cntlid] = n;
|
||||||
|
|
||||||
|
for (nsid = 1; nsid < ARRAY_SIZE(subsys->namespaces); nsid++) {
|
||||||
|
NvmeNamespace *ns = subsys->namespaces[nsid];
|
||||||
|
if (ns && ns->params.shared && !ns->params.detached) {
|
||||||
|
nvme_attach_ns(n, ns);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return cntlid;
|
return cntlid;
|
||||||
}
|
}
|
||||||
|
|
||||||
void nvme_subsys_unregister_ctrl(NvmeSubsystem *subsys, NvmeCtrl *n)
|
void nvme_subsys_unregister_ctrl(NvmeSubsystem *subsys, NvmeCtrl *n)
|
||||||
{
|
{
|
||||||
subsys->ctrls[n->cntlid] = NULL;
|
subsys->ctrls[n->cntlid] = NULL;
|
||||||
|
n->cntlid = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void nvme_subsys_setup(NvmeSubsystem *subsys)
|
static void nvme_subsys_setup(NvmeSubsystem *subsys)
|
||||||
|
|
Loading…
Reference in New Issue