Spdk/lib
Seth Howell 2575aaec5a nvme: make sure we queue requests in order.
My recent changes that introduced batching to queued request
resubmission also introduced a regression that can lead to reordering
requests before submitting them to the drive. This change prevents that.

We wait until inside the internal _nvme_qpair_submit_request function to
check for queued entries to avoid queueing a request that has children.

If a request that has children gets queued, when we process completions
and resubmit the parent, it will result in the children being submitted.
Since we only account for the number of requests we completed in the
last iteration, some of the child requests may be requeued out of order,
or worse, none of the child requests will end up being submitted to the
transport and they will all be queued behind previously queued requests.

Change-Id: I58e1c458c25fbf3f9f75364f05b1076b166a6212
Signed-off-by: Seth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/470890
Reviewed-by: Ziye Yang <ziye.yang@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2019-10-11 18:45:13 +00:00
..
bdev bdev: Fix wrong IO split when child iovs run out 2019-10-11 00:35:34 +00:00
blob lib/blob: update buf and buf_sz when serializing extent_rle 2019-10-07 15:07:12 +00:00
blobfs blobfs: use __wake_caller() to wake up the caller 2019-08-14 21:41:36 +00:00
conf string: spdk_strtol to delegate additional error checking 2019-01-29 00:10:57 +00:00
copy lib/copy: move ioat subdir to module directory. 2019-08-22 16:29:49 +00:00
env_dpdk env_dpdk: add functions to define dpdk_env make variables 2019-10-01 14:01:58 +00:00
env_ocf lib/mk: update OCF build. 2019-08-27 18:49:56 +00:00
event reactor: allow spdk_reactors_fini() to be called without prior init 2019-10-09 14:29:22 +00:00
ftl lib/ftl: Make ANM device unregister asynchronous 2019-10-01 14:47:50 +00:00
ioat ioat: allocate device struct using regular calloc 2019-04-09 06:30:42 +00:00
iscsi lib/iscsi: Flush PDUs only when connection state is RUNNING or less 2019-10-09 02:45:17 +00:00
json json_util: fix typo in debug message. 2019-05-31 14:39:53 +00:00
jsonrpc jsonrpc: tolerate null json value for parameters in json-rpc call 2019-07-26 19:30:57 +00:00
log lib/log: passing va_list to user-provided log call 2019-10-09 14:35:51 +00:00
log_rpc RPC: rename get_log_flags to log_get_flags 2019-09-24 16:42:41 +00:00
lvol lvol: Remove blobstore on super blob creation/open error 2019-09-09 21:56:47 +00:00
nbd rpc: Rename get_nbd_disks to nbd_get_disks 2019-09-19 20:56:35 +00:00
net log: remove old-style errlog entries. 2019-09-26 16:15:11 +00:00
notify RPC: rename get_notifications to notify_get_notifications 2019-09-24 16:42:41 +00:00
nvme nvme: make sure we queue requests in order. 2019-10-11 18:45:13 +00:00
nvmf nvmf/ctrlr: Disable in-capsule data transfer for RDMA controllers when dif_insert_or_strip is enabled 2019-10-11 15:36:19 +00:00
reduce lib/reduce: enable deletion of a vol w/o a pmem file 2019-08-22 04:31:46 +00:00
rocksdb RocksDB: Remove static and assert for SpdkInitializeThread 2019-07-05 04:19:11 +00:00
rpc rpc: Rename get_spdk_version to spdk_get_version 2019-09-26 15:20:46 +00:00
rte_vhost make: add dependencies for the rte_vhost build. 2019-09-09 22:15:24 +00:00
scsi rpc: Rename get_scsi_devices to scsi_get_devices 2019-10-03 23:01:27 +00:00
sock sock: do not free group_impl in generic layer 2019-10-01 14:01:58 +00:00
thread log: remove old-style errlog entries. 2019-09-26 16:15:11 +00:00
trace rpc: Rename get_tpoint_group_mask trace_get_tpoint_group_mask 2019-10-01 13:59:37 +00:00
ut_mock test: Add a mock for writev 2019-10-08 15:48:29 +00:00
util util: optimize base64 with Arm NEON 2019-09-24 17:03:36 +00:00
vhost vhost_rpc: Fix function typo error. 2019-10-10 16:52:44 +00:00
virtio lib/virtio: change the definition of cookie 2019-06-26 08:03:37 +00:00
vmd lib/vmd: check header_type after the vmd_adapter structure is verified 2019-07-23 19:55:04 +00:00
Makefile make: add dependencies for the rte_vhost build. 2019-09-09 22:15:24 +00:00