583a24a489
When there are two bdevs built on the same io_device, it is possible that one bdev entirely saturates underlying queue, not letting the second bdev issue a single I/O. The second bdev will silently fail any subsequent I/O and append it to the nomem_io list. However, since we resend I/O only from I/O completion callback and there's no outstanding I/O for that bdev (io_outstanding==0), the I/O will never be resent. It'll be stuck in nomem_io forever. This patch makes nomem_io list to be shared between bdevs built on the same device. It is now possible that I/O completion callback from one bdev will retry sending I/O from other bdev. The shared bdev data is based on thread-local bdev_mgmt_channel, so doesn't need any external synchronization. Change-Id: Ia5ac3a1627ce3de4087e43907c329aa7d07ed7c7 Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com> Reviewed-on: https://review.gerrithub.io/394658 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ziye Yang <optimistyzy@gmail.com> |
||
---|---|---|
.. | ||
aio | ||
error | ||
gpt | ||
lvol | ||
malloc | ||
null | ||
nvme | ||
pmem | ||
rbd | ||
rpc | ||
split | ||
virtio | ||
bdev.c | ||
Makefile | ||
scsi_nvme.c | ||
vtune.c |