From: Kevin Wolf <kwolf@redhat.com>
To: Darren Kenny <darren.kenny@oracle.com>
Cc: qemu-devel@nongnu.org, qemu-block@nongnu.org
Subject: Re: [Qemu-devel] [Qemu-block] Q: Report of leaked clusters with qcow2 when disk is resized with a live VM
Date: Wed, 13 Sep 2017 16:07:18 +0200 [thread overview]
Message-ID: <20170913140717.GC5319@localhost.localdomain> (raw)
In-Reply-To: <59B93376.1070108@oracle.com>
Am 13.09.2017 um 15:32 hat Darren Kenny geschrieben:
> Hi Kevin,
>
> Thanks for getting back to me so quickly.
>
> Kevin Wolf wrote:
> > Am 13.09.2017 um 14:00 hat Darren Kenny geschrieben:
> > > [Cross-posted from qemu-devel, meant to send here first]
> >
> > Just keep both lists in the CC for the same email.
>
> Will do.
> > There is an issue here, which is that you are accessing the image at the
> > same time from two separate processes. qemu is using writeback caches in
> > order to improve performance, so only after the guest has issued a flush
> > command to its disk or after you shut down or at least pause qemu, the
> > changes are fully written to the image file. In qemu 2.10, you would
> > probably see this instead: $ qemu-img check ./test.qcow2 qemu-img: Could
> > not open './test.qcow2': Failed to get shared "write" lock Is another
> > process using the image? This lock can be overridden, but at least it
> > shows clearly that you are doing something that you probably shouldn't
> > be doing.
>
> Hmm, I've just updated to the HEAD of the Git repo, and I didn't see this
> locking behaviour, it still did the same thing as before.
>
> Does the disk need to be formatted/mounted before it's seen as locked?
> Or even a configure option?
>
> The version that have is:
>
> $ qemu-img --version
> qemu-img version 2.10.50 (v2.10.0-476-g04ef330)
> Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers
>
> $ qemu-system-x86_64 --version
> QEMU emulator version 2.10.50 (v2.10.0-476-g04ef330)
> Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers
>
> The last commit I have is (as in the version string):
>
> 04ef330 tcg/tci: do not use ldst label (never implemented)
This should have the locking code. It only works with relatively new
Linux kernels, though (it needs F_OFD_SETLK support). If you don't have
that, no locking is used even in qemu 2.10.
You could try enforcing some locking by adding file.locking=on to your
-drive option. If you're running an old kernel, this should print a
warning message (and use some less safe locking variant).
> > Doing a flush here wouldn't be wrong, but it's also unnecessary and
> > would slow down the operation a bit.
> Sure, but how often does a resize/truncate get done? Would seem like a
> small impact to do it - but I agree w.r.t. the single-process access
> as a better solution.
The thing is, truncate isn't the only operation that will lead to
qemu-img check reporting failure. Any cluster allocation in the image
can cause the same symptom, and there it is actually very important for
performance that we use the cache and do a batched write only later.
So changing truncate so that this specific operation looks as if
accessing the image from a second process were okay wouldn't actually
make a big difference for the overall state. Maybe it's in fact better
to have such attempts fail consistently.
Kevin
next prev parent reply other threads:[~2017-09-13 14:07 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-13 11:48 [Qemu-devel] Q: Report of leaked clusters with qcow2 when disk is resized with a live VM Darren Kenny
[not found] ` <59B91DCA.5080405@oracle.com>
2017-09-13 12:20 ` [Qemu-devel] [Qemu-block] " Kevin Wolf
2017-09-13 13:32 ` Darren Kenny
2017-09-13 14:07 ` Kevin Wolf [this message]
2017-09-13 15:33 ` Darren Kenny
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=20170913140717.GC5319@localhost.localdomain \
--to=kwolf@redhat.com \
--cc=darren.kenny@oracle.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/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).