From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:57515) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SfY6M-0001aT-0P for qemu-devel@nongnu.org; Fri, 15 Jun 2012 11:06:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SfY6F-0004gJ-Bd for qemu-devel@nongnu.org; Fri, 15 Jun 2012 11:06:17 -0400 Received: from mail-pz0-f45.google.com ([209.85.210.45]:49781) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SfY6F-0004fx-0F for qemu-devel@nongnu.org; Fri, 15 Jun 2012 11:06:11 -0400 Received: by dadn2 with SMTP id n2so3246681dad.4 for ; Fri, 15 Jun 2012 08:06:08 -0700 (PDT) Sender: Paolo Bonzini From: Paolo Bonzini Date: Fri, 15 Jun 2012 17:05:23 +0200 Message-Id: <1339772759-31004-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [RFC PATCH 00/36] A peek at the current block job patches List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, stefanha@linux.vnet.ibm.com, lcapitulino@redhat.com Hi all, this is the current state of my block job patches for 1.2. Everything is there except multiple in-flight operations in the mirroring job. Mirroring testcases are especially missing; mirroring error reporting and QMP commands are tested very lightly, which is expected to change when testcases are added. The first 17 patches are ready for inclusion, but they depend on three patches currently in Luiz's queue: - kvm: add missing include files - net: add missing include file - qmp: do not include monitor.h from qapi-types-core.h They also depend on the blkdebug changes that I have already posted. Because of the web of dependencies I'm conservatively tagging everything as RFC. Reviewed-bys are nevertheless welcome, especially on those patches. If you want to tinker with this, everything is available at git://github.com/bonzini/qemu.git in branch blkmirror-job-1.2. The series includes a generalization of the dirty bitmap API to use a trie-like hierarchical bitmap and to allow arbitrary granularity. This is accessible through an extra argument of the QMP drive-mirror command. Paolo Bonzini (36): qapi: generalize documentation of streaming commands qerror/block: introduce QERR_BLOCK_JOB_NOT_ACTIVE block: move job APIs to separate files block: add block_job_query block: add support for job pause/resume qmp: add block-job-pause and block-job-resume qemu-iotests: add test for pausing a streaming operation block: rename block_job_complete to block_job_completed block: rename BlockErrorAction, BlockQMPEventAction block: move BlockdevOnError declaration to QAPI block: reorganize io error code block: sort BlockDeviceIoStatus errors by severity block: introduce block job error stream: add on_error argument qemu-iotests: add tests for streaming error handling block: add bdrv_query_info block: add bdrv_query_stats block: make device optional in BlockInfo block: add target info to QMP query-blockjobs command block: forward bdrv_iostatus_reset to block job block: introduce new dirty bitmap functionality block: add mirror job qmp: add drive-mirror command mirror: support querying target file mirror: add support for on_source_error/on_target_error block: live snapshot documentation tweaks block: add bdrv_ensure_backing_file block: add block-job-complete mirror: implement completion add hierarchical bitmap data type and test cases block: implement dirty bitmap using HBitmap block: make round_to_clusters public mirror: perform COW if the cluster size is bigger than the granularity block: return count of dirty sectors, not chunks block: allow customizing the granularity of the dirty bitmap mirror: allow customizing the granularity Makefile.objs | 5 +- QMP/qmp-events.txt | 27 +++ block-migration.c | 8 +- block.c | 486 ++++++++++++++++------------------------- block.h | 37 ++-- block/Makefile.objs | 3 +- block/mirror.c | 347 +++++++++++++++++++++++++++++ block/stream.c | 33 ++- block_int.h | 191 +++------------- blockdev.c | 224 ++++++++++++++++--- blockjob.c | 269 +++++++++++++++++++++++ blockjob.h | 272 +++++++++++++++++++++++ hbitmap.c | 371 +++++++++++++++++++++++++++++++ hbitmap.h | 51 +++++ hmp-commands.hx | 73 ++++++- hmp.c | 65 +++++- hmp.h | 4 + hw/fdc.c | 4 +- hw/ide/core.c | 20 +- hw/scsi-disk.c | 23 +- hw/scsi-generic.c | 4 +- hw/virtio-blk.c | 19 +- monitor.c | 1 + monitor.h | 1 + qapi-schema.json | 214 ++++++++++++++++-- qemu-tool.c | 6 + qerror.c | 12 + qerror.h | 9 + qmp-commands.hx | 68 +++++- tests/Makefile | 2 + tests/qemu-iotests/030 | 166 +++++++++++++- tests/qemu-iotests/iotests.py | 7 + tests/test-hbitmap.c | 369 +++++++++++++++++++++++++++++++ trace-events | 14 +- 34 files changed, 2828 insertions(+), 577 deletions(-) create mode 100644 block/mirror.c create mode 100644 blockjob.c create mode 100644 blockjob.h create mode 100644 hbitmap.c create mode 100644 hbitmap.h create mode 100644 tests/test-hbitmap.c -- 1.7.10.2