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

[Xen-devel] [PATCH] ioemu: save IDE write_cache flag [Was: IOEMU images format policy]



Hello,

Samuel Thibault, le Wed 26 Mar 2008 12:28:43 +0000, a écrit :
> The short story is that we need to add the write_cache parameter in the
> IOEMU IDE format.
> 
> What is the policy for the version_id field of IOEMU images?  It looks
> like we don't care about the compatibility with QEMU images, but I guess
> we want compatibility with IOEMU images of other Xen versions?

Here is a patch that preserve compatibility with IOEMU but not QEMU.
That should fix some of the performance drops in restored HVM domains.


ioemu: save IDE write cache flag

Signed-off-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxxx>

diff -r 01573df1051e tools/ioemu/hw/ide.c
--- a/tools/ioemu/hw/ide.c      Wed Mar 26 12:37:37 2008 +0000
+++ b/tools/ioemu/hw/ide.c      Wed Mar 26 12:47:18 2008 +0000
@@ -2723,6 +2723,7 @@ static void pci_ide_save(QEMUFile* f, vo
         if (s->identify_set) {
             qemu_put_buffer(f, (const uint8_t *)s->identify_data, 512);
         }
+        qemu_put_8s(f, &s->write_cache);
         qemu_put_8s(f, &s->feature);
         qemu_put_8s(f, &s->error);
         qemu_put_be32s(f, &s->nsector);
@@ -2749,7 +2750,7 @@ static int pci_ide_load(QEMUFile* f, voi
     PCIIDEState *d = opaque;
     int ret, i;
 
-    if (version_id != 1)
+    if (version_id != 1 && version_id != 2)
         return -EINVAL;
     ret = pci_device_load(&d->dev, f);
     if (ret < 0)
@@ -2780,6 +2781,8 @@ static int pci_ide_load(QEMUFile* f, voi
         if (s->identify_set) {
             qemu_get_buffer(f, (uint8_t *)s->identify_data, 512);
         }
+        if (version_id >= 2)
+            qemu_get_8s(f, &s->write_cache);
         qemu_get_8s(f, &s->feature);
         qemu_get_8s(f, &s->error);
         qemu_get_be32s(f, &s->nsector);
@@ -2854,7 +2857,7 @@ void pci_piix_ide_init(PCIBus *bus, Bloc
 
     buffered_pio_init();
 
-    register_savevm("ide", 0, 1, pci_ide_save, pci_ide_load, d);
+    register_savevm("ide", 0, 2, pci_ide_save, pci_ide_load, d);
 }
 
 /* hd_table must contain 4 block drivers */
@@ -2895,7 +2898,7 @@ void pci_piix3_ide_init(PCIBus *bus, Blo
 
     buffered_pio_init();
 
-    register_savevm("ide", 0, 1, pci_ide_save, pci_ide_load, d);
+    register_savevm("ide", 0, 2, pci_ide_save, pci_ide_load, d);
 }
 
 /***********************************************************/

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.