numam-spdk/lib
Jim Harris 59a1fbe937 iscsi: fix hang on high QD large reads
We throttle the number of data_in operations per
connection.  Currently after a read is completed,
we try to send more data_in operations since one
has just been completed.

But we are trying to send more too early.  The data_in_cnt
doesn't actually get decremented until after the PDU is
written on the socket.  So this results in a case
where data_in_cnt == 64, and all 64 read operations
complete before any of those 64 are actually transmitted
onto the TCP socket.  There are no more read operations
waiting, so we won't try to handle the data_in list
again, and if none of these 64 resulted in a SCSI
command completing, then the initiator may not send us
any more read I/O which would have also kicked the data_in
list.

So the solution is to kick the data_in list after the
PDU has been written - not after a read I/O is completed
back from the SCSI layer.

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: Ia01cf96e8eb6e08ddcaaeff449386e78de7c5bc5

Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/455454
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: GangCao <gang.cao@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
2019-05-24 04:19:03 +00:00
..
bdev ocf: serialize base bdev names in OCF UUID 2019-05-23 19:01:38 +00:00
blob blob: fix scanbuild failures in this file. 2019-05-16 20:53:21 +00:00
blobfs blobfs: removed unaligned memory access 2019-05-20 16:55:42 +00:00
conf string: spdk_strtol to delegate additional error checking 2019-01-29 00:10:57 +00:00
copy misc/rpc: rename some C functions of rpc methods 2019-05-07 05:30:16 +00:00
env_dpdk env_dpdk: set crypto log level to ERR 2019-05-13 15:46:50 +00:00
event thread: Add a mechanism to exit a lightweight thread 2019-05-22 04:23:17 +00:00
ftl lib/ftl: minor ftl_rwb_fill cleanup 2019-05-22 16:17:23 +00:00
ioat ioat: allocate device struct using regular calloc 2019-04-09 06:30:42 +00:00
iscsi iscsi: fix hang on high QD large reads 2019-05-24 04:19:03 +00:00
json json_util: add debug logs to spdk_json_decode_object function 2019-01-10 14:31:37 +00:00
jsonrpc jsonrpc: Use spdk_json_write_named_* APIs throughout 2019-02-04 07:08:04 +00:00
log log/fdump: fix alignment of the last printed line 2019-05-10 10:27:29 +00:00
lvol lvol: Fix for lvol failed deletion flow 2019-04-02 19:23:22 +00:00
nbd nbd: optional nbd_device in start_nbd_disk 2019-04-04 08:35:50 +00:00
net net: Use spdk_json_write_named_* APIs throughout 2019-02-04 07:08:04 +00:00
notify lib/notify: rename spdk_notify_get_events to spdk_notify_foreach_event 2019-05-07 06:11:27 +00:00
nvme nvme: add nvme_free_request() variant that takes qpair 2019-05-22 14:51:01 +00:00
nvmf nvmf: increase default max num qps to 128 2019-05-22 14:50:05 +00:00
reduce lib/reduce: add new API to retrieve volume parameters 2019-05-13 15:41:35 +00:00
rocksdb rocksdb: cleanup SpdkInitializeThread/SpdkFinalizeThread 2019-05-02 09:00:43 +00:00
rpc rpc: fix segfault on get_spdk_version request with extra params 2019-05-22 04:36:47 +00:00
scsi Revert "scsi: Simplify removing LUN when no connection is for it" 2019-05-20 16:56:06 +00:00
sock sock: fix a uninitialized-variable error 2019-05-08 21:24:13 +00:00
thread thread: Add a mechanism to exit a lightweight thread 2019-05-22 04:23:17 +00:00
trace trace: print error message if event name is too long 2019-05-02 08:41:56 +00:00
ut_mock thread: Eliminate use of pthread_self and thread_ids 2019-01-15 16:53:12 +00:00
util util/cpuset: use dst & src parameter names 2019-05-23 07:00:34 +00:00
vhost rte_vhost: fix deadlock on rte_vhost_driver_unregister() 2019-05-24 00:53:42 +00:00
virtio virtio: zero-out virtqueue structures at init 2019-04-22 16:49:39 +00:00
Makefile bdev/nvme: always enable FTL 2019-05-02 08:41:56 +00:00