Spdk/lib
Cunyin Chang 40b74cd343 iscsi: optimization of large read process.
This patch move the spdk_iscsi_conn_handle_queued_tasks() to the main
loop of connection poller, make the logic more clear, it will also fix
one issue of hotplug:
for large read command, it has the potential risk:
one task will be split into N subtaks, when primary task return error and
try to send data in pdu, it will call spdk_iscsi_conn_handle_queued_tasks(),
the primary task is pending now, and all the subtasks will return error from
lun layer synchronous, this make the primary task return from the function
spdk_iscsi_transfer_in() after all the other subtaks, but when the N - 1 subtask
return from function spdk_iscsi_transfer_in(), it meet the condition:
primary->bytes_completed == primary->scsi.transfer_len
then it will send response pdu, after this, the primary task return from
spdk_iscsi_transfer_in(), it also meet the condition, so it will also try
to send response pdu, this will make the application run into error.

Change-Id: I72206c1ce303f5fb6bd650713742d5819a88a30f
Signed-off-by: Cunyin Chang <cunyin.chang@intel.com>
Reviewed-on: https://review.gerrithub.io/370339
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
2017-07-20 12:03:34 -04:00
..
bdev gpt/split: implemented hotremove 2017-07-19 17:09:30 -04:00
blob bdev: pass descriptors for I/O operations 2017-07-14 13:31:30 -04:00
blobfs blobfs: Handle request alloc failure during init/load 2017-07-17 18:56:37 -04:00
conf log: Use SPDK_ERRLOG in lieu of fprintf(stderr 2017-05-09 11:28:28 -07:00
copy copy: Move asynchronous module init to event_copy 2017-06-20 13:46:37 -04:00
cunit include: Move the remainder of the code base to stdinc.h 2017-05-08 13:20:36 -07:00
env_dpdk env_dpdk: allow spdk_mem_map_free() map to be NULL 2017-06-30 13:53:30 -04:00
event jsonrpc: modify API to pass request to handler 2017-07-06 13:48:12 -04:00
ioat env: Rename spdk_malloc/zmalloc/realloc/free to spdk_dma_(func) 2017-05-31 15:30:27 -04:00
iscsi iscsi: optimization of large read process. 2017-07-20 12:03:34 -04:00
json json: add function to write UTF-16LE strings 2017-07-12 18:12:52 -04:00
jsonrpc jsonrpc: simplify by removing use of poll() 2017-07-18 17:00:54 -04:00
log jsonrpc: modify API to pass request to handler 2017-07-06 13:48:12 -04:00
net jsonrpc: modify API to pass request to handler 2017-07-06 13:48:12 -04:00
nvme nvme: add I/O qpair creation options 2017-07-18 18:33:20 -04:00
nvmf nvme: add I/O qpair creation options 2017-07-18 18:33:20 -04:00
rocksdb rocksdb: set errno to support Myrocks engine 2017-07-13 15:43:55 -04:00
rpc jsonrpc: modify API to pass request to handler 2017-07-06 13:48:12 -04:00
scsi bdev: pass descriptors for I/O operations 2017-07-14 13:31:30 -04:00
trace include: Move the remainder of the code base to stdinc.h 2017-05-08 13:20:36 -07:00
ut_mock tests: macro-ize the creation and use of wrappers and stubs 2017-07-05 12:00:34 -04:00
util channel: Correctly defer unregisters if channels exist 2017-07-19 14:42:44 -04:00
vhost vhost: Make JSON-RPC parameter names as consistent as possible 2017-07-14 15:54:28 -04:00
Makefile test: add wrap capability 2017-06-08 19:24:54 -04:00