f84c916c41
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> |
||
---|---|---|
.. | ||
ctrlr_bdev.c | ||
ctrlr_discovery.c | ||
ctrlr.c | ||
custom_cmd_hdlr.c | ||
fc_ls.c | ||
fc.c | ||
Makefile | ||
nvmf_fc.h | ||
nvmf_internal.h | ||
nvmf_rpc.c | ||
nvmf.c | ||
rdma.c | ||
subsystem.c | ||
tcp.c | ||
transport.c | ||
transport.h |