Spdk/lib/blob
Jim Harris ae7b47131b 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>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11388 (master)

(cherry picked from commit c5d80a8bc3)
Change-Id: I8e4c121190c7d08152aa8de20cf6abc55b5edc46
Signed-off-by: Krzysztof Karas <krzysztof.karas@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12464
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2022-06-30 13:32:31 -04:00
..
blob_bs_dev.c blob: use uint64_t for unmap and write_zeroes lba count 2022-06-30 13:32:26 -04:00
blobstore.c blob: avoid recursion when split IO immmediately complete 2022-06-30 13:32:31 -04:00
blobstore.h blobstore: Use RB_TREE to do blob lookup 2022-06-30 13:32:29 -04:00
Makefile blob: use uint64_t for unmap and write_zeroes lba count 2022-06-30 13:32:26 -04:00
request.c blob: use uint64_t for unmap and write_zeroes lba count 2022-06-30 13:32:26 -04:00
request.h blob: use uint64_t for unmap and write_zeroes lba count 2022-06-30 13:32:26 -04:00
spdk_blob.map lib/blob: add a map file. 2020-04-15 22:10:08 +00:00
zeroes.c blob: use uint64_t for unmap and write_zeroes lba count 2022-06-30 13:32:26 -04:00