From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43452) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WDdWC-00021Z-SM for qemu-devel@nongnu.org; Wed, 12 Feb 2014 12:22:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WDdW6-0003rz-NZ for qemu-devel@nongnu.org; Wed, 12 Feb 2014 12:22:40 -0500 Received: from mx1.redhat.com ([209.132.183.28]:31927) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WDdW6-0003qv-FL for qemu-devel@nongnu.org; Wed, 12 Feb 2014 12:22:34 -0500 Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1CHMWCP032655 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 12 Feb 2014 12:22:33 -0500 Date: Wed, 12 Feb 2014 09:22:29 -0800 From: Ian Main Message-ID: <20140212172228.GA1735@gate.mains.priv> References: <1390972061-26560-1-git-send-email-famz@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1390972061-26560-1-git-send-email-famz@redhat.com> Subject: Re: [Qemu-devel] [PATCH v13 00/14] Drop in_use from BlockDriverState and enable point-in-time snapshot exporting over NBD List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Fam Zheng Cc: kwolf@redhat.com, armbru@redhat.com, qemu-devel@nongnu.org, rjones@redhat.com, stefanha@redhat.com, pbonzini@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 > > (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 > > > 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 >