nvmf/vfio-user: free controller if no connected qpair
The VM may already delete all queue pairs and just leave the socket when killing VM, so we can check number of connected queue pairs here, if no connected queue pairs, free the controller immediately. It's an optimization so that we don't need to loop all queue pairs below. Change-Id: Ia1be868ce2c74ce6953b1f44a81b51d605e642f0 Signed-off-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/7625 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: <dongx.yi@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Community-CI: Mellanox Build Bot
This commit is contained in:
parent
7cb301c042
commit
684410026b
@ -2203,6 +2203,14 @@ vfio_user_destroy_ctrlr(struct nvmf_vfio_user_ctrlr *ctrlr)
|
||||
endpoint = ctrlr->endpoint;
|
||||
assert(endpoint != NULL);
|
||||
|
||||
pthread_mutex_lock(&endpoint->lock);
|
||||
if (ctrlr->num_connected_qps == 0) {
|
||||
free_ctrlr(ctrlr);
|
||||
pthread_mutex_unlock(&endpoint->lock);
|
||||
return 0;
|
||||
}
|
||||
pthread_mutex_unlock(&endpoint->lock);
|
||||
|
||||
for (i = 0; i < NVMF_VFIO_USER_DEFAULT_MAX_QPAIRS_PER_CTRLR; i++) {
|
||||
qpair = ctrlr->qp[i];
|
||||
if (qpair == NULL) {
|
||||
|
Loading…
Reference in New Issue
Block a user