qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH] qcow2: make cache=unsafe usable


From: Avi Kivity
Subject: [Qemu-devel] [PATCH] qcow2: make cache=unsafe usable
Date: Wed, 7 Sep 2011 12:24:23 +0300

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 <address@hidden>
---

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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]