All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v8 00/12] Drop in_use from BlockDriverState and enable point-in-time snapshot exporting over NBD
@ 2013-12-13  7:35 Fam Zheng
  2013-12-13  7:35 ` [Qemu-devel] [PATCH v8 01/12] blkdebug: Use QLIST_FOREACH_SAFE to resume IO Fam Zheng
                   ` (11 more replies)
  0 siblings, 12 replies; 22+ messages in thread
From: Fam Zheng @ 2013-12-13  7:35 UTC (permalink / raw)
  To: qemu-devel; +Cc: kwolf, rjones, armbru, imain, stefanha, pbonzini

This series adds for point-in-time snapshot NBD exporting based on
blockdev-backup (variant of drive-backup with existing device as target).

We get a thin point-in-time snapshot by COW mechanism of drive-backup, and
export it through built in NBD server. The steps are as below:

 1. (SHELL) qemu-img create -f qcow2 BACKUP.qcow2 <source size here>

    (Alternatively we can use -o backing_file=RUNNING-VM.img to omit explicitly
    providing the size by ourselves, but it's risky because RUNNING-VM.qcow2 is
    used r/w by guest. Whether or not setting backing file in the image file
    doesn't matter, as we are going to override the backing hd in the next
    step)

 2. (QMP) blockdev-add backing=source-drive file.driver=file file.filename=BACKUP.qcow2 id=target0 if=none driver=qcow2

    (where source-drive is the running BlockDriverState name for
    RUNNING-VM.img. This patch implements "backing=" option to override
    backing_hd for added drive)

 3. (QMP) blockdev-backup device=source-drive sync=none target=target0

    (this is the QMP command introduced by this series, which use a named
    device as target of drive-backup)

 4. (QMP) nbd-server-add device=target0

When image fleecing done:

 1. (QMP) block-job-cancel device=source-drive

 2. (HMP) drive_del target0

 3. (SHELL) rm BACKUP.qcow2

v8: Address comments from Markus, Kevin and Ian. Thanks for the review!

    Cover letter fixed "block-job-cancel". (Ian)

    Dropped "[v7 07/10] block: Pass error in bdrv_snapshot_create". (Markus)
    Dropped "[v7 08/10] block: Add checks of blocker in block operations". (Markus)
    They are neither necessary for this series nor significant improvements.

    [01/10] qapi: Add BlockOperationType enum
            Since 2.0. (Kevin, Markus)
    [02/10] block: Introduce op_blockers to BlockDriverState
            Commit message reword. (Markus)
            Move bdrv_op_blocker_is_empty() here.
    [03/10] block: Replace in_use with operation blocker
            Moved to the front of series.
            Reword commit message. (Markus)
            Move memcpy in bdrv_move_feature_fields() into 02/10. (Markus)
            Don't drop in_use asserts, convert them. (Markus)
            Drop unused local_err. (Markus)
            Simplify bdrv_op_blocker_is_empty(). (Markus)
            Fix error message for do_drive_del() and dataplane. (Markus)
            Remember to error_free for dataplane op blocker. (Markus)
            Drop whitespace change. (Markus)
            Mechanical convert of in_use for block_job_create().
    [04/10] block: Add bdrv_set_backing_hd()
            New. Separate the common part for setting backing_hd.
    [05/10] block: Add backing_blocker in BlockDriverState
            New.
    [06/10] block: Parse "backing" option to reference existing BDS
            Make use of 04/10.
            We need to delete "backing" from qdict, otherwise QMP complains
            with an supported option, not dropping it. (Markus)
            Move error_free(bs->backing_blocker) in bdrv_close(). (Markus)
            Reword comment for backing_blocker. (Markus)
            03/10 retained the logic of in_use assert, this is no longer true
            since backing_hd has a blocker on it. So drop it. (Markus)
    [07/10] block: Support dropping active in bdrv_drop_intermediate
            Make use of 04/10. (Kevin)
            Pass NULL, NULL instead of empty string to bdrv_change_backing_file. (Kevin)
    [08/10] stream: Use bdrv_drop_intermediate and drop close_unused_images
    [09/10] qmp: Add command 'blockdev-backup'
            Since 1.8 -> Since 2.0.
    [10/10] block: Allow backup on referenced named BlockDriverState

v7: Fix typo in cover letter "ide0-hd0". (Markus)
    Rebase to current qemu.git. (Resolved a few trivial contextual conflict)

v6: Address Paolo's comments, (except for bitmask):
    - Add blocker for all backing_hd references, a relatively big change, some
      patches are reordered.
    - Introduce a few other necessary patches.
    - Move two snapshot checks into bdrv_snapshot_*.

    The interface is unchanged.

Fam Zheng (12):
  blkdebug: Use QLIST_FOREACH_SAFE to resume IO
  qapi: Add BlockOperationType enum
  block: Introduce op_blockers to BlockDriverState
  block: Replace in_use with operation blocker
  block: Move op_blocker check from block_job_create to its caller
  block: Add bdrv_set_backing_hd()
  block: Add backing_blocker in BlockDriverState
  block: Parse "backing" option to reference existing BDS
  block: Support dropping active in bdrv_drop_intermediate
  stream: Use bdrv_drop_intermediate and drop close_unused_images
  qmp: Add command 'blockdev-backup'
  block: Allow backup on referenced named BlockDriverState

 block-migration.c               |   7 +-
 block.c                         | 291 ++++++++++++++++++++++++++--------------
 block/backup.c                  |  21 +++
 block/blkdebug.c                |   8 +-
 block/commit.c                  |   1 +
 block/stream.c                  |  28 +---
 blockdev.c                      |  70 ++++++++--
 blockjob.c                      |  14 +-
 hw/block/dataplane/virtio-blk.c |  18 ++-
 include/block/block.h           |  10 +-
 include/block/block_int.h       |   9 +-
 include/block/blockjob.h        |   3 +
 qapi-schema.json                |  99 ++++++++++++++
 qmp-commands.hx                 |  44 ++++++
 14 files changed, 465 insertions(+), 158 deletions(-)

-- 
1.8.5.1

^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2014-01-08  6:18 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-12-13  7:35 [Qemu-devel] [PATCH v8 00/12] Drop in_use from BlockDriverState and enable point-in-time snapshot exporting over NBD Fam Zheng
2013-12-13  7:35 ` [Qemu-devel] [PATCH v8 01/12] blkdebug: Use QLIST_FOREACH_SAFE to resume IO Fam Zheng
2013-12-13  7:35 ` [Qemu-devel] [PATCH v8 02/12] qapi: Add BlockOperationType enum Fam Zheng
2014-01-03 10:09   ` Stefan Hajnoczi
2014-01-08  2:28     ` Fam Zheng
2014-01-08  3:26       ` Stefan Hajnoczi
2014-01-08  3:31         ` Fam Zheng
2013-12-13  7:35 ` [Qemu-devel] [PATCH v8 03/12] block: Introduce op_blockers to BlockDriverState Fam Zheng
2013-12-13  7:35 ` [Qemu-devel] [PATCH v8 04/12] block: Replace in_use with operation blocker Fam Zheng
2013-12-13  7:35 ` [Qemu-devel] [PATCH v8 05/12] block: Move op_blocker check from block_job_create to its caller Fam Zheng
2013-12-13  7:35 ` [Qemu-devel] [PATCH v8 06/12] block: Add bdrv_set_backing_hd() Fam Zheng
2014-01-03  9:02   ` Stefan Hajnoczi
2013-12-13  7:35 ` [Qemu-devel] [PATCH v8 07/12] block: Add backing_blocker in BlockDriverState Fam Zheng
2014-01-03  9:09   ` Stefan Hajnoczi
2013-12-13  7:35 ` [Qemu-devel] [PATCH v8 08/12] block: Parse "backing" option to reference existing BDS Fam Zheng
2014-01-03  9:19   ` Stefan Hajnoczi
2014-01-08  6:18     ` Fam Zheng
2013-12-13  7:35 ` [Qemu-devel] [PATCH v8 09/12] block: Support dropping active in bdrv_drop_intermediate Fam Zheng
2014-01-03 10:04   ` Stefan Hajnoczi
2013-12-13  7:35 ` [Qemu-devel] [PATCH v8 10/12] stream: Use bdrv_drop_intermediate and drop close_unused_images Fam Zheng
2013-12-13  7:35 ` [Qemu-devel] [PATCH v8 11/12] qmp: Add command 'blockdev-backup' Fam Zheng
2013-12-13  7:35 ` [Qemu-devel] [PATCH v8 12/12] block: Allow backup on referenced named BlockDriverState Fam Zheng

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.