Spdk/lib/nvme
Evgeniy Kochetov 3b26e2c594 nvme/rdma: Create poller and CQ on demand
Original implementation creates pollers and CQs for all discovered
devices at poll group creation. Device (ibv_context) that has no
references, i.e. has no QPs, may be removed from the system and
ibv_context may be closed by rdma_cm. In this case we will have a CQ
that refers to closed ibv_context and it may crash in ibv_poll_cq.

With this patch pollers are created on demand when we create the first
QP for a device. When there are no more QPs on the poller, we destroy
the poller. This also helps to avoid polling CQs that don't have any
QPs attached.

Signed-off-by: Evgeniy Kochetov <evgeniik@nvidia.com>
Change-Id: I46dd2c8b9b2902168dba24e139c904f51bd1b101
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/13692
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2022-07-22 07:27:22 +00:00
..
Makefile Replace most BSD 3-clause license text with SPDX identifier. 2022-06-09 07:35:12 +00:00
nvme_ctrlr_cmd.c check_format: For C files only, fix return type breaks 2022-06-27 09:33:48 +00:00
nvme_ctrlr_ocssd_cmd.c Replace most BSD 3-clause license text with SPDX identifier. 2022-06-09 07:35:12 +00:00
nvme_ctrlr.c nvme: make spdk_nvme_ctrlr_free_io_qpair multi-process safe 2022-07-11 07:41:09 +00:00
nvme_cuse.c check_format: For C files only, fix return type breaks 2022-06-27 09:33:48 +00:00
nvme_cuse.h Replace most BSD 3-clause license text with SPDX identifier. 2022-06-09 07:35:12 +00:00
nvme_discovery.c Replace most BSD 3-clause license text with SPDX identifier. 2022-06-09 07:35:12 +00:00
nvme_fabric.c nvme_fabrics: Lock mutext when prcessing set/get regs 2022-07-15 16:06:54 +00:00
nvme_internal.h nvme: Add ctrlr_abort_queued_aborts() into qpair_abort_all_queued_reqs() 2022-06-30 07:51:23 +00:00
nvme_io_msg.c Replace most BSD 3-clause license text with SPDX identifier. 2022-06-09 07:35:12 +00:00
nvme_io_msg.h Replace most BSD 3-clause license text with SPDX identifier. 2022-06-09 07:35:12 +00:00
nvme_ns_cmd.c Replace most BSD 3-clause license text with SPDX identifier. 2022-06-09 07:35:12 +00:00
nvme_ns_ocssd_cmd.c Replace most BSD 3-clause license text with SPDX identifier. 2022-06-09 07:35:12 +00:00
nvme_ns.c check_format: For C files only, fix return type breaks 2022-06-27 09:33:48 +00:00
nvme_opal_internal.h Replace most BSD 3-clause license text with SPDX identifier. 2022-06-09 07:35:12 +00:00
nvme_opal.c check_format: For C files only, fix return type breaks 2022-06-27 09:33:48 +00:00
nvme_pcie_common.c nvme: apply nvme_pcie_poll_group_get_stats to vfio-user 2022-07-22 06:43:35 +00:00
nvme_pcie_internal.h nvme: apply nvme_pcie_poll_group_get_stats to vfio-user 2022-07-22 06:43:35 +00:00
nvme_pcie.c nvme: apply nvme_pcie_poll_group_get_stats to vfio-user 2022-07-22 06:43:35 +00:00
nvme_poll_group.c Replace most BSD 3-clause license text with SPDX identifier. 2022-06-09 07:35:12 +00:00
nvme_qpair.c nvme: Add ctrlr_abort_queued_aborts() into qpair_abort_all_queued_reqs() 2022-06-30 07:51:23 +00:00
nvme_quirks.c Replace most BSD 3-clause license text with SPDX identifier. 2022-06-09 07:35:12 +00:00
nvme_rdma.c nvme/rdma: Create poller and CQ on demand 2022-07-22 07:27:22 +00:00
nvme_tcp.c NVMe/TCP: explicitly initialize the cpl structure 2022-07-18 10:16:29 +00:00
nvme_transport.c nvme: make spdk_nvme_ctrlr_free_io_qpair multi-process safe 2022-07-11 07:41:09 +00:00
nvme_vfio_user.c nvme: apply nvme_pcie_poll_group_get_stats to vfio-user 2022-07-22 06:43:35 +00:00
nvme_zns.c Replace most BSD 3-clause license text with SPDX identifier. 2022-06-09 07:35:12 +00:00
nvme.c Replace most BSD 3-clause license text with SPDX identifier. 2022-06-09 07:35:12 +00:00
spdk_nvme.map nvme: add spdk_nvme_ctrlr_get_discovery_log_page API 2021-12-20 18:12:41 +00:00