From: Avi Kivity <avi@qumranet.com>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] qcow2 - safe on kill? safe on power fail?
Date: Tue, 22 Jul 2008 09:06:02 +0300 [thread overview]
Message-ID: <488578CA.4000402@qumranet.com> (raw)
In-Reply-To: <48850A5A.3070106@codemonkey.ws>
Anthony Liguori wrote:
> Jamie Lokier wrote:
>>> If the sector hasn't been previously allocated, then a new sector in
>>> the file needs to be allocated. This is going to change metadata
>>> within the QCOW2 file and this is where it is possible to corrupt a
>>> disk image. The operation of allocating a new disk sector is
>>> completely synchronous so no other code runs until this completes.
>>> Once the disk sector is allocated, you're safe again[1].
>>>
>>
>> My main concern is corruption of the QCOW2 sector allocation map, and
>> subsequently QEMU/KVM breaking or going wildly haywire with that file.
>>
>> With a normal filesystem, sure, there are lots of ways to get
>> corruption when certain events happen. But you don't lose the _whole_
>> filesystem.
>>
>
> Sure you can. If you don't have a battery backed disk cache and are
> using write-back (which is usually the default), you can definitely
> get corruption of the journal. Likewise, under the right scenarios,
> you will get journal corruption with the default mount options of ext3
> because it doesn't use barriers.
>
What about SCSI or SATA NCQ? On these, barriers don't impact
performance greatly.
> This is very hard to see happen in practice though because these
> windows are very small--just like with QEMU.
>
The exposure window with qemu is not small. It's as large as the page
cache of the host.
>
>
>>> you are running QEMU with cache=off to disable host write caching.
>>
>> Doesn't that use O_DIRECT? O_DIRECT writes don't use barriers, and
>> fsync() does not deterministically issue a disk barrier if there's no
>> metadata change, so O_DIRECT writes are _less_ safe with disks which
>> have write-cache enabled than using normal writes.
>>
>
> It depends on the filesystem. ext3 never issues any barriers by
> default :-)
>
> I would think a good filesystem would issue a barrier after an
> O_DIRECT write.
>
Using a disk controller that supports queueing means that you can (in
theory at least) leave writeback turned on and yet have the disk not lie
to you about completions.
--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.
next prev parent reply other threads:[~2008-07-22 6:06 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-05 21:18 [Qemu-devel] Signal handling and qcow2 image corruption David Barrett
2008-03-05 21:55 ` Anthony Liguori
2008-03-05 23:48 ` David Barrett
2008-03-06 6:57 ` Avi Kivity
2008-07-21 18:10 ` [Qemu-devel] qcow2 - safe on kill? safe on power fail? Jamie Lokier
2008-07-21 19:43 ` Anthony Liguori
2008-07-21 21:26 ` Jamie Lokier
2008-07-21 22:14 ` Anthony Liguori
2008-07-21 23:47 ` Jamie Lokier
2008-07-22 6:06 ` Avi Kivity [this message]
2008-07-22 14:08 ` Anthony Liguori
2008-07-22 14:46 ` Jamie Lokier
2008-07-22 19:11 ` Avi Kivity
2008-07-22 14:32 ` Jamie Lokier
2008-07-21 22:00 ` Andreas Schwab
2008-07-21 22:15 ` Anthony Liguori
2008-07-21 22:22 ` David Barrett
2008-07-21 22:50 ` Anthony Liguori
2008-07-22 6:07 ` Avi Kivity
2008-07-22 14:11 ` Anthony Liguori
2008-07-22 14:36 ` Avi Kivity
2008-07-22 16:16 ` Jamie Lokier
2008-07-22 19:13 ` Avi Kivity
2008-07-22 20:04 ` Jamie Lokier
2008-07-22 21:25 ` Avi Kivity
2008-07-22 14:22 ` Jamie Lokier
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=488578CA.4000402@qumranet.com \
--to=avi@qumranet.com \
--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 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.