qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Jamie Lokier <jamie@shareable.org>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [RFC][PATCH] make sure disk writes actually hit disk
Date: Sun, 30 Jul 2006 22:41:47 +0100	[thread overview]
Message-ID: <20060730214147.GA6255@mail.shareable.org> (raw)
In-Reply-To: <44CB77DF.9030700@redhat.com>

Rik van Riel wrote:
> This may look like hair splitting, but so far I've lost a
> (test) postgresql database to this 3 times already.  Not getting
> the guest application's data to disk when the application calls
> fsync is a recipe for disaster.

Exactly the same thing happens with real IDE disks if IDE write
caching (on the drive itself) is enabled, which it is by default.  It
is rarer, but it happens.

I've seen this with Linux 2.4 kernels writing to ext3 (real, not
virtual).  Filesystem metadata gets corrupted from time to time if
power is removed, because write ordering is not preserved.  Disabling
IDE write caching fixes it, but the performance impact is huge on some
systems.

Linux 2.6 kernels will issue IDE cache flush commands, at least with
ext3, to commit data to disk when fsync is called, and to preserve
journal/metadata ordering.

Doesn't qemu fsync the host file corresponding to the emulated disk,
when the guest OS issues an IDE cache flush?

For IDE emulation to be as reliable for data storage as a real disk,
it should:

    - fsync the host file whenever the guest OS issues an IDE cache
      flush command.

    - use O_SYNC (or fsync after each write or aio equivalent, etc.) _only_
      when the guest OS disables the IDE disk cache (not done by default).

-- JAmie

  parent reply	other threads:[~2006-07-30 21:41 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-07-28 19:54 [Qemu-devel] [RFC][PATCH] make sure disk writes actually hit disk Rik van Riel
2006-07-28 19:58 ` [Qemu-devel] " Rik van Riel
2006-07-28 20:12 ` Anthony Liguori
2006-07-28 20:18   ` Rik van Riel
2006-07-28 20:30     ` Paul Brook
2006-07-28 20:43       ` Rik van Riel
2006-07-28 21:01         ` Paul Brook
2006-07-31  7:08     ` Jens Axboe
2006-07-29  9:57 ` [Qemu-devel] " Fabrice Bellard
2006-07-29 14:59   ` Rik van Riel
2006-07-29 16:04     ` Paul Brook
2006-07-29 16:22       ` Rik van Riel
2006-07-29 16:31         ` Paul Brook
2006-07-31  7:08           ` Jens Axboe
2006-07-29 17:33     ` Bill C. Riemers
2006-07-30 21:47       ` Jamie Lokier
2006-07-30 21:41     ` Jamie Lokier [this message]
2006-07-31  9:52       ` andrzej zaborowski
2006-07-31 10:17         ` Jens Axboe
2006-07-31 17:50           ` andrzej zaborowski
2006-07-31  7:08     ` Jens Axboe
2006-07-31  7:56       ` Jonas Maebe
2006-07-31  8:18         ` Jens Axboe

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=20060730214147.GA6255@mail.shareable.org \
    --to=jamie@shareable.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).