Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 3160499aacb81f6735941eb4c372d87a > files > 651

kvm-83-164.el5_5.30.src.rpm

From c06e040781d733f88c584274d77816f3ea7d142d Mon Sep 17 00:00:00 2001
From: Juan Quintela <quintela@redhat.com>
Date: Sat, 19 Dec 2009 02:24:37 -0200
Subject: [PATCH 03/16] virtio_blk: save if cache was enabled

RH-Author: Juan Quintela <quintela@redhat.com>
Message-id: <c6914124cb8014a121644a1cda9289b35b243b80.1261190612.git.quintela@redhat.com>
Patchwork-id: 5815
O-Subject: [PATCH] virtio_blk: save if cache was enabled
Bugzilla: 549938
RH-Acked-by: Markus Armbruster <armbru@redhat.com>
RH-Acked-by: Marcelo Tosatti <mtosatti@redhat.com>
RH-Acked-by: Amit Shah <amit.shah@redhat.com>

Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 qemu/hw/virtio-blk.c |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 qemu/hw/virtio-blk.c |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/qemu/hw/virtio-blk.c b/qemu/hw/virtio-blk.c
index 995ca81..d2e8147 100644
--- a/qemu/hw/virtio-blk.c
+++ b/qemu/hw/virtio-blk.c
@@ -318,13 +318,17 @@ static void virtio_blk_save(QEMUFile *f, void *opaque)
         req = req->next;
     }
     qemu_put_sbyte(f, 0);
+    if (version_id > 2) {
+        /* should we advertise barriers? */
+        qemu_put_8s(f, &s->bs->enable_write_cache);
+    }
 }
 
 static int virtio_blk_load(QEMUFile *f, void *opaque, int version_id)
 {
     VirtIOBlock *s = opaque;
 
-    if (version_id != 2)
+    if (version_id < 2 || version_id > 3)
         return -EINVAL;
 
     virtio_load(&s->vdev, f);
@@ -334,6 +338,11 @@ static int virtio_blk_load(QEMUFile *f, void *opaque, int version_id)
         req->next = s->rq;
         s->rq = req->next;
     }
+    if (version_id > 2) {
+        qemu_get_8s(f, &s->bs->enable_write_cache);
+    } else {
+        s->bs->enable_write_cache = 0;
+    }
 
     return 0;
 }
@@ -366,7 +375,7 @@ void *virtio_blk_init(PCIBus *bus, BlockDriverState *bs)
     s->vq = virtio_add_queue(&s->vdev, 128, virtio_blk_handle_output);
 
     qemu_add_vm_change_state_handler(virtio_blk_dma_restart_cb, s);
-    register_savevm("virtio-blk", virtio_blk_id++, 2,
+    register_savevm("virtio-blk", virtio_blk_id++, 3,
                     virtio_blk_save, virtio_blk_load, s);
 
     return s;
-- 
1.6.3.rc4.29.g8146