qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] qcow2: make cache=unsafe usable
@ 2011-09-07  9:24 Avi Kivity
  2011-09-07  9:47 ` Alexander Graf
  2011-09-07  9:56 ` Kevin Wolf
  0 siblings, 2 replies; 4+ messages in thread
From: Avi Kivity @ 2011-09-07  9:24 UTC (permalink / raw)
  To: Kevin Wolf; +Cc: qemu-devel

Currently cache=unsafe is unsafe to the point of unusability - the
caches are never written to disk except on exit so anything except
an orderly exit -- including live migration -- leaves the disk image
corrupted.

Fix by interpreting flush requests and doing everything except flushing
the underlying file.  The contents of the metadata cache are transferred
to the host pagecache, so that qemu aborts keep the disk in a consistent
state, and live migration (on the same host, or if using a coherent
filesystem) works.

Signed-off-by: Avi Kivity <avi@redhat.com>
---

Untested - is this the right approach?

 block/qcow2.c |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/block/qcow2.c b/block/qcow2.c
index bfff6cd..7ecd096 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -275,6 +275,13 @@ static int qcow2_open(BlockDriverState *bs, int flags)
         ret = -EINVAL;
         goto fail;
     }
+    /*
+     * Request flush callbask so that we can write metadata to the host
+     * pagecache.  Flushes to bs->file will still be ignored.  This keeps
+     * metadata consistent in host pagecache, so we're safe wrt unexpected
+     * exits, but avoids slow disk flushes (and is vulnerable to host crashes)
+     */
+    bs->open_flags &= ~BDRV_O_NO_FLUSH;
 
     /* Initialise locks */
     qemu_co_mutex_init(&s->lock);
-- 
1.7.6.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2011-09-07 10:07 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-09-07  9:24 [Qemu-devel] [PATCH] qcow2: make cache=unsafe usable Avi Kivity
2011-09-07  9:47 ` Alexander Graf
2011-09-07  9:56 ` Kevin Wolf
2011-09-07 10:07   ` Avi Kivity

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