On restart, we were scheduling a BH to process queued requests, which would run before starting up the data plane, leading to those requests being assigned and started on coroutines on the main context.
This could cause requests to be wrongly processed in parallel from different threads (the main thread and the iothread managing the data plane), potentially leading to multiple issues. Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1812765 See "virtio-blk: Disable request queuing while switching contexts" for previous discussion: - https://lists.gnu.org/archive/html/qemu-devel/2020-06/msg00304.html Sergio Lopez (2): virtio-blk: Refactor the code that processes queued requests virtio-blk: On restart, process queued requests in the proper context include/hw/virtio/virtio-blk.h | 1 + hw/block/dataplane/virtio-blk.c | 8 ++++++++ hw/block/virtio-blk.c | 30 +++++++++++++++++++++--------- 3 files changed, 30 insertions(+), 9 deletions(-) -- 2.26.2