]> git.proxmox.com Git - mirror_qemu.git/commitdiff
hw/nvme: unregister controller with subsystem at exit
authorKlaus Jensen <k.jensen@samsung.com>
Tue, 6 Jul 2021 08:51:36 +0000 (10:51 +0200)
committerKlaus Jensen <k.jensen@samsung.com>
Mon, 26 Jul 2021 19:09:38 +0000 (21:09 +0200)
Make sure the controller is unregistered from the subsystem when device
is removed.

Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
hw/nvme/ctrl.c
hw/nvme/nvme.h
hw/nvme/subsys.c

index dd18015100327668582bed0215d20636bba22155..90e3ee2b70ee5f669d64870eb590f6683ac3b950 100644 (file)
@@ -6523,6 +6523,10 @@ static void nvme_exit(PCIDevice *pci_dev)
         nvme_ns_cleanup(ns);
     }
 
+    if (n->subsys) {
+        nvme_subsys_unregister_ctrl(n->subsys, n);
+    }
+
     g_free(n->cq);
     g_free(n->sq);
     g_free(n->aer_reqs);
index 0868359a1e86ba86928422f9392c071752e80929..c4065467d877fc2507135dd63f20938376a062e2 100644 (file)
@@ -50,6 +50,7 @@ typedef struct NvmeSubsystem {
 } NvmeSubsystem;
 
 int nvme_subsys_register_ctrl(NvmeCtrl *n, Error **errp);
+void nvme_subsys_unregister_ctrl(NvmeSubsystem *subsys, NvmeCtrl *n);
 
 static inline NvmeCtrl *nvme_subsys_ctrl(NvmeSubsystem *subsys,
                                          uint32_t cntlid)
index dc7a96862f3753b359e1f30c9d62ba7d6c3d79aa..92caa604a2806bfa1d4612563034d5bca6a10ec6 100644 (file)
@@ -32,6 +32,11 @@ int nvme_subsys_register_ctrl(NvmeCtrl *n, Error **errp)
     return cntlid;
 }
 
+void nvme_subsys_unregister_ctrl(NvmeSubsystem *subsys, NvmeCtrl *n)
+{
+    subsys->ctrls[n->cntlid] = NULL;
+}
+
 static void nvme_subsys_setup(NvmeSubsystem *subsys)
 {
     const char *nqn = subsys->params.nqn ?