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 Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Samuel Thibault
2008-Mar-26 12:51 UTC
[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@eu.citrix.com> 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@lists.xensource.com http://lists.xensource.com/xen-devel
Older images should work with newer QEMU, yes. -- Keir On 26/3/08 12:28, "Samuel Thibault" <samuel.thibault@eu.citrix.com> wrote:> 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 > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel