All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Snow <jsnow@redhat.com>
To: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>,
	Fam Zheng <famz@redhat.com>
Cc: qemu-devel@nongnu.org, qemu-block@nongnu.org, kwolf@redhat.com,
	armbru@redhat.com, mnestratov@virtuozzo.com, mreitz@redhat.com,
	nshirokovskiy@virtuozzo.com, stefanha@redhat.com, den@openvz.org,
	pbonzini@redhat.com, dev@acronis.com
Subject: Re: [Qemu-devel] [PATCH for-2.12 0/4] qmp dirty bitmap API
Date: Tue, 19 Dec 2017 20:06:24 -0500	[thread overview]
Message-ID: <696c198b-e3d8-fab6-0128-de9ed34e4cff@redhat.com> (raw)
In-Reply-To: <af98ffe7-71fb-0493-c4da-4b77a4c453f5@virtuozzo.com>



On 12/19/2017 11:07 AM, Vladimir Sementsov-Ogievskiy wrote:
> 13.12.2017 07:12, Fam Zheng wrote:
>> On Mon, 11/13 19:20, 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
>>>
>>> Question: it may be better to make one command instead of two:
>>> block-dirty-bitmap-set-enabled(bool enabled)
>>>
>>> Vladimir Sementsov-Ogievskiy (4):
>>>    block/dirty-bitmap: add lock to bdrv_enable/disable_dirty_bitmap
>>>    qapi: add block-dirty-bitmap-enable/disable
>>>    qmp: transaction support for block-dirty-bitmap-enable/disable
>>>    qapi: add block-dirty-bitmap-merge
>>>
>>>   qapi/block-core.json         |  80 +++++++++++++++++++++++
>>>   qapi/transaction.json        |   4 ++
>>>   include/block/dirty-bitmap.h |   2 +
>>>   block/dirty-bitmap.c         |  21 ++++++
>>>   blockdev.c                   | 151
>>> +++++++++++++++++++++++++++++++++++++++++++
>>>   5 files changed, 258 insertions(+)
>>>
>> I think tests are required to merge new features/commands.  Can we
>> include tests
>> on these new code please?  We should cover error handling, and also
>> write tests
>> that demonstrate the intended real world use cases.
>>
>> Also should we add new sections to docs/interop/bitmaps.rst?
>>
>> Meta: John started a long discussion about the API design but I think
>> after all
>> it turns out exposing dirty bitmap objects and the primitives is a
>> reasonable
>> approach to implement incremental backup functionalities. The comment
>> I have is
>> that we should ensure we have also reviewed it from a higher level
>> (e.g. all the
>> potential user requirements) to make sure this low level API is both
>> sound and
>> flexible. We shouldn't introduce a minimal set of low level commands
>> just to
>> support one particular use case, but look a bit further and broader
>> and come up
>> with a more complete design? Writing docs and tests might force us to
>> think in
>> this direction, which I think is a good thing to have for this series,
>> too.
>>
>> Fam
> 
> Nikolay, please describe what do you plan in libvirt over qmp bitmap API.
> 
> Kirill, what do you think about this all?
> 
> (brief history:
> we are considering 3 new qmp commands for bitmap management, needed for
> external incremental backup support
>  - enable (bitmap will track disk changes)
>  - disable (bitmap will stop tracking changes)
>  - merge (merge bitmap A to bitmap B)
> )
> 

Yeah, it would be helpful to know what the full workflow for the API
will be ... before I get ahead of myself again (sorry) ...

but I'd like to see a quick writeup of your vision for the pull-mode
backups (which I assume this is for, right?) from start-to-finish, like
a mockup of annotated QMP output or something.

Nothing fancy, just something that lets me orient where we're headed,
since you're doing most of the work and I just want to get out of your
way, but having a roadmap helps me do that.

--js

  reply	other threads:[~2017-12-20  1:06 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
2017-12-13  4:12 ` Fam Zheng
2017-12-19 16:07   ` Vladimir Sementsov-Ogievskiy
2017-12-20  1:06     ` John Snow [this message]
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=696c198b-e3d8-fab6-0128-de9ed34e4cff@redhat.com \
    --to=jsnow@redhat.com \
    --cc=armbru@redhat.com \
    --cc=den@openvz.org \
    --cc=dev@acronis.com \
    --cc=famz@redhat.com \
    --cc=kwolf@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.