[Qemu-devel] [PATCH v5 00/14] block/mirror: Add active-sync mirroring

Max Reitz posted 14 patches 18 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20180613181823.13618-1-mreitz@redhat.com
Test checkpatch passed
Test docker-mingw@fedora passed
Test docker-quick@centos7 passed
Test s390x passed
qapi/block-core.json         |  29 +-
include/block/block_int.h    |   4 +-
include/block/dirty-bitmap.h |   2 +
include/qemu/hbitmap.h       |   5 +-
include/qemu/job.h           |  15 +
block.c                      |  44 ++-
block/backup.c               |   2 +-
block/dirty-bitmap.c         |  57 +++-
block/mirror.c               | 605 ++++++++++++++++++++++++++++-------
blockdev.c                   |   9 +-
job.c                        |   5 +
tests/test-hbitmap.c         |  38 ++-
util/hbitmap.c               |  10 +-
tests/qemu-iotests/151       | 120 +++++++
tests/qemu-iotests/151.out   |   5 +
tests/qemu-iotests/group     |   1 +
16 files changed, 799 insertions(+), 152 deletions(-)
create mode 100755 tests/qemu-iotests/151
create mode 100644 tests/qemu-iotests/151.out

[Qemu-devel] [PATCH v5 00/14] block/mirror: Add active-sync mirroring

Posted by Max Reitz 18 weeks ago
This series implements an active and synchronous mirroring mode.

You can read the cover letter of v4 here (I don’t like to copy-paste
that because people who reviewed previous versions know it already and
this saves them from having to look out for potential changes):

http://lists.nongnu.org/archive/html/qemu-block/2018-04/msg00185.html


v5:
- Patch 3: Rebase conflict with Kevin’s job series (kept R-bs because
    it’s just a change in removed code (and a trivial one on top))
- Patch 6: Removed completely unused BdrvChildList typedef [Berto]
    (kept R-bs again because this isn’t even a functional change...)
- Patch 11: Added, because jobs are no longer supposed to have direct
    access to their progress info, but we need some way of just adding
    an offset to the progress end value in the next patch
- Patch 12:
  - s/2.12/3.0/ [Eric]
  - Use job_progress_*() functions
  (kept R-b because I think those to be very obvious changes)
- Patch 13: s/2.13/3.0/ (kept R-b because come on)
- Patch 14:
  - s/2017/2018/ (hey, why not)
  - qmp_to_opts() has been moved to VM
  (kept R-bs because I consider those to be trivial or obvious changes,
  respectively)


git-backport-diff to v4:

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/14:[----] [--] 'block/mirror: Pull out mirror_perform()'
002/14:[----] [--] 'block/mirror: Convert to coroutines'
003/14:[0002] [FC] 'block/mirror: Use CoQueue to wait on in-flight ops'
004/14:[----] [-C] 'block/mirror: Wait for in-flight op conflicts'
005/14:[----] [-C] 'block/mirror: Use source as a BdrvChild'
006/14:[0002] [FC] 'block: Generalize should_update_child() rule'
007/14:[----] [--] 'hbitmap: Add @advance param to hbitmap_iter_next()'
008/14:[----] [--] 'test-hbitmap: Add non-advancing iter_next tests'
009/14:[----] [--] 'block/dirty-bitmap: Add bdrv_dirty_iter_next_area'
010/14:[----] [-C] 'block/mirror: Add MirrorBDSOpaque'
011/14:[down] 'job: Add job_progress_increase_remaining()'
012/14:[0006] [FC] 'block/mirror: Add active mirroring'
013/14:[0004] [FC] 'block/mirror: Add copy mode QAPI interface'
014/14:[0006] [FC] 'iotests: Add test for active mirroring'


Max Reitz (14):
  block/mirror: Pull out mirror_perform()
  block/mirror: Convert to coroutines
  block/mirror: Use CoQueue to wait on in-flight ops
  block/mirror: Wait for in-flight op conflicts
  block/mirror: Use source as a BdrvChild
  block: Generalize should_update_child() rule
  hbitmap: Add @advance param to hbitmap_iter_next()
  test-hbitmap: Add non-advancing iter_next tests
  block/dirty-bitmap: Add bdrv_dirty_iter_next_area
  block/mirror: Add MirrorBDSOpaque
  job: Add job_progress_increase_remaining()
  block/mirror: Add active mirroring
  block/mirror: Add copy mode QAPI interface
  iotests: Add test for active mirroring

 qapi/block-core.json         |  29 +-
 include/block/block_int.h    |   4 +-
 include/block/dirty-bitmap.h |   2 +
 include/qemu/hbitmap.h       |   5 +-
 include/qemu/job.h           |  15 +
 block.c                      |  44 ++-
 block/backup.c               |   2 +-
 block/dirty-bitmap.c         |  57 +++-
 block/mirror.c               | 605 ++++++++++++++++++++++++++++-------
 blockdev.c                   |   9 +-
 job.c                        |   5 +
 tests/test-hbitmap.c         |  38 ++-
 util/hbitmap.c               |  10 +-
 tests/qemu-iotests/151       | 120 +++++++
 tests/qemu-iotests/151.out   |   5 +
 tests/qemu-iotests/group     |   1 +
 16 files changed, 799 insertions(+), 152 deletions(-)
 create mode 100755 tests/qemu-iotests/151
 create mode 100644 tests/qemu-iotests/151.out

-- 
2.17.1


Re: [Qemu-devel] [PATCH v5 00/14] block/mirror: Add active-sync mirroring

Posted by Max Reitz 17 weeks ago
On 2018-06-13 20:18, Max Reitz wrote:
> This series implements an active and synchronous mirroring mode.
> 
> You can read the cover letter of v4 here (I don’t like to copy-paste
> that because people who reviewed previous versions know it already and
> this saves them from having to look out for potential changes):
> 
> http://lists.nongnu.org/archive/html/qemu-block/2018-04/msg00185.html

Applied to my block branch after deciding (with Kevin) that changing
bytes_handled's comment is not really worth it considering it's going to
be removed in a follow-up anyway.

Thank you for all the reviews,

Max