Roughly speaking, thin provisioning is a feature where the VM is started with a small storage and when a no space error is triggered, more space is allocated and the VM is put to run again.
This series allows a management tool using QMP to implement thin provisioning support. It does the following: 1. patches 1/8 and 2/8 extend the query-status command to contain a more complete and descriptive status 2. patches 3/8 to 6/8 add support to the block layer to track the status of the last executed I/O operation. This is supported by ide, virtio and scsi devices 3. The last two patches extend the "query-block" and "info block" commands to print the last I/O status field (this is per device) Basically, all a management tool has to do to implement thin provisioning is to wait for a BLOCK_IO_ERROR event (or the STOP event), check the VM is stopped by issuing query-status and then find which device failed by using query-block. Of course that the VM has to be configured to stop on errors. A last important detail: Anthony has proposed how the query-status command should be extended to support this[1]. However, I had to make the following changes to his original proposal: - Added states: debug, inmigrate, load-state-error and internal-error - Dropped: singlestep You'll find more details in the patches, thanks! [1] http://lists.nongnu.org/archive/html/qemu-devel/2011-06/msg00352.html block.c | 37 ++++++++++++++++++++++++++++++++++++- block.h | 7 +++++++ block_int.h | 2 ++ gdbstub.c | 4 ++++ hw/ide/core.c | 6 ++++++ hw/scsi-disk.c | 7 +++++++ hw/virtio-blk.c | 4 ++++ hw/watchdog.c | 1 + kvm-all.c | 1 + migration.c | 3 +++ monitor.c | 8 +++++--- qmp-commands.hx | 23 ++++++++++++++++++++++- sysemu.h | 19 +++++++++++++++++++ vl.c | 37 +++++++++++++++++++++++++++++++++++++ 14 files changed, 154 insertions(+), 5 deletions(-)