With upcoming event index patch we will need to keep track of how many descriptor chains we have really put into the avail vring. This patch is a step towards that. Our virtio layer abstracts away descriptor chains as "requests". We can start requests, add descriptors to them, and finally flush them. So far we used to put any descriptors directly into the virtqueue desc ring, and made them visible to the device only through virtqueue_req_flush(). All of our virtio bdev modules currently flush the virtqueue after adding each single request, but the docs for the virtio API say it's possible to start multiple subsequent requests and flush them all at once. This was conceptually broken so far and only the last request would be exposed to the device. It's now fixed and subsequent requests are put into the avail vring as soon as they're complete (either the next request is started, or the virtqueue is flushed). Change-Id: I76b7db88ab094c38430edd8ff0e65681775dcb31 Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com> Reviewed-on: https://review.gerrithub.io/415590 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> |
||
---|---|---|
.. | ||
linux | ||
spdk | ||
spdk_internal | ||
Makefile |