From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
To: qemu-devel <qemu-devel@nongnu.org>, qemu block <qemu-block@nongnu.org>
Cc: "Denis V. Lunev" <den@openvz.org>, Max Reitz <mreitz@redhat.com>,
Kevin Wolf <kwolf@redhat.com>, John Snow <jsnow@redhat.com>,
Fam Zheng <famz@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>,
Stefan Hajnoczi <stefanha@redhat.com>,
Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
Subject: [Qemu-devel] qcow2 autoloading bitmaps
Date: Thu, 11 Jan 2018 17:26:52 +0300 [thread overview]
Message-ID: <76a29a1e-7fdb-37a8-9f79-df618d385b05@virtuozzo.com> (raw)
Hi all!
I've just noted that there is an unfortunate contradiction between qcow2
spec and qapi.
In qcow2 we have:
1: auto
The bitmap must reflect all changes of the virtual
disk by any application that would write to this qcow2
file (including writes, snapshot switching, etc.). The
type of this bitmap must be 'dirty tracking bitmap'.
so auto means enabled bitmaps, which must track dirtiness. It's logical
to auto-load them
on Qemu start and make them enabled dirty bitmaps.
In Qapi we have:
# @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.
Proposed solution:
- deprecate @autoload flag for bitmap creation, ignore it
- 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.
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.
--
Best regards,
Vladimir
next reply other threads:[~2018-01-11 14:27 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-11 14:26 Vladimir Sementsov-Ogievskiy [this message]
2018-01-11 14:43 ` [Qemu-devel] qcow2 autoloading bitmaps Eric Blake
2018-01-11 15:15 ` Vladimir Sementsov-Ogievskiy
2018-01-15 21:26 ` John Snow
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=76a29a1e-7fdb-37a8-9f79-df618d385b05@virtuozzo.com \
--to=vsementsov@virtuozzo.com \
--cc=den@openvz.org \
--cc=famz@redhat.com \
--cc=jsnow@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 \
/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).