If ANA state is inaccessible or qpair is disconnected, I/O cannot be submitted. But if qpair is connected, ANA state may become accessible, or if qpair is disconnected, it may become connected via resetting. Hence even if find_io_path() returned NULL, queue I/O and retry it one second later if qpair is connected or ctrlr is resetting. Sort retried I/Os by expiration values in ticks, and activate a timed poller per nvme_bdev_channel only if there is any retried I/O. So the poller function bdev_nvme_retry_ios() always returns BUSY because if the poller runs earlier than the closest retried I/O or runs when there is no retried I/O, it is more like a bug of the framework. Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Change-Id: Id28110a0d63ebc1c5772814e2ff8a47934df1644 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9830 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: Aleksey Marchuk <alexeymar@mellanox.com> |
||
---|---|---|
.. | ||
accel | ||
bdev | ||
blob | ||
blobfs | ||
env_dpdk | ||
event | ||
scheduler | ||
sock | ||
Makefile |