Skip to contentSkip to conversation

IOEMU images format policy

PATCH New Samuel Thibault 2 participants 3 messages Mar 26, 2008

lore
Share & tools
lore
#0 lore raw

Hello,

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?

Samuel

#1 lore raw

PATCH 1/1 ioemu: save IDE write_cache flag [Was: IOEMU images format policy]

Hello,

Quoted 6 lines · 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

tools/ioemu/hw/ide.c +6 -3
diff -r 01573df1051e tools/ioemu/hw/ide.c
@@ -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);
 }
 
 /***********************************************************/
#2 lore raw
In reply to Samuel Thibault

Older images should work with newer QEMU, yes.

-- Keir

Quoted 15 lines · Samuel Thibault

Hello,

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?

Samuel

_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel