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. Please, note that this series depends on the following series: o [PATCH v3 0/8]: Introduce the RunState type o http://lists.gnu.org/archive/html/qemu-devel/2011-09/msg00118.html And to be able to properly test it you'll also need: o [PATCH 0/3] qcow2/coroutine fixes o http://lists.gnu.org/archive/html/qemu-devel/2011-09/msg00074.html 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 "info status" command shows that the VM is stopped due to an I/O error. By issuing "info block" it's possible to determine that the 'ide0-hd1' device caused the error, which turns out to be due to no space. block.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++- block.h | 9 +++++++++ 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 | 5 +++++ 8 files changed, 77 insertions(+), 1 deletions(-)