All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Snow <jsnow@redhat.com>
To: qemu-devel@nongnu.org
Cc: kwolf@redhat.com, famz@redhat.com, John Snow <jsnow@redhat.com>,
	armbru@redhat.com, mreitz@redhat.com, vsementsov@parallels.com,
	stefanha@redhat.com
Subject: [Qemu-devel] [PATCH v13 00/17] block: incremental backup series
Date: Fri, 13 Feb 2015 17:08:41 -0500	[thread overview]
Message-ID: <1423865338-8576-1-git-send-email-jsnow@redhat.com> (raw)

This series requires: [PATCH v3] blkdebug: fix "once" rule

Welcome to the "incremental backup" newsletter, where we discuss
exciting developments in non-redundant backup technology.
This issue is called the "Max Reitz Fixup" issue.

This patchset enables the in-memory part of the incremental backup
feature. There are two series on the mailing list now by Vladimir
Sementsov-Ogievskiy that enable the migration and persistence of
dirty bitmaps.

This series and most patches were originally by Fam Zheng.

Highlights:
 - Renamed "node-ref" parameter to "node" in all QMP patches.
   (A rose by any other name? ...)
 - Fuller, more robust iotests.
 - Fixed progress percentages for incremental backup jobs.
 - This patch relies upon a blkdebug fix, included as patch #16,
   but also posted separately on-list.

V13:
 - 02: New patch, trying to iron out type issues.
 - 03: Patch no longer includes type fixes.
 - 04: Patch no longer includes tpye fixes.
 - 07: Error message fixes.
 - 08: Removed superfluous empty lines
 -     Progress updates occur before cancellation check.
 - 09: Fixed a critical bug where I added an extra '-' to docs.
 -     Corrected clear semantics (checks for disabled status)
 -     More full stops and newlines removed from error_setg.
 - 10: Error message cleanup.
 -     disabled status check added to clear transaction
 -     Added version documentation for new transactions
 -     Refiddled the add transaction to not delete erroneously
       if we abort after an unsuccessful prepare
 - 13: Joined lines where possible.
 - 15: Removed unnecessary imports
 -     "%s" changed to "%i"
 -     'is 0' replaced by '== 0'
 -     removed .add_args(["-S"]) and hmp("c") and added a docstring.
 -     Check for '%' in dirnames.
 - 16: removed hmp("c"), added a doctsring.
 - xx  Dropped blkdebug patch, was #16.
 - 17: Removed hmp("c"), added a docstring.
 -     Moved all blkdebug config into QMP, because Max asked very nicely.

V12:
 - Changed authorship from Fam Zheng to John Snow on most patches
 - 02: Fix the error_setg leak in bdrv_dirty_bitmap_lookup
 -     Fix error phrasing in bdrv_dirty_bitmap_lookup
 -     Renamed "node-ref" to "node" for QMP commands.
 - 03: Granularity helper no longer requires a BDS argument.
 - 04: Return early if the second bitmap is empty.
 - 05: Renamed the 'enabled' field to 'disabled to emphasize what the
       default operating state is.
 -     We now guard against bit sets or resets with the bitmap is
       disabled, making it a more pure "read only" mode.
 -     Some documentation phrasing changes.
 - 06: Removed explicit "frozen" state in favor of an implicit one.
       A successor present implies a frozen state.
 -     Updated all functions that target a single bitmap to use
       assertions that the bitmap they are trying to modify is not
       frozen/disabled.
 -     Functions that target multiple bitmaps use only a conditional,
       and will silently skip disabled bitmaps.
 -     thaw() function removed. It is implicitly handled in reclaim
       and abdicate.
 -     Added check for return code of hbitmap_merge.
 -     Functions now check against enable OR disable when in frozen
       state, for consistency and simplicity.
 -     Add "frozen" state documentation to remove/enable/disable
       QMP commands.
 - 07: Some documentation for bdrv_set_dirty_iter.
 -     Move function calls outside of assert()
 -     Cleanup the unused successor if we do not start the backup
 -     Version documentation added for dirty-bitmap to block-core.json
 -     Job progress is now reported for incremental backup jobs.
 - 08: bdrv_dirty_bitmap_clear is now in its own patch, here.
 -     bdrv_dirty_bitmap_clear no longer takes a BDS argument.
 - 09: Added a transaction for bdrv_dirty_bitmap_clear.
 - 10: Change 'enabled' field to 'disabled' field, to match
       above decision in patch 05.
 - 12: Removed extraneous BDS arguments from most bitmap functions.
 - 13-15: New set of iotests.
 - 16: blkdebug fix, already posted upstream.
 - 17: Final iotest, testing failure case.

Fam Zheng (1):
  qapi: Add optional field "name" to block dirty bitmap

John Snow (16):
  qmp: Ensure consistent granularity type
  qmp: Add block-dirty-bitmap-add and block-dirty-bitmap-remove
  block: Introduce bdrv_dirty_bitmap_granularity()
  hbitmap: add hbitmap_merge
  qmp: Add block-dirty-bitmap-enable and block-dirty-bitmap-disable
  block: Add bitmap successors
  qmp: Add support of "dirty-bitmap" sync mode for drive-backup
  qmp: add block-dirty-bitmap-clear
  qapi: Add transaction support to block-dirty-bitmap operations
  qmp: Add dirty bitmap status fields in query-block
  block: add BdrvDirtyBitmap documentation
  block: Ensure consistent bitmap function prototypes
  iotests: add invalid input incremental backup tests
  iotests: add simple incremental backup case
  iotests: add transactional incremental backup test
  iotests: add incremental backup failure recovery test

 block.c                       | 226 ++++++++++++++++++++++--
 block/backup.c                | 149 +++++++++++++---
 block/mirror.c                |  46 ++---
 blockdev.c                    | 387 +++++++++++++++++++++++++++++++++++++++++-
 hmp.c                         |   3 +-
 include/block/block.h         |  33 +++-
 include/block/block_int.h     |   4 +-
 include/qemu/hbitmap.h        |  11 ++
 migration/block.c             |   9 +-
 qapi-schema.json              |  10 +-
 qapi/block-core.json          | 122 ++++++++++++-
 qmp-commands.hx               |  92 +++++++++-
 tests/qemu-iotests/112        | 315 ++++++++++++++++++++++++++++++++++
 tests/qemu-iotests/112.out    |   5 +
 tests/qemu-iotests/group      |   1 +
 tests/qemu-iotests/iotests.py |   6 +-
 util/hbitmap.c                |  32 ++++
 17 files changed, 1360 insertions(+), 91 deletions(-)
 create mode 100644 tests/qemu-iotests/112
 create mode 100644 tests/qemu-iotests/112.out

-- 
1.9.3

             reply	other threads:[~2015-02-13 22:09 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-13 22:08 John Snow [this message]
2015-02-13 22:08 ` [Qemu-devel] [PATCH v13 01/17] qapi: Add optional field "name" to block dirty bitmap John Snow
2015-02-16 19:58   ` Eric Blake
2015-02-13 22:08 ` [Qemu-devel] [PATCH v13 02/17] qmp: Ensure consistent granularity type John Snow
2015-02-16 19:49   ` Max Reitz
2015-02-16 19:51     ` John Snow
2015-02-16 20:03   ` Eric Blake
2015-02-13 22:08 ` [Qemu-devel] [PATCH v13 03/17] qmp: Add block-dirty-bitmap-add and block-dirty-bitmap-remove John Snow
2015-02-16 19:53   ` Max Reitz
2015-02-16 20:22   ` Eric Blake
2015-02-16 20:31     ` John Snow
2015-02-13 22:08 ` [Qemu-devel] [PATCH v13 04/17] block: Introduce bdrv_dirty_bitmap_granularity() John Snow
2015-02-16 19:57   ` Max Reitz
2015-02-13 22:08 ` [Qemu-devel] [PATCH v13 05/17] hbitmap: add hbitmap_merge John Snow
2015-02-20  9:34   ` Stefan Hajnoczi
2015-02-13 22:08 ` [Qemu-devel] [PATCH v13 06/17] qmp: Add block-dirty-bitmap-enable and block-dirty-bitmap-disable John Snow
2015-02-13 22:08 ` [Qemu-devel] [PATCH v13 07/17] block: Add bitmap successors John Snow
2015-02-13 22:08 ` [Qemu-devel] [PATCH v13 08/17] qmp: Add support of "dirty-bitmap" sync mode for drive-backup John Snow
2015-02-16 20:04   ` Max Reitz
2015-02-13 22:08 ` [Qemu-devel] [PATCH v13 09/17] qmp: add block-dirty-bitmap-clear John Snow
2015-02-16 20:05   ` Max Reitz
2015-02-13 22:08 ` [Qemu-devel] [PATCH v13 10/17] qapi: Add transaction support to block-dirty-bitmap operations John Snow
2015-02-16 20:28   ` Max Reitz
2015-02-16 21:33     ` John Snow
2015-02-13 22:08 ` [Qemu-devel] [PATCH v13 11/17] qmp: Add dirty bitmap status fields in query-block John Snow
2015-02-13 22:08 ` [Qemu-devel] [PATCH v13 12/17] block: add BdrvDirtyBitmap documentation John Snow
2015-02-13 22:08 ` [Qemu-devel] [PATCH v13 13/17] block: Ensure consistent bitmap function prototypes John Snow
2015-02-13 22:08 ` [Qemu-devel] [PATCH v13 14/17] iotests: add invalid input incremental backup tests John Snow
2015-02-13 22:08 ` [Qemu-devel] [PATCH v13 15/17] iotests: add simple incremental backup case John Snow
2015-02-16 20:36   ` Max Reitz
2015-02-20 10:02   ` Stefan Hajnoczi
2015-02-20 14:22     ` Max Reitz
2015-02-20 16:05     ` John Snow
2015-02-13 22:08 ` [Qemu-devel] [PATCH v13 16/17] iotests: add transactional incremental backup test John Snow
2015-02-13 22:08 ` [Qemu-devel] [PATCH v13 17/17] iotests: add incremental backup failure recovery test John Snow
2015-02-16 20:49   ` Max Reitz
2015-02-20 11:09 ` [Qemu-devel] [PATCH v13 00/17] block: incremental backup series Stefan Hajnoczi
2015-02-20 16:50   ` Kashyap Chamarthy
2015-02-20 17:20   ` John Snow
2015-02-23 17:52     ` Stefan Hajnoczi
2015-02-23 19:16       ` John Snow

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1423865338-8576-1-git-send-email-jsnow@redhat.com \
    --to=jsnow@redhat.com \
    --cc=armbru@redhat.com \
    --cc=famz@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    --cc=vsementsov@parallels.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.