qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
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

             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).