diff --git a/lib/nvme/nvme_ctrlr.c b/lib/nvme/nvme_ctrlr.c index 69ae08783..df94396db 100644 --- a/lib/nvme/nvme_ctrlr.c +++ b/lib/nvme/nvme_ctrlr.c @@ -1650,6 +1650,10 @@ nvme_ctrlr_remove_process(struct spdk_nvme_ctrlr *ctrlr, TAILQ_REMOVE(&ctrlr->active_procs, proc, tailq); + if (!proc->is_primary && ctrlr->trid.trtype == SPDK_NVME_TRANSPORT_PCIE) { + spdk_pci_device_detach(proc->devhandle); + } + spdk_dma_free(proc); } diff --git a/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c b/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c index db7469ff0..26f98e01b 100644 --- a/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c +++ b/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c @@ -421,6 +421,11 @@ nvme_ns_construct(struct spdk_nvme_ns *ns, uint32_t id, return 0; } +void +spdk_pci_device_detach(struct spdk_pci_device *device) +{ +} + #define DECLARE_AND_CONSTRUCT_CTRLR() \ struct spdk_nvme_ctrlr ctrlr = {}; \ struct spdk_nvme_qpair adminq = {}; \