This series adds support to the block layer to keep track of devices' I/O status. That information is also made available in QMP and HMP.
The goal here is to allow management applications that miss the BLOCK_IO_ERROR event to able to query the VM to determine if any device has caused the VM to stop and which device caused it. Here's an HMP example: (qemu) info status VM status: paused (io-error) (qemu) info block ide0-hd0: removable=0 io-status=ok file=disks/test2.img ro=0 drv=qcow2 encrypted=0 ide0-hd1: removable=0 io-status=nospace file=/dev/vg_doriath/kvmtest ro=0 drv=qcow2 encrypted=0 ide1-cd0: removable=1 locked=0 io-status=ok [not inserted] floppy0: removable=1 locked=0 [not inserted] sd0: removable=1 locked=0 [not inserted] The session above shows that the VM is stopped due to an I/O error. By using the info block command it's possible to determine that the 'ide0-hd1' device caused the error, which turns out to be due to no space. changelog --------- v3 o Introduce bdrv_iostatus_disable() o Also reset the I/O status on bdrv_attach_dev() o Fix bad assert() in bdrv_iostatus_enable() o Improve documentation v2 o Rebase against latest master o Renamed bdrv_iostatus_update() to bdrv_iostatus_set_err() o Minor changelog clarifications block.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ block.h | 10 +++++++++ block_int.h | 1 + hw/ide/core.c | 2 + hw/scsi-disk.c | 2 + hw/virtio-blk.c | 2 + monitor.c | 6 +++++ qmp-commands.hx | 6 +++++ 8 files changed, 86 insertions(+), 0 deletions(-)