numam-spdk/lib/nvmf
Ben Walker 48a547fd82 nvmf/tcp: Wait for R2T send ack before processing H2C
Previously, the R2T was sent and if an H2C arrived prior
to seeing the R2T ack, it was processed anyway. Serialize
this process.

In practice, if the H2C arrives with a correctly functioning
initiator, that means the R2T already made it to the initiator.
But because the PDU hasn't been released yet, immediately processing the
PDU requires an extra PDU associated with the request. Basically, making
this change halves the worst-case number of PDUs required per
connection.

In the current sock layer implementations, it's not actually possible
for the R2T send ack to occur after that H2C arrives. But with the
upcoming addition of MSG_ZEROCOPY and other sock implementations, it's
best to fix this now.

Change-Id: Ifefaf48fcf2ff1dcc75e1686bbb9229b7ae3c219
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/479906
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.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: Wait for R2T send ack before processing H2C 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