Spdk/lib
Jim Harris c5d80a8bc3 blob: avoid recursion when split IO immmediately complete
In some scenarios, a split IO can immediately complete.  For
example, a very large unmap operation to a newly thin-provisioned
blob has no operations to perform, so the batch for its operation
immediately completes.

But if it immediately completes, we can't recursively submit
the next split IO.  So use variables in the context structure
to detect when an operation immediately completes, to allow
it to unwind and submit the next operation without recursing.

Fixes issue #2347.

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: I8e4c121190c7d08152aa8de20cf6abc55b5edc46
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11388
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
2022-02-07 17:40:07 +00:00
..
accel so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
bdev so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
blob blob: avoid recursion when split IO immmediately complete 2022-02-07 17:40:07 +00:00
blobfs so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
conf so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
dma so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
env_dpdk so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
env_ocf spelling: lib 2021-12-03 08:12:55 +00:00
event so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
ftl so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
idxd so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
init so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
ioat so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
iscsi so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
json so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
jsonrpc so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
log so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
lvol lvol: finish initial iteration even if blob has no name 2022-02-03 19:43:35 +00:00
nbd so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
notify so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
nvme so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
nvmf nvmf: Support concurrent execution of multiple abort commands 2022-02-04 20:58:29 +00:00
rdma so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
reduce so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
rocksdb rocksdb: fix thread name typo 2021-09-03 08:08:20 +00:00
rpc so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
scsi so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
sock so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
thread thread: wrong_thread SEGV when NULL thread passed 2022-02-02 08:25:02 +00:00
trace so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
trace_parser so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
ut_mock so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
util so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
vfio_user so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
vhost lib/vhost: separate out rte_vhost code from vhost 2022-02-04 21:57:42 +00:00
virtio so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
vmd so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
Makefile lib/trace_parser: add trace_parser library stubs 2021-09-29 08:57:58 +00:00