From: Ian Main <imain@redhat.com>
To: Fam Zheng <famz@redhat.com>
Cc: kwolf@redhat.com, armbru@redhat.com, qemu-devel@nongnu.org,
rjones@redhat.com, stefanha@redhat.com, pbonzini@redhat.com
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 [thread overview]
Message-ID: <20140212172228.GA1735@gate.mains.priv> (raw)
In-Reply-To: <1390972061-26560-1-git-send-email-famz@redhat.com>
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 <imain@redhat.com>
>
>
> 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
>
next prev parent reply other threads:[~2014-02-12 17:22 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-29 5:07 [Qemu-devel] [PATCH v13 00/14] Drop in_use from BlockDriverState and enable point-in-time snapshot exporting over NBD Fam Zheng
2014-01-29 5:07 ` [Qemu-devel] [PATCH v13 01/14] block: Add BlockOpType enum Fam Zheng
2014-01-29 5:07 ` [Qemu-devel] [PATCH v13 02/14] block: Introduce op_blockers to BlockDriverState Fam Zheng
2014-02-13 12:24 ` Benoît Canet
2014-02-17 13:30 ` Fam Zheng
2014-02-13 12:37 ` Benoît Canet
2014-02-17 13:30 ` Fam Zheng
2014-01-29 5:07 ` [Qemu-devel] [PATCH v13 03/14] block: Replace in_use with operation blocker Fam Zheng
2014-02-13 12:34 ` Benoît Canet
2014-02-17 13:21 ` Fam Zheng
2014-01-29 5:07 ` [Qemu-devel] [PATCH v13 04/14] block: Move op_blocker check from block_job_create to its caller Fam Zheng
2014-01-29 5:07 ` [Qemu-devel] [PATCH v13 05/14] block: Add bdrv_set_backing_hd() Fam Zheng
2014-02-13 12:49 ` Benoît Canet
2014-02-17 13:31 ` Fam Zheng
2014-01-29 5:07 ` [Qemu-devel] [PATCH v13 06/14] block: Add backing_blocker in BlockDriverState Fam Zheng
2014-01-29 5:07 ` [Qemu-devel] [PATCH v13 07/14] block: Parse "backing" option to reference existing BDS Fam Zheng
2014-02-13 13:17 ` Benoît Canet
2014-01-29 5:07 ` [Qemu-devel] [PATCH v13 08/14] block: Support dropping active in bdrv_drop_intermediate Fam Zheng
2014-01-29 5:07 ` [Qemu-devel] [PATCH v13 09/14] stream: Use bdrv_drop_intermediate and drop close_unused_images Fam Zheng
2014-01-29 5:07 ` [Qemu-devel] [PATCH v13 10/14] qmp: Add command 'blockdev-backup' Fam Zheng
2014-02-13 13:48 ` Benoît Canet
2014-02-17 13:32 ` Fam Zheng
2014-02-17 14:23 ` Benoît Canet
2014-01-29 5:07 ` [Qemu-devel] [PATCH v13 11/14] block: Allow backup on referenced named BlockDriverState Fam Zheng
2014-01-29 5:07 ` [Qemu-devel] [PATCH v13 12/14] block: Add blockdev-backup to transaction Fam Zheng
2014-01-29 5:07 ` [Qemu-devel] [PATCH v13 13/14] qemu-iotests: Test blockdev-backup in 055 Fam Zheng
2014-01-29 5:07 ` [Qemu-devel] [PATCH v13 14/14] qemu-iotests: Image fleecing test case 081 Fam Zheng
2014-02-01 3:00 ` [Qemu-devel] [PATCH v13 00/14] Drop in_use from BlockDriverState and enable point-in-time snapshot exporting over NBD Ian Main
2014-02-01 15:21 ` Fam Zheng
2014-02-02 1:13 ` Ian Main
2014-02-12 17:22 ` Ian Main [this message]
2014-02-12 18:27 ` Richard W.M. Jones
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=20140212172228.GA1735@gate.mains.priv \
--to=imain@redhat.com \
--cc=armbru@redhat.com \
--cc=famz@redhat.com \
--cc=kwolf@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rjones@redhat.com \
--cc=stefanha@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).