All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
To: qemu-block@nongnu.org
Cc: qemu-devel@nongnu.org, eblake@redhat.com, armbru@redhat.com,
	crosa@redhat.com, ehabkost@redhat.com, berrange@redhat.com,
	pbonzini@redhat.com, jsnow@redhat.com, mreitz@redhat.com,
	kwolf@redhat.com
Subject: DROP Re: [PATCH v3 00/35] block: publish backup-top filter
Date: Wed, 2 Jun 2021 15:32:12 +0300	[thread overview]
Message-ID: <47a7e491-a6d7-c21b-3c4b-dbf3fde00f16@virtuozzo.com> (raw)
In-Reply-To: <20210601165026.326877-1-vsementsov@virtuozzo.com>

Actually, I should rebase it now on Kevin's block branch. So, ignore this, I'll resend.

01.06.2021 19:49, Vladimir Sementsov-Ogievskiy wrote:
> Hi all!
> 
> v3: Keep x-perf.copy-range backup option.
> 
> So, additional function is added to set copy_range in block-copy after creation.
> And if we do so, it's better to set "compress" option same way instead of handling
> x-deprecated-compress option.
> 
> 8: rebased on not yet remove @perf argument, keep r-b
> 11, 21, 23: small related rebase conflicts, keep r-b
> 9, 10, 19: new
> 20: drop x-deprecated-compress option, drop r-b
> 24: fix typo
> 34: fix qmp( , **{}) to qmp( , {})
> 
> also, add a lot of Max's r-bs, thanks!!!
> 
> So, patches without r-b: 9, 10, 19, 20
> 
> v2:
> 01-02: new
> 03: don't bother with supporting empty child: we should never have such
>      at this point
> 05: add comment
> 06: keep checking conflict with global
>      add realized_set_allowed to qdev_prop_drive_iothread
> 07: improve cbw_cbw() name
>      improve commit message
> 10: rebased on unchanged backup_calculate_cluster_size(). keep r-b  CHECK ME
> 12: new
> 13: drop extra bdrv_unref()
> 18: add compress local variable
>      add comment about x-deprecated-compress
> 19: new, replacement for "[PATCH 17/21] block/block-copy: switch to fully set bitmap by default"
> 22: improve qapi documentation
> 23-33: test: a lot of refactoring
> 
> We have image fleecing scheme to export point-in-time state of active
> disk (iotest 222):
> 
> 
>                                        backup(sync=none)
>                       ┌───────────────────────────────────────┐
>                       ▼                                       │
> ┌────────────┐     ┌────────────────┐  backing             ┌─────────────┐
> │ NBD export │ ─── │ temp qcow2 img │ ───────────────────▶ │ active disk │
> └────────────┘     └────────────────┘                      └─────────────┘
>                                                               ▲
> ┌────────────┐                                               │
> │ guest blk  │ ──────────────────────────────────────────────┘
> └────────────┘
> 
> 
> Actually, backup job inserts a backup-top filter, so in detail it looks
> like:
> 
>                                        backup(sync=none)
>                       ┌───────────────────────────────────────┐
>                       ▼                                       │
> ┌────────────┐     ┌────────────────┐  backing             ┌─────────────┐
> │ NBD export │ ─── │ temp qcow2 img │ ───────────────────▶ │ active disk │
> └────────────┘     └────────────────┘                      └─────────────┘
>                       ▲                                       ▲
>                       │ target                                │
>                       │                                       │
> ┌────────────┐     ┌────────────────┐  backing               │
> │ guest blk  │ ──▶ │   backup-top   │ ───────────────────────┘
> └────────────┘     └────────────────┘
> 
> And job does nothing here. In a new blockdev world user is intended to
> operate on node level, and insert/remove filters by hand. Let's get rid
> of job in the scheme:
> 
> ┌────────────┐     ┌────────────────┐  backing             ┌─────────────┐
> │ NBD export │ ─── │ temp qcow2 img │ ───────────────────▶ │ active disk │
> └────────────┘     └────────────────┘                      └─────────────┘
>                       ▲                                       ▲
>                       │ target                                │
>                       │                                       │
> ┌────────────┐     ┌────────────────┐  backing               │
> │ guest blk  │ ──▶ │   backup-top   │ ───────────────────────┘
> └────────────┘     └────────────────┘
> 
> 
> The series prepares qom-set to make possible inserting filters above
> root node (patches 03-06), rename backup-top to copy-before-write, do
> other preparations for publishing the filter, and finally publish it,
> add qapi interface and test new fleecing scheme in 222 (first, some
> good test refactoring).
> 
> Vladimir Sementsov-Ogievskiy (35):
>    block: rename bdrv_replace_child to bdrv_replace_child_tran
>    block: comment graph-modifying function not updating permissions
>    block: introduce bdrv_replace_child_bs()
>    block: introduce blk_replace_bs
>    qdev-properties: PropertyInfo: add realized_set_allowed field
>    qdev: allow setting drive property for realized device
>    block: rename backup-top to copy-before-write
>    block-copy: always set BDRV_REQ_SERIALISING flag
>    block/block-copy: introduce block_copy_set_copy_opts()
>    block/backup: set copy_range and compress after filter insertion
>    block/backup: move cluster size calculation to block-copy
>    block/copy-before-write: relax permission requirements when no parents
>    block/copy-before-write: drop extra bdrv_unref on failure path
>    block/copy-before-write: use file child instead of backing
>    block/copy-before-write: bdrv_cbw_append(): replace child at last
>    block/copy-before-write: introduce cbw_init()
>    block/copy-before-write: cbw_init(): rename variables
>    block/copy-before-write: cbw_init(): use file child after attaching
>    block/copy-before-write: bdrv_cbw_append(): drop unused compress arg
>    block/copy-before-write: cbw_init(): use options
>    block/copy-before-write: initialize block-copy bitmap
>    block/block-copy: make setting progress optional
>    block/copy-before-write: make public block driver
>    qapi: publish copy-before-write filter
>    python/qemu/machine.py: refactor _qemu_args()
>    python/qemu/machine: QEMUMachine: improve qmp() method
>    iotests.py: VM: add own __enter__ method
>    iotests/222: fix pylint and mypy complains
>    iotests/222: constantly use single quotes for strings
>    iotests: move 222 to tests/image-fleecing
>    iotests.py: hmp_qemu_io: support qdev
>    iotests/image-fleecing: proper source device
>    iotests/image-fleecing: rename tgt_node
>    iotests/image-fleecing: prepare for adding new test-case
>    iotests/image-fleecing: add test-case for copy-before-write filter
> 
>   qapi/block-core.json                        |  30 ++-
>   block/{backup-top.h => copy-before-write.h} |  25 +-
>   include/block/block-copy.h                  |   6 +-
>   include/block/block.h                       |   2 +
>   include/hw/qdev-properties.h                |   1 +
>   include/sysemu/block-backend.h              |   1 +
>   block.c                                     |  52 +++-
>   block/backup-top.c                          | 253 -------------------
>   block/backup.c                              | 116 ++-------
>   block/block-backend.c                       |   8 +
>   block/block-copy.c                          | 148 ++++++++---
>   block/copy-before-write.c                   | 256 ++++++++++++++++++++
>   hw/core/qdev-properties-system.c            |  43 +++-
>   hw/core/qdev-properties.c                   |   6 +-
>   MAINTAINERS                                 |   4 +-
>   block/meson.build                           |   2 +-
>   python/qemu/machine.py                      |  30 ++-
>   tests/qemu-iotests/222                      | 159 ------------
>   tests/qemu-iotests/222.out                  |  67 -----
>   tests/qemu-iotests/283                      |  35 ++-
>   tests/qemu-iotests/283.out                  |   4 +-
>   tests/qemu-iotests/297                      |   2 +-
>   tests/qemu-iotests/iotests.py               |   9 +-
>   tests/qemu-iotests/tests/image-fleecing     | 192 +++++++++++++++
>   tests/qemu-iotests/tests/image-fleecing.out | 139 +++++++++++
>   25 files changed, 910 insertions(+), 680 deletions(-)
>   rename block/{backup-top.h => copy-before-write.h} (56%)
>   delete mode 100644 block/backup-top.c
>   create mode 100644 block/copy-before-write.c
>   delete mode 100755 tests/qemu-iotests/222
>   delete mode 100644 tests/qemu-iotests/222.out
>   create mode 100755 tests/qemu-iotests/tests/image-fleecing
>   create mode 100644 tests/qemu-iotests/tests/image-fleecing.out
> 


-- 
Best regards,
Vladimir


      parent reply	other threads:[~2021-06-02 12:34 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-01 16:49 [PATCH v3 00/35] block: publish backup-top filter Vladimir Sementsov-Ogievskiy
2021-06-01 16:49 ` [PATCH v3 01/35] block: rename bdrv_replace_child to bdrv_replace_child_tran Vladimir Sementsov-Ogievskiy
2021-06-01 16:49 ` [PATCH v3 02/35] block: comment graph-modifying function not updating permissions Vladimir Sementsov-Ogievskiy
2021-06-01 16:49 ` [PATCH v3 03/35] block: introduce bdrv_replace_child_bs() Vladimir Sementsov-Ogievskiy
2021-06-01 16:49 ` [PATCH v3 04/35] block: introduce blk_replace_bs Vladimir Sementsov-Ogievskiy
2021-06-01 16:49 ` [PATCH v3 05/35] qdev-properties: PropertyInfo: add realized_set_allowed field Vladimir Sementsov-Ogievskiy
2021-06-01 16:49 ` [PATCH v3 06/35] qdev: allow setting drive property for realized device Vladimir Sementsov-Ogievskiy
2021-06-01 16:49 ` [PATCH v3 07/35] block: rename backup-top to copy-before-write Vladimir Sementsov-Ogievskiy
2021-06-01 16:49 ` [PATCH v3 08/35] block-copy: always set BDRV_REQ_SERIALISING flag Vladimir Sementsov-Ogievskiy
2021-06-01 16:50 ` [PATCH v3 09/35] block/block-copy: introduce block_copy_set_copy_opts() Vladimir Sementsov-Ogievskiy
2021-06-01 16:50 ` [PATCH v3 10/35] block/backup: set copy_range and compress after filter insertion Vladimir Sementsov-Ogievskiy
2021-06-01 16:50 ` [PATCH v3 11/35] block/backup: move cluster size calculation to block-copy Vladimir Sementsov-Ogievskiy
2021-06-01 16:50 ` [PATCH v3 12/35] block/copy-before-write: relax permission requirements when no parents Vladimir Sementsov-Ogievskiy
2021-06-01 16:50 ` [PATCH v3 13/35] block/copy-before-write: drop extra bdrv_unref on failure path Vladimir Sementsov-Ogievskiy
2021-06-01 16:50 ` [PATCH v3 14/35] block/copy-before-write: use file child instead of backing Vladimir Sementsov-Ogievskiy
2021-06-01 16:50 ` [PATCH v3 15/35] block/copy-before-write: bdrv_cbw_append(): replace child at last Vladimir Sementsov-Ogievskiy
2021-06-01 16:50 ` [PATCH v3 16/35] block/copy-before-write: introduce cbw_init() Vladimir Sementsov-Ogievskiy
2021-06-01 16:50 ` [PATCH v3 17/35] block/copy-before-write: cbw_init(): rename variables Vladimir Sementsov-Ogievskiy
2021-06-01 16:50 ` [PATCH v3 18/35] block/copy-before-write: cbw_init(): use file child after attaching Vladimir Sementsov-Ogievskiy
2021-06-01 16:50 ` [PATCH v3 19/35] block/copy-before-write: bdrv_cbw_append(): drop unused compress arg Vladimir Sementsov-Ogievskiy
2021-06-01 16:50 ` [PATCH v3 20/35] block/copy-before-write: cbw_init(): use options Vladimir Sementsov-Ogievskiy
2021-06-01 16:50 ` [PATCH v3 21/35] block/copy-before-write: initialize block-copy bitmap Vladimir Sementsov-Ogievskiy
2021-06-01 16:50 ` [PATCH v3 22/35] block/block-copy: make setting progress optional Vladimir Sementsov-Ogievskiy
2021-06-01 16:50 ` [PATCH v3 23/35] block/copy-before-write: make public block driver Vladimir Sementsov-Ogievskiy
2021-06-01 16:50 ` [PATCH v3 24/35] qapi: publish copy-before-write filter Vladimir Sementsov-Ogievskiy
2021-06-01 16:50 ` [PATCH v3 25/35] python/qemu/machine.py: refactor _qemu_args() Vladimir Sementsov-Ogievskiy
2021-06-01 16:50 ` [PATCH v3 26/35] python/qemu/machine: QEMUMachine: improve qmp() method Vladimir Sementsov-Ogievskiy
2021-06-01 16:50 ` [PATCH v3 27/35] iotests.py: VM: add own __enter__ method Vladimir Sementsov-Ogievskiy
2021-06-01 16:50 ` [PATCH v3 28/35] iotests/222: fix pylint and mypy complains Vladimir Sementsov-Ogievskiy
2021-06-01 16:50 ` [PATCH v3 29/35] iotests/222: constantly use single quotes for strings Vladimir Sementsov-Ogievskiy
2021-06-01 16:50 ` [PATCH v3 30/35] iotests: move 222 to tests/image-fleecing Vladimir Sementsov-Ogievskiy
2021-06-01 16:50 ` [PATCH v3 31/35] iotests.py: hmp_qemu_io: support qdev Vladimir Sementsov-Ogievskiy
2021-06-01 16:50 ` [PATCH v3 32/35] iotests/image-fleecing: proper source device Vladimir Sementsov-Ogievskiy
2021-06-01 16:50 ` [PATCH v3 33/35] iotests/image-fleecing: rename tgt_node Vladimir Sementsov-Ogievskiy
2021-06-01 16:50 ` [PATCH v3 34/35] iotests/image-fleecing: prepare for adding new test-case Vladimir Sementsov-Ogievskiy
2021-06-01 16:50 ` [PATCH v3 35/35] iotests/image-fleecing: add test-case for copy-before-write filter Vladimir Sementsov-Ogievskiy
2021-06-02 12:32 ` Vladimir Sementsov-Ogievskiy [this message]

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=47a7e491-a6d7-c21b-3c4b-dbf3fde00f16@virtuozzo.com \
    --to=vsementsov@virtuozzo.com \
    --cc=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=crosa@redhat.com \
    --cc=eblake@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=jsnow@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /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.