From: Fam Zheng <famz@redhat.com>
To: Stefan Hajnoczi <stefanha@gmail.com>
Cc: kwolf@redhat.com, hbrock@redhat.com, qemu-devel@nongnu.org,
rjones@redhat.com, imain@redhat.com, stefanha@redhat.com,
pbonzini@redhat.com
Subject: Re: [Qemu-devel] [PATCH v4 0/7] Drop in_use from BlockDriverState and enable point-in-time snapshot exporting over NBD
Date: Sat, 23 Nov 2013 19:33:49 +0800 [thread overview]
Message-ID: <20131123113349.GA16864@T430s.redhat.com> (raw)
In-Reply-To: <20131122165834.GE3232@stefanha-thinkpad.redhat.com>
On Fri, 11/22 17:58, Stefan Hajnoczi wrote:
> On Fri, Nov 22, 2013 at 01:24:47PM +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 ide0-hd0 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-complete device=ide0-hd0
> >
> > 2. (HMP) drive_del target0
> >
> > 3. (SHELL) rm BACKUP.qcow2
>
> Interesting implementation, it looks pretty good. I'll need to review it a
> second time to track all the operation block/unblocks. It wasn't immediately
> clear to me whether these patches will restrict something that used to work.
>
Good question, I asked myself too. :)
In some point in the middle of the series it should be theoretically the same
as before. But I did add some more blocker checks, E.g. NBD is blocked if
there's a block job, but starting nbd add doesn't add blocker. So we can
nbd_server_add then start block job, but not in the other order. This is kind
of weird. I will also look back again.
I think another option is a compatibility matrix, to simplify the blocker
interface to bdrv_op_try_start(bs, op) + bdrv_op_end(bs, op): We get less
flexibility, but don't need dynanically allocated blocker from caller. The
advantage is that it's more centralized logic, so it's easy to manage.
Fam
next prev parent reply other threads:[~2013-11-23 11:34 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-22 5:24 [Qemu-devel] [PATCH v4 0/7] Drop in_use from BlockDriverState and enable point-in-time snapshot exporting over NBD Fam Zheng
2013-11-22 5:24 ` [Qemu-devel] [PATCH v4 1/7] qapi: Add BlockOperationType enum Fam Zheng
2013-11-22 20:25 ` Eric Blake
2013-11-25 11:26 ` Kevin Wolf
2013-11-26 1:58 ` Fam Zheng
2013-11-22 5:24 ` [Qemu-devel] [PATCH v4 2/7] block: Introduce op_blockers to BlockDriverState Fam Zheng
2013-11-22 16:20 ` Stefan Hajnoczi
2013-11-25 10:07 ` Kevin Wolf
2013-11-25 10:30 ` Kevin Wolf
2013-11-25 17:13 ` Paolo Bonzini
2013-11-26 2:07 ` Fam Zheng
2013-11-26 9:22 ` Paolo Bonzini
2013-11-26 10:19 ` Fam Zheng
2013-11-26 10:25 ` Paolo Bonzini
2013-11-26 10:31 ` Fam Zheng
2013-11-26 10:41 ` Paolo Bonzini
2013-11-26 11:05 ` Fam Zheng
2013-11-22 5:24 ` [Qemu-devel] [PATCH v4 3/7] block: Replace in_use with operation blocker Fam Zheng
2013-11-25 17:11 ` Paolo Bonzini
2013-11-26 2:18 ` Fam Zheng
2013-11-22 5:24 ` [Qemu-devel] [PATCH v4 4/7] block: Add checks of blocker in block operations Fam Zheng
2013-11-25 17:15 ` Paolo Bonzini
2013-11-26 2:10 ` Fam Zheng
2013-11-22 5:24 ` [Qemu-devel] [PATCH v4 5/7] block: Parse "backing" option to reference existing BDS Fam Zheng
2013-11-25 11:10 ` Kevin Wolf
2013-11-22 5:24 ` [Qemu-devel] [PATCH v4 6/7] qmp: add command 'blockdev-backup' Fam Zheng
2013-11-22 20:46 ` Eric Blake
2013-11-25 11:17 ` Kevin Wolf
2013-11-22 5:24 ` [Qemu-devel] [PATCH v4 7/7] block: Allow backup on referenced named BlockDriverState Fam Zheng
2013-11-25 11:23 ` Kevin Wolf
2013-11-26 3:06 ` Fam Zheng
2013-11-26 11:02 ` Kevin Wolf
2013-11-22 16:58 ` [Qemu-devel] [PATCH v4 0/7] Drop in_use from BlockDriverState and enable point-in-time snapshot exporting over NBD Stefan Hajnoczi
2013-11-23 11:33 ` Fam Zheng [this message]
2013-11-25 9:29 ` Kevin Wolf
2013-11-25 16:48 ` Stefan Hajnoczi
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=20131123113349.GA16864@T430s.redhat.com \
--to=famz@redhat.com \
--cc=hbrock@redhat.com \
--cc=imain@redhat.com \
--cc=kwolf@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rjones@redhat.com \
--cc=stefanha@gmail.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).