From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60547) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Yl4dd-00075t-Uo for qemu-devel@nongnu.org; Wed, 22 Apr 2015 20:05:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Yl4dZ-0003aI-J4 for qemu-devel@nongnu.org; Wed, 22 Apr 2015 20:05:05 -0400 From: John Snow Date: Wed, 22 Apr 2015 20:04:43 -0400 Message-Id: <1429747493-24397-1-git-send-email-jsnow@redhat.com> Subject: [Qemu-devel] [PATCH v3 00/10] block: incremental backup transactions List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-block@nongnu.org Cc: kwolf@redhat.com, famz@redhat.com, John Snow , qemu-devel@nongnu.org, mreitz@redhat.com, vsementsov@parallels.com, stefanha@redhat.com requires: 1429314609-29776-1-git-send-email-jsnow@redhat.com "[PATCH v6 00/21] block: transactionless incremental backup series" This series adds support for incremental backup primitives in QMP transactions. It requires my transactionless incremental backup series, currently at v6. Patch 1 adds basic support for add and clear transactions. Patch 2 tests this basic support. Patches 3-4 refactor transactions a little bit, to add clarity. Patch 5 adds the framework for error scenarios where only some jobs that were launched by a transaction complete successfully, and we need to perform context-sensitive cleanup after the transaction itself has already completed. Patches 6-7 add necessary bookkeeping information to backup job data structures to take advantage of this new feature. Patch 8 modifies qmp_drive_backup to support the new feature. Patch 9 implements the new feature for drive_backup transaction actions. Patch 10 tests the new feature. Notes/concerns: I've removed the code motion in this version and added some (in my opinion) ugly forward-declarations. The series has otherwise been minimally rebased to work with the new testing infrastructure that got changed for v6 of the transactionless series. === v3: === Key: [----] : patches are identical [####] : number of functional differences between upstream/downstream patch [down] : patch is downstream-only The flags [FC] indicate (F)unctional and (C)ontextual differences, respectively 001/10:[0002] [FC] 'qapi: Add transaction support to block-dirty-bitmap operations' 002/10:[0061] [FC] 'iotests: add transactional incremental backup test' 003/10:[----] [--] 'block: rename BlkTransactionState and BdrvActionOps' 004/10:[----] [--] 'block: re-add BlkTransactionState' 005/10:[0010] [FC] 'block: add transactional callbacks feature' 006/10:[----] [--] 'block: add refcount to Job object' 007/10:[----] [-C] 'block: add delayed bitmap successor cleanup' 008/10:[0051] [FC] 'qmp: Add an implementation wrapper for qmp_drive_backup' 009/10:[0001] [FC] 'block: drive_backup transaction callback support' 010/10:[0061] [FC] 'iotests: 124 - transactional failure test' 01: Removed "(Not yet implemented)" line from bitmaps.md. Kept R-Bs, like a selfish person would. 02: Rebased on latest transactionless series. Added some transaction helpers. 05: Removed superfluous deletion loop in put_blk_action_state. 08: Rebased without the preceding code motion patch. Re-added forward declaration for do_drive_backup. 09: Fixed commit message whitespace. Re-added block_job_cb forward declaration to avoid code motion patch. 10: Rebased on latest transactionless series; Added "wait_qmp_backup" function to complement "do_qmp_backup." General bike-shedding. === v2: === 01: Fixed indentation. Fixed QMP commands to behave with new bitmap_lookup from transactionless-v4. 2.3 --> 2.4. 02: Folded in improvements to qemu-iotest 124 from transactional-v1. 03: NEW 04: NEW 05: A lot: Don't delete the comma in the transaction actions config use g_new0 instead of g_malloc0 Phrasing: "retcode" --> "Return code" Use GCC attributes to mark functions as unused until future patches. Added some data structure documentation. Many structure and function renames, hopefully to improve readability. Use just one list for all Actions instead of two separate lists. Remove ActionState from the list upon deletion/decref And many other small tweaks. 06: Comment phrasing. 07: Removed errp parameter from all functions introduced by this commit. bdrv_dirty_bitmap_decref --> bdrv_frozen_bitmap_decref 08: NEW 09: _drive_backup --> do_drive_backup() Forward declarations removed. 10: Rebased on top of drastically modified #05. Phrasing: "BackupBlockJob" instead of "BackupJob" in comments. 11: Removed extra parameters to wait_incremental() in test_transaction_failure() John Snow (10): qapi: Add transaction support to block-dirty-bitmap operations iotests: add transactional incremental backup test block: rename BlkTransactionState and BdrvActionOps block: re-add BlkTransactionState block: add transactional callbacks feature block: add refcount to Job object block: add delayed bitmap successor cleanup qmp: Add an implementation wrapper for qmp_drive_backup block: drive_backup transaction callback support iotests: 124 - transactional failure test block.c | 65 +++++- block/backup.c | 29 +-- blockdev.c | 566 +++++++++++++++++++++++++++++++++++++++------ blockjob.c | 18 +- docs/bitmaps.md | 2 +- include/block/block.h | 10 +- include/block/block_int.h | 8 + include/block/blockjob.h | 21 ++ qapi-schema.json | 6 +- tests/qemu-iotests/124 | 174 +++++++++++++- tests/qemu-iotests/124.out | 4 +- 11 files changed, 802 insertions(+), 101 deletions(-) -- 2.1.0