nvmf: Adjust the resource free order for transport

Reason: In spdk_nvmf_subsystem_destroy, we call
spdk_nvmf_ctrlr_destruct(ctrlr), and this function
will still use the transport, so definitely, it is
a defect(reproduced in my platform).
So we need to defer freeing the transport resource.

Change-Id: I3eee2a29c223e2759a623604485af6f081746581
Signed-off-by: Ziye Yang <optimistyzy@gmail.com>
Reviewed-on: https://review.gerrithub.io/399368
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Ziye Yang 2018-02-12 16:58:31 +08:00 committed by Jim Harris
parent 39fc8d8a22
commit 32ad027b0c

View File

@ -188,11 +188,6 @@ spdk_nvmf_tgt_destroy(struct spdk_nvmf_tgt *tgt)
struct spdk_nvmf_transport *transport, *transport_tmp;
uint32_t i;
TAILQ_FOREACH_SAFE(transport, &tgt->transports, link, transport_tmp) {
TAILQ_REMOVE(&tgt->transports, transport, link);
spdk_nvmf_transport_destroy(transport);
}
if (tgt->discovery_log_page) {
free(tgt->discovery_log_page);
}
@ -206,6 +201,11 @@ spdk_nvmf_tgt_destroy(struct spdk_nvmf_tgt *tgt)
free(tgt->subsystems);
}
TAILQ_FOREACH_SAFE(transport, &tgt->transports, link, transport_tmp) {
TAILQ_REMOVE(&tgt->transports, transport, link);
spdk_nvmf_transport_destroy(transport);
}
free(tgt);
}