Spdk/lib/nvmf
Ziye Yang 85ff3fcea6 rdma: Do not use the poller to handle the qpair exiting.
Generally, this patch did the following work:

Remove the destruct poller. I think that we do not need this,
the destruct poller is specially for Softwaare RoCE case.
Since SoftRoCE will not have IBV_EVENT_QP_LAST_WQE_REACHED event,
we will not wait the last_wqe_reached flag when srq is enabled.
So we can avoid using the poller.

And the purpose of this patch is to solve the coredump issue.
For example, if we run rdma local test such as, e.g.,

test/nvmf/host/bdevperf.sh --transport=rdma

The coredump reason: the qpair is freed twice. Because for RDMA transport,
we do not really remove the qpair from the group if the upper layer
does it.

The first time is called by nvmf_rdma_destroy_drained_qpair in nvmf_rdma_poller_poll,
and the second time is called by nvmf_rdma_qpair_reject_connection in
in nvme_rdma_close_qpair. Since nvme_rdma_close_qpair will always called,
so we need make sure that the qpair will be close after calling this function.
Otherwise we will have the double free qpair. So our approach here is add a flag
("to_close")in rqpair structure and make sure the rqpair be freed after the
"to_close" is set  nvme_rdma_close_qpair

Signed-off-by: Ziye Yang <ziye.yang@intel.com>
Change-Id: I6f97debbcd29bbb7c6e3f9725907b4102a1d2892
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3661
Community-CI: Broadcom CI
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Seth Howell <seth.howell@intel.com>
2020-08-19 07:28:36 +00:00
..
ctrlr_bdev.c lib/nvmf: Support custom admin cmd handler for abort 2020-07-24 07:25:47 +00:00
ctrlr_discovery.c lib/nvmf: remove spdk_ and _spdk prefix from functions. 2020-06-01 09:21:14 +00:00
ctrlr.c lib/nvmf: add an in_destruct flag to the ctrlr struct 2020-08-17 08:28:49 +00:00
fc_ls.c nvmf: Remove new_qpair callback from transport accept function pointer 2020-06-18 07:29:41 +00:00
fc.c lib/nvmf: Add nvmf_transport_qpair_abort_request() 2020-07-14 07:54:42 +00:00
Makefile lib/nvmf: make spdk_nvmf_qpair_disconnect thread safe. 2020-08-12 07:51:15 +00:00
nvmf_fc.h nvmf: Remove new_qpair callback from transport accept function pointer 2020-06-18 07:29:41 +00:00
nvmf_internal.h lib/nvmf: add an in_destruct flag to the ctrlr struct 2020-08-17 08:28:49 +00:00
nvmf_rpc.c nvmf/rpc: stop_listen rpc now uses the async stop listen function. 2020-08-11 08:29:14 +00:00
nvmf.c lib/nvmf: add an in_destruct flag to the ctrlr struct 2020-08-17 08:28:49 +00:00
rdma.c rdma: Do not use the poller to handle the qpair exiting. 2020-08-19 07:28:36 +00:00
spdk_nvmf.map lib/nvmf:add spdk_nvmf_transport_stop_listen_async API. 2020-08-11 08:29:14 +00:00
subsystem.c lib/nvmf: remove spdk_ and _spdk prefix from functions. 2020-06-01 09:21:14 +00:00
tcp.c nvme TCP: Make the control related pdu also allocated from the SPDK DMA memory 2020-08-04 18:28:08 +00:00
transport.c nvmf: association timer triggered on shutdown 2020-08-13 07:53:08 +00:00
transport.h lib/nvmf: Add nvmf_transport_qpair_abort_request() 2020-07-14 07:54:42 +00:00