Spdk/lib/nvme
Tomasz Zawadzki 6301f8915d lib/sock: provide a hint to picking optimal poll group
The process of matching qpair to poll group is split into
two distinct parts that occur on different threads.
See spdk_nvmf_tgt_new_qpair().

This results in a race condition for TCP between spdk_sock_map_lookup()
and spdk_sock_map_insert(), which are called in spdk_nvmf_get_optimal_poll_group()
and spdk_nvmf_poll_group_add() respectively.

Fixes #2113

This patch picks a hint from nvmf_tcp for next poll group,
which is then passed down to spdk_sock_map_lookup().

When matching placement_id exists, but does not have
a poll group assigned - the hint will be used.

Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Change-Id: I4abde2bc9c39225c9f5dd7c3654fa2639bb0a27f
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/10271
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
2022-04-01 12:41:26 +00:00
..
Makefile so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
nvme_ctrlr_cmd.c spelling: lib 2021-12-03 08:12:55 +00:00
nvme_ctrlr_ocssd_cmd.c nvme: Do not track a separate active namespace list 2022-01-14 08:35:10 +00:00
nvme_ctrlr.c nvme_ctrlr.c: Add error logs 2022-03-24 09:57:17 +00:00
nvme_cuse.c nvme: Add Check for fuse request size 2022-01-14 11:10:13 +00:00
nvme_cuse.h lib/nvme: add RPC for interacting with CUSE devices 2019-10-24 23:43:59 +00:00
nvme_discovery.c nvme: read full discovery page after reading header 2022-03-28 17:10:04 +00:00
nvme_fabric.c nvme: allocate extra request for fabrics connect 2022-02-14 15:29:39 +00:00
nvme_internal.h nvme: Call ctrlr_disconnect_done() after qpair_process_comletions() returns -ENXIO 2022-03-21 10:49:11 +00:00
nvme_io_msg.c nvme: only process io_msg in primary process 2021-04-22 01:06:02 +00:00
nvme_io_msg.h spelling: lib 2021-12-03 08:12:55 +00:00
nvme_ns_cmd.c nvme: Add functions spdk_nvme_ns_cmd_readv/writev_ext 2021-08-20 07:26:10 +00:00
nvme_ns_ocssd_cmd.c nvme: save separate metadata size to nvme request 2020-04-02 07:02:38 +00:00
nvme_ns.c nvme: Remove nvme_ns_update 2021-12-20 08:49:41 +00:00
nvme_opal_internal.h nvme/opal: deprecate spdk_opal_supported() 2020-05-20 14:16:44 +00:00
nvme_opal.c spelling: lib 2021-12-03 08:12:55 +00:00
nvme_pcie_common.c nvme: Factor out operations done after disconnect qpair completes 2022-03-21 10:49:11 +00:00
nvme_pcie_internal.h lib/nvme: report shadow doorbell update stats 2022-03-10 09:49:25 +00:00
nvme_pcie.c lib/nvme: only active process to operate the unmap operation 2022-01-24 20:12:51 +00:00
nvme_poll_group.c nvme: Add functions to get/free poll group statistics 2021-04-13 21:30:52 +00:00
nvme_qpair.c nvme: qpair_process_completions() processes if qpair is disconnecting 2022-03-21 10:49:11 +00:00
nvme_quirks.c nvme: add DELAY_BEFORE_INIT quirk to Intel 0x0A54 SSD 2021-11-15 11:59:14 +00:00
nvme_rdma.c nvme_rdma: Start qpair after resolving address and route when poll group is used 2022-04-01 08:28:45 +00:00
nvme_tcp.c lib/sock: provide a hint to picking optimal poll group 2022-04-01 12:41:26 +00:00
nvme_transport.c nvme: Caller polls qpair until disconnected if async connect failed 2022-03-21 10:49:11 +00:00
nvme_vfio_user.c nvme/vfio-user: use the common request submission function 2021-06-09 07:21:31 +00:00
nvme_zns.c lib/nvme: NVMe ZNS - Zone Descriptor Extension support 2021-09-16 07:21:40 +00:00
nvme.c nvme: Prioritize user provided trstring for transport lookup 2022-03-31 10:31:20 +00:00
spdk_nvme.map nvme: add spdk_nvme_ctrlr_get_discovery_log_page API 2021-12-20 18:12:41 +00:00