Spdk/lib
Evgeniy Kochetov 87ebcb08c1 nvmf/rdma: Handle completions for destroyed QP associated with SRQ
IB Architecture Specification vol.1 rel.13. in ch.10.3.1 "QUEUE PAIR
AND EE CONTEXT STATES" suggests the following destroy procedure for
QPs associated with SRQ:
- Put the QP in the Error State;
- wait for the Affiliated Asynchronous Last WQE Reached Event;
- either:
  * drain the CQ by invoking the Poll CQ verb and either wait for CQ
    to be empty or the number of Poll CQ operations has exceeded CQ
    capacity size; or
  * post another WR that completes on the same CQ and wait for this WR
    to return as a WC;
- and then invoke a Destroy QP or Reset QP.

Without the drain step it is possible that LAST_WQE_REACHED event is
received and QP is destroyed before the last receive WR completion is
polled from the CQ.

In SPDK there is no risk of resource leakage in this case. So, instead
of draining we can destroy QP and then just ignore receive completions
without QP and post receive WRs back to SRQ.

Fixes #903

Signed-off-by: Evgeniy Kochetov <evgeniik@mellanox.com>
Signed-off-by: Sasha Kotchubievsky <sashakot@mellanox.com>
Signed-off-by: Alexey Marchuk <alexeymar@mellanox.com>
Change-Id: Ice6d3d5afc205c489f768e3b51c6cda8809bee9a
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/465747
Reviewed-by: Seth Howell <seth.howell@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2019-09-12 17:04:48 +00:00
..
bdev bdev/part: remove thread safety from part_construct() 2019-08-30 15:48:02 +00:00
blob lib/blob: move bdev subdir under module directory. 2019-08-22 16:29:49 +00:00
blobfs blobfs: use __wake_caller() to wake up the caller 2019-08-14 21:41:36 +00:00
conf string: spdk_strtol to delegate additional error checking 2019-01-29 00:10:57 +00:00
copy lib/copy: move ioat subdir to module directory. 2019-08-22 16:29:49 +00:00
env_dpdk env_dpdk: fix compatibility with DPDK 17.11 2019-09-10 17:50:03 +00:00
env_ocf lib/mk: update OCF build. 2019-08-27 18:49:56 +00:00
event lib/event: remove app.c dependency from loading json_config 2019-08-28 15:26:12 +00:00
ftl lib/ftl: delay processing ANM events initialization is completed 2019-09-04 18:42:57 +00:00
ioat ioat: allocate device struct using regular calloc 2019-04-09 06:30:42 +00:00
iscsi rpc: Rename get_initiator_groups to iscsi_get_initiator_groups 2019-09-10 22:56:58 +00:00
json json_util: fix typo in debug message. 2019-05-31 14:39:53 +00:00
jsonrpc jsonrpc: tolerate null json value for parameters in json-rpc call 2019-07-26 19:30:57 +00:00
log mk: move log_rpc from inside log 2019-08-15 20:32:28 +00:00
log_rpc mk: move log_rpc from inside log 2019-08-15 20:32:28 +00:00
lvol lvol: Remove blobstore on super blob creation/open error 2019-09-09 21:56:47 +00:00
nbd nbd/rpc: Add logs with more information about rpc error. 2019-08-14 22:11:40 +00:00
net net/rpc: Add logs with more information about rpc error. 2019-08-05 06:14:58 +00:00
notify lib: move notify_rpc under lib/notify 2019-08-19 06:10:30 +00:00
nvme Revert "nvme: small code cleanup for nvme_transport_ctrlr_scan" 2019-09-09 21:52:07 +00:00
nvmf nvmf/rdma: Handle completions for destroyed QP associated with SRQ 2019-09-12 17:04:48 +00:00
reduce lib/reduce: enable deletion of a vol w/o a pmem file 2019-08-22 04:31:46 +00:00
rocksdb RocksDB: Remove static and assert for SpdkInitializeThread 2019-07-05 04:19:11 +00:00
rpc lib/rpc: Add include_aliases flag to rpc_get_methods implementation. 2019-08-28 15:19:17 +00:00
rte_vhost make: add dependencies for the rte_vhost build. 2019-09-09 22:15:24 +00:00
scsi Revert "scsi: Fix seg.fault due to the gap between IO channel put and LUN removal" 2019-09-09 21:11:22 +00:00
sock lib/sock: move subdirs to module/sock 2019-08-22 16:29:49 +00:00
thread thread: Assign not pointer but instance of spdk_cpuset in struct spdk_thread 2019-07-04 00:30:22 +00:00
trace lib: move trace_rpc into lib/trace 2019-08-19 06:10:30 +00:00
ut_mock thread: Eliminate use of pthread_self and thread_ids 2019-01-15 16:53:12 +00:00
util util: Fix LTO compilation with FMV 2019-09-11 16:30:38 +00:00
vhost make: add dependencies for the rte_vhost build. 2019-09-09 22:15:24 +00:00
virtio lib/virtio: change the definition of cookie 2019-06-26 08:03:37 +00:00
vmd lib/vmd: check header_type after the vmd_adapter structure is verified 2019-07-23 19:55:04 +00:00
Makefile make: add dependencies for the rte_vhost build. 2019-09-09 22:15:24 +00:00