With virtio-blk dataplane, I/O errors might occur while QEMU is not in the main I/O thread. This makes the block layer's bdrv_error_action() function thread-safe (modulo changes in the monitor to make QMP events thread-safe too, already posted).
Thanks to Kevin for discussing v1, the ideas are based on his input too. v1->v2: redone, v1 should really have been an RFC Paolo Bonzini (2): vl: allow other threads to do qemu_system_vmstop_request block: asynchronously stop the VM on I/O errors block.c | 20 ++++++++++-- cpus.c | 1 + docs/qmp/qmp-events.txt | 2 +- include/sysemu/sysemu.h | 1 + stubs/vm-stop.c | 7 +++- target-lm32/op_helper.c | 2 +- vl.c | 85 +++++++++++++++++++++++++++++++------------------ 7 files changed, 82 insertions(+), 36 deletions(-) -- 1.8.3.1