qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v13 00/14] Drop in_use from BlockDriverState and


From: Ian Main
Subject: Re: [Qemu-devel] [PATCH v13 00/14] Drop in_use from BlockDriverState and enable point-in-time snapshot exporting over NBD
Date: Wed, 12 Feb 2014 09:22:29 -0800
User-agent: Mutt/1.5.21 (2010-09-15)

On Wed, Jan 29, 2014 at 01:07:27PM +0800, Fam Zheng wrote:
> 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
> 
> v12 -> v13: Address comments from Stefan.
> 
>     [05/15] block: Add bdrv_set_backing_hd()
>             Remove duplicated assignments.
>             
>     [10/15] qmp: Add command 'blockdev-backup'
>             Add check for source == target.
>             
>     [13/15] block: Add blockdev-backup to transaction
>             New.
>             
>     [14/15] qemu-iotests: Test blockdev-backup in 055
>             New.
>             
>     [15/15] qemu-iotests: Image fleecing test case 081
>             New. Hope this number has no conflict. I have a 080 on my
>             iothrottling test branch.
> 
> v11 -> v12: Rebase to qemu.git.
>      Call bdrv_refresh_limits() in bdrv_set_backing_hd().

I've been using this patch and testing it for the last few weeks and it
all seems to be working very well.  Kevin is waiting on more reviewers for
this rev before it can go in.  Can someone else look through this please?

Tested-by: Ian Main <address@hidden>

 
> 
> 
> Fam Zheng (14):
>   block: Add BlockOpType 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: Add blockdev-backup to transaction
>   qemu-iotests: Test blockdev-backup in 055
>   qemu-iotests: Image fleecing test case 081
> 
>  block-migration.c               |   7 +-
>  block.c                         | 306 
> ++++++++++++++++++++++++++--------------
>  block/backup.c                  |  26 ++++
>  block/commit.c                  |   1 +
>  block/stream.c                  |  30 +---
>  blockdev.c                      | 118 ++++++++++++++--
>  blockjob.c                      |  14 +-
>  hw/block/dataplane/virtio-blk.c |  19 ++-
>  include/block/block.h           |  29 +++-
>  include/block/block_int.h       |   9 +-
>  include/block/blockjob.h        |   3 +
>  qapi-schema.json                |  50 +++++++
>  qmp-commands.hx                 |  44 ++++++
>  tests/qemu-iotests/055          | 275 ++++++++++++++++++++++++++++++------
>  tests/qemu-iotests/055.out      |   4 +-
>  tests/qemu-iotests/081          |  99 +++++++++++++
>  tests/qemu-iotests/081.out      |   5 +
>  tests/qemu-iotests/group        |   1 +
>  18 files changed, 836 insertions(+), 204 deletions(-)
>  create mode 100755 tests/qemu-iotests/081
>  create mode 100644 tests/qemu-iotests/081.out
> 
> -- 
> 1.8.5.3
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]