From: John Snow <jsnow@redhat.com>
To: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>,
Eric Blake <eblake@redhat.com>,
qemu-devel <qemu-devel@nongnu.org>,
qemu block <qemu-block@nongnu.org>
Cc: Kevin Wolf <kwolf@redhat.com>, Fam Zheng <famz@redhat.com>,
Max Reitz <mreitz@redhat.com>,
Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>,
Stefan Hajnoczi <stefanha@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
"Denis V. Lunev" <den@openvz.org>
Subject: Re: [Qemu-devel] qcow2 autoloading bitmaps
Date: Mon, 15 Jan 2018 16:26:55 -0500 [thread overview]
Message-ID: <e5e834f9-5482-addc-0e45-00b39186e92f@redhat.com> (raw)
In-Reply-To: <6a2d73cc-5042-54c8-364d-18d273547f27@virtuozzo.com>
On 01/11/2018 10:15 AM, Vladimir Sementsov-Ogievskiy wrote:
> 11.01.2018 17:43, Eric Blake wrote:
>> On 01/11/2018 08:26 AM, Vladimir Sementsov-Ogievskiy wrote:
>>
>>> # @autoload: the bitmap will be automatically loaded when the image it
>>> is stored
>>> # in is opened. This flag may only be specified for persistent
>>> # bitmaps. Default is false for block-dirty-bitmap-add.
>>> (Since: 2.10)
>>>
>>> so, if we consider only enabled bitmaps it is ok to direct map autoload
>>> <=> auto.
>>>
>>> But now we've faced into necessity of load/store disabled bitmaps.
>>>
>>> Current behavior is definitely wrong: user sets autoload flag for
>>> disabled bitmap, but on next
>>> Qemu start the bitmap will be autoloaded and enabled.
>> Can we make it an error to set autoload to true when requesting a
>> disabled bitmap? Or can we not even request a disabled bitmap?
>
> currently, autoload is set on bitmap creation, so it is always enabled
> at this time.
>
>>
>>>
>>> Proposed solution:
>>> - deprecate @autoload flag for bitmap creation, ignore it
>> Is there ever a case where you'd create an enabled persistent
>> dirty-tracking bitmap, but not want it to be re-enabled the next time
>> the image is created?
>
> looks like we do not. For now we use only persistent+autoload.
>
>> Your argument for ignoring/deleting the parameter
>> is that you can decide whether to set the "auto" flag solely based on
>> whether the bitmap is both persistent and enabled, without needing any
>> additional user input?
>
> The main point is that, when we want to load/store disabled bitmaps this
> parameter is confusing: In user's point of view it's ok to have autoloading
> disabled bitmap, which he wants to be autoloaded and disabled on next Qemu
> start. So, to maintain this flag (autoload) for disabled bitmaps, we
> will need
> to add some additional flag "disabled" to Qcow2 spec, to make it possible to
> have "auto" but "disabled" bitmaps. And we will have to change qcow2 "auto"
> specification, to consider "disabled" bit set in parallel. But all this
> looks
> superfluous for now. We already have type "dirty tracking bitmaps" in qcow2
> spec for dirty bitmaps. So, for now, "auto" flag set on "dirty tracking
> bitmaps" means that it is enabled. It is logical to assume that all other
> "dirty tracking bitmaps" are disabled.
>
Oh, so you want to be able to "autoload" a disabled bitmap, is that right?
Is it important to distinguish these two cases?
(1) A bitmap is saved to the qcow2, but autoload is set to false
(2) A bitmap is saved to the qcow2, autoload is true, but a (new)
disabled bit is set.
Is it okay, basically, to always autoload bitmaps in a disabled state?
Is it imperative we add the new bit?
(Genuinely asking. I'm not sure.)
> On the other hand, "autoloading" is a bad property for disabled bitmap
> at all.
> Disabled bitmap is simpler than enabled (or "auto") bitmap, it doesn't
> require
> any care like "auto" bitmap. So, it is more natural to let Qemu decide
> to load
> or not any disabled bitmaps.
>
If we don't autoload the disabled ones, I imagine you'll eventually want
some way to manually load them into memory to manipulate them for
various reasons.
>
>
>>
>>> - save persistent enabled bitmaps with "auto" flag
>>> - save persistent disabled bitmaps without "auto" flag
>>> - on Qemu start load all bitmaps, mapping "auto" flag state to
>>> "enabled" state.
>> So if I follow the argument, the state of the 'auto' flag stored into
>> the file on BDS close (often at qemu exit) is based on whether the
>> bitmap was currently enabled, and the user can then control whether to
>> enable/disable the bitmap on the fly to control whether the 'auto' flag
>> is stored; thus, having the flag at creation time is redundant.
>
> Yes.
>
>>
>>>
>>> Note: we may store a lot of disabled bitmaps in qcow2 image, but loading
>>> them all into RAM may be
>>> inefficient. Actually such bitmap will be needed only on demand (for
>>> export through nbd or
>>> making some kind of backup). So in future it may be optimized by "lazy
>>> load" of disabled bitmaps,
>>> postponing their actual load up to first read or enabling. This
>>> optimization doesn't need changing
>>> of qapi or qcow2 format (at first sight).
>>>
>>>
>>> Note2: now there is no way to disable/enable bitmaps, but there is a
>>> [PATCH for-2.12 0/4] qmp dirty bitmap API
>>> with big conversation, but I hope, I'll post a new version with a small
>>> fix soon and it will be merged.
>> In other words, you can incorporate your QAPI tweaks proposed here into
>> your respin of that series.
>>
>
> right idea, I'll do so, just wait a bit for others to comment here.
>
Stay tuned...
> --
> Best regards,
> Vladimir
>
next prev parent reply other threads:[~2018-01-15 21:27 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-11 14:26 [Qemu-devel] qcow2 autoloading bitmaps Vladimir Sementsov-Ogievskiy
2018-01-11 14:43 ` Eric Blake
2018-01-11 15:15 ` Vladimir Sementsov-Ogievskiy
2018-01-15 21:26 ` John Snow [this message]
2018-01-16 8:14 ` Vladimir Sementsov-Ogievskiy
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=e5e834f9-5482-addc-0e45-00b39186e92f@redhat.com \
--to=jsnow@redhat.com \
--cc=den@openvz.org \
--cc=eblake@redhat.com \
--cc=famz@redhat.com \
--cc=kwolf@redhat.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 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).