nvme: disconnect ADMIN queue pair when destruct controller

We should disconnect ADMIN queue pair after shutdown
returned, or we may leak ADMIN socket resources after
free the controller data structure.

Fix issue #2289.

Change-Id: I956191fcd51cdcef5de2c3c7b15ffc70f22b040b
Signed-off-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11133
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Dong Yi <dongx.yi@intel.com>
Reviewed-by: <qun.wan@intel.com>
Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
This commit is contained in:
Changpeng Liu 2022-01-18 15:40:54 +08:00 committed by Tomasz Zawadzki
parent 9cf27937df
commit 80c88ab355

View File

@ -4181,6 +4181,8 @@ nvme_ctrlr_destruct_poll_async(struct spdk_nvme_ctrlr *ctrlr,
ctx->cb_fn(ctrlr);
}
nvme_transport_ctrlr_disconnect_qpair(ctrlr, ctrlr->adminq);
RB_FOREACH_SAFE(ns, nvme_ns_tree, &ctrlr->ns, tmp_ns) {
nvme_ctrlr_destruct_namespace(ctrlr, ns->id);
RB_REMOVE(nvme_ns_tree, &ctrlr->ns, ns);