From: Kevin Wolf <kwolf@redhat.com>
To: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Cc: "Denis V. Lunev" <den@openvz.org>, John Snow <jsnow@redhat.com>,
qemu-devel@nongnu.org, qemu-block@nongnu.org, famz@redhat.com,
armbru@redhat.com, mnestratov@virtuozzo.com, mreitz@redhat.com,
nshirokovskiy@virtuozzo.com, stefanha@redhat.com,
pbonzini@redhat.com
Subject: Re: [Qemu-devel] [PATCH for-2.12 0/4] qmp dirty bitmap API
Date: Mon, 27 Nov 2017 13:04:28 +0100 [thread overview]
Message-ID: <20171127120428.GD4903@localhost.localdomain> (raw)
In-Reply-To: <eafb7aee-d378-420e-6405-1a863b317723@virtuozzo.com>
Am 24.11.2017 um 16:01 hat Vladimir Sementsov-Ogievskiy geschrieben:
> John, Kevin, do we reach a consensus? Can we go on with this?
I don't know the details of this, so I can't really offer a strong
opinion. I gave a high-level perspective of what we're doing in other
places and that's all I was planning to contribute at the moment. So I'm
deferring this to John.
If you guys can't find a decision or are uncertain about the approach,
please let me know and I can try to find the time to actually get into
the details and provide some more in-depth feedback.
Kevin
> 20.11.2017 19:00, Denis V. Lunev wrote:
> > On 11/17/2017 06:10 AM, John Snow wrote:
> > > On 11/16/2017 03:17 AM, Vladimir Sementsov-Ogievskiy wrote:
> > > > 16.11.2017 00:20, John Snow wrote:
> > > > > On 11/13/2017 11:20 AM, Vladimir Sementsov-Ogievskiy wrote:
> > > > > > Hi all.
> > > > > >
> > > > > > There are three qmp commands, needed to implement external backup API.
> > > > > >
> > > > > > Using these three commands, client may do all needed bitmap
> > > > > > management by
> > > > > > hand:
> > > > > >
> > > > > > on backup start we need to do a transaction:
> > > > > > {disable old bitmap, create new bitmap}
> > > > > >
> > > > > > on backup success:
> > > > > > drop old bitmap
> > > > > >
> > > > > > on backup fail:
> > > > > > enable old bitmap
> > > > > > merge new bitmap to old bitmap
> > > > > > drop new bitmap
> > > > > >
> > > > > Can you give me an example of how you expect these commands to be used,
> > > > > and why they're required?
> > > > >
> > > > > I'm a little weary about how error-prone these commands might be and the
> > > > > potential for incorrect usage seems... high. Why do we require them?
> > > > It is needed for incremental backup. It looks like bad idea to export
> > > > abdicate/reclaim functionality, it is simpler
> > > > and clearer to allow user to merge/enable/disable bitmaps by hand.
> > > >
> > > > usage is like this:
> > > >
> > > > 1. we have dirty bitmap bitmap0 for incremental backup.
> > > >
> > > > 2. prepare image fleecing (create temporary image with backing=our_disk)
> > > > 3. in qmp transaction:
> > > > - disable bitmap0
> > > > - create bitmap1
> > > > - start image fleecing (backup sync=none our_disk -> temp_disk)
> > > This could probably just be its own command, though:
> > >
> > > block-job-fleece node=foobar bitmap=bitmap0 etc=etera etc=etera
> > >
> > > Could handle forking the bitmap. I'm not sure what the arguments would
> > > look like, but we could name the NBD export here, too. (Assuming the
> > > server is already started and we just need to create the share.)
> > >
> > > Then, we can basically do what mirror does:
> > >
> > > (1) Cancel
> > > (2) Complete
> > >
> > > Cancel would instruct QEMU to keep the bitmap changes (i.e. roll back),
> > > and Complete would instruct QEMU to discard the changes.
> > >
> > > This way we don't need to expose commands like split or merge that will
> > > almost always be dangerous to use over QMP.
> > >
> > > In fact, a fleecing job would be really convenient even without a
> > > bitmap, because it'd still be nice to have a convenience command for it.
> > > Using an existing infrastructure and understood paradigm is just a bonus.
> > >
> > actually this is a very good question about safety/simplicity...
> >
> > We actually have spent a bit of time on design and have not
> > come to a good solution. Yes, technically for now we can put
> > all into fleecing command and rely on its semantics. Though
> > I am not convinced with that approach. We can think that this
> > can be reused on snapshot operations (may be, may be not).
> > Also technically there are other cases.
> >
> > This is actually a matter that QEMU should provide low level
> > API while management software should make decisions.
> > Providing merge etc operations is done using exactly that
> > approach. We can also consider this in a similar way we have
> > recently fixed "revert to snapshot" operation. Management
> > can make and should make a decision.
> >
> > Den
> >
>
>
> --
> Best regards,
> Vladimir
>
next prev parent reply other threads:[~2017-11-27 12:05 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-13 16:20 [Qemu-devel] [PATCH for-2.12 0/4] qmp dirty bitmap API Vladimir Sementsov-Ogievskiy
2017-11-13 16:20 ` [Qemu-devel] [PATCH 1/4] block/dirty-bitmap: add lock to bdrv_enable/disable_dirty_bitmap Vladimir Sementsov-Ogievskiy
2017-11-13 17:50 ` [Qemu-devel] [PATCH 1/4 for-2.11?] " Eric Blake
2017-11-16 7:56 ` Vladimir Sementsov-Ogievskiy
2017-11-16 7:59 ` Vladimir Sementsov-Ogievskiy
2017-11-13 16:20 ` [Qemu-devel] [PATCH 2/4] qapi: add block-dirty-bitmap-enable/disable Vladimir Sementsov-Ogievskiy
2017-11-13 16:20 ` [Qemu-devel] [PATCH 3/4] qmp: transaction support for block-dirty-bitmap-enable/disable Vladimir Sementsov-Ogievskiy
2017-11-13 16:20 ` [Qemu-devel] [PATCH 4/4] qapi: add block-dirty-bitmap-merge Vladimir Sementsov-Ogievskiy
2017-12-26 8:41 ` Vladimir Sementsov-Ogievskiy
2017-11-15 21:20 ` [Qemu-devel] [PATCH for-2.12 0/4] qmp dirty bitmap API John Snow
2017-11-16 8:17 ` Vladimir Sementsov-Ogievskiy
2017-11-17 3:10 ` John Snow
2017-11-17 8:22 ` Vladimir Sementsov-Ogievskiy
2017-11-17 21:35 ` John Snow
2017-11-21 17:23 ` Kevin Wolf
2017-11-22 0:10 ` John Snow
2017-11-22 8:40 ` Vladimir Sementsov-Ogievskiy
2017-12-07 11:56 ` [Qemu-devel] [Qemu-block] " Kashyap Chamarthy
2017-12-07 17:33 ` Kevin Wolf
2017-12-08 9:35 ` Kashyap Chamarthy
2017-12-07 22:47 ` John Snow
2017-12-08 14:24 ` Max Reitz
2017-11-30 12:10 ` [Qemu-devel] " Vladimir Sementsov-Ogievskiy
2017-12-07 0:38 ` John Snow
2017-12-07 9:39 ` Vladimir Sementsov-Ogievskiy
2017-12-09 0:57 ` John Snow
2017-12-11 9:14 ` Denis V. Lunev
2017-12-11 11:15 ` Kevin Wolf
2017-12-11 12:18 ` Vladimir Sementsov-Ogievskiy
2017-12-12 22:15 ` John Snow
2017-12-11 18:40 ` John Snow
2017-12-12 11:16 ` Kevin Wolf
2017-11-20 16:00 ` Denis V. Lunev
2017-11-24 15:01 ` Vladimir Sementsov-Ogievskiy
2017-11-27 12:04 ` Kevin Wolf [this message]
2017-12-13 4:12 ` Fam Zheng
2017-12-19 16:07 ` Vladimir Sementsov-Ogievskiy
2017-12-20 1:06 ` John Snow
2017-12-20 8:05 ` Nikolay Shirokovskiy
2017-12-20 8:20 ` Vladimir Sementsov-Ogievskiy
2017-12-20 10:29 ` Kirill Korotaev
2017-12-26 7:07 ` Fam Zheng
2017-12-26 8:57 ` Vladimir Sementsov-Ogievskiy
2017-12-26 9:45 ` Fam Zheng
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=20171127120428.GD4903@localhost.localdomain \
--to=kwolf@redhat.com \
--cc=armbru@redhat.com \
--cc=den@openvz.org \
--cc=famz@redhat.com \
--cc=jsnow@redhat.com \
--cc=mnestratov@virtuozzo.com \
--cc=mreitz@redhat.com \
--cc=nshirokovskiy@virtuozzo.com \
--cc=pbonzini@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
--cc=vsementsov@virtuozzo.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 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.