From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:37739) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R8I20-00027w-RG for qemu-devel@nongnu.org; Mon, 26 Sep 2011 16:44:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1R8I1z-0006cv-CZ for qemu-devel@nongnu.org; Mon, 26 Sep 2011 16:44:04 -0400 Received: from mx1.redhat.com ([209.132.183.28]:51593) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R8I1y-0006cf-M3 for qemu-devel@nongnu.org; Mon, 26 Sep 2011 16:44:03 -0400 From: Luiz Capitulino Date: Mon, 26 Sep 2011 17:43:49 -0300 Message-Id: <1317069835-28815-1-git-send-email-lcapitulino@redhat.com> Subject: [Qemu-devel] [PATCH v3 0/6]: block: Add I/O status support List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: kwolf@redhat.com Cc: zwu.kernel@gmail.com, armbru@redhat.com, qemu-devel@nongnu.org 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(-)