03b12a98b2
This fixes intermittent failures with QEMU's virtio-scsi-pci device. Apparently, from time to time QEMU enters a broken state in which it doesn't turn off the NO_NOTIFY flag. This flag should be set only for the period of time virtqueues are being processed, but QEMU makes it set all the time. This makes us not signal any I/O submissions - SPDK thinks the device is currently processing notifications so it will pick up our I/O automatically, but in realitly it won't and we end up with a deadlock. I believe kernel virtio driver doesn't hit this issue because of event index feature. If negotiated, the NO_NOTIFY flag won't be used at all. Initial tests show that the issue is indeed gone with this patch. Event index for SPDK virtio is not particularly useful when using a poll-mode device, but it doesn't do any harm. It can be further optimized in the future, but macro-benchmarks don't show any performance difference compared with the legacy notification handling so there's no hurry. Change-Id: I46e8ab0da170780fcdc0dd239208670ee5ed6357 Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com> Reviewed-on: https://review.gerrithub.io/415591 Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Pawel Wodkowski <pawelx.wodkowski@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> |
||
---|---|---|
.. | ||
bdev | ||
blob | ||
blobfs | ||
conf | ||
copy | ||
cunit | ||
env_dpdk | ||
event | ||
ioat | ||
iscsi | ||
json | ||
jsonrpc | ||
log | ||
lvol | ||
nbd | ||
net | ||
nvme | ||
nvmf | ||
rocksdb | ||
rpc | ||
scsi | ||
sock | ||
thread | ||
trace | ||
ut_mock | ||
util | ||
vhost | ||
virtio | ||
Makefile |