numam-spdk/lib/nvmf
Ben Walker f84c916c41 nvmf/tcp: Correctly kick the recv state machine when a request is freed
When a command arrives and no requests are available, the socket
recv state machine sits in the RECV_STATE_AWAIT_REQ state until another
network event occurs. If this I/O was the last one sent, this leaves the
target hung. To fix this, when a request is completed, kick the state
machine to make forward progress.

In practice, this can only occur once the pdu send acknowledgements are
asynchronous relative to arriving commands. That only begins happening
with the use of MSG_ZEROCOPY. When MSG_ZEROCOPY is turned on, it's
possible receive the next PDU in a chain for a command prior to seeing
the acknowledgement that the response that triggered that PDU actually
sent.

Change-Id: I556f31ad56970d36aa3538cfde375d35f3d4e551
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/480002
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2020-01-27 17:42:24 +00:00
..
ctrlr_bdev.c nvmf: Return ACWU and NACWU values in indentify structures 2020-01-27 17:39:52 +00:00
ctrlr_discovery.c nvmf: don't keep a global discovery log page. 2019-09-03 00:30:59 +00:00
ctrlr.c nvmf/tcp: Simplify qpair resource initialization 2020-01-27 17:42:24 +00:00
custom_cmd_hdlr.c lib/nvmf: custom admin cmd handler 2020-01-20 09:56:35 +00:00
fc_ls.c lib/nvmf: get_transport now takes a string. 2020-01-16 09:10:38 +00:00
fc.c nvmf: pass listen done cb to transport specific code 2020-01-16 09:18:38 +00:00
Makefile lib/nvmf: custom admin cmd handler 2020-01-20 09:56:35 +00:00
nvmf_fc.h lib/nvme: update trid struct with trstring. 2020-01-16 09:10:38 +00:00
nvmf_internal.h nvmf: Add support for compare op command 2020-01-27 17:39:52 +00:00
nvmf_rpc.c lib/nvmf: nvmf target stops to listen when subsystem is destroyed 2020-01-22 13:53:34 +00:00
nvmf.c lib/nvmf: nvmf target stops to listen when subsystem is destroyed 2020-01-22 13:53:34 +00:00
rdma.c nvmf/rdma: fix call to spdk_nvmf_rdma_listen 2020-01-23 16:38:46 +00:00
subsystem.c lib/nvmf: nvmf target stops to listen when subsystem is destroyed 2020-01-22 13:53:34 +00:00
tcp.c nvmf/tcp: Correctly kick the recv state machine when a request is freed 2020-01-27 17:42:24 +00:00
transport.c nvmf/tcp: Simplify qpair resource initialization 2020-01-27 17:42:24 +00:00
transport.h nvmf/tcp: Simplify qpair resource initialization 2020-01-27 17:42:24 +00:00