From e213a3cd57d2f2f8cf43a62f5c7e963cba88d1b2 Mon Sep 17 00:00:00 2001 From: Juan Quintela <quintela@redhat.com> Date: Sat, 19 Dec 2009 02:24:39 -0200 Subject: [PATCH 05/16] ide: save if cache was enabled RH-Author: Juan Quintela <quintela@redhat.com> Message-id: <3e7a6f4c610797b2d8b39f54dfaaaa2d6cb46039.1261190612.git.quintela@redhat.com> Patchwork-id: 5817 O-Subject: [PATCH] ide: save if cache was enabled Bugzilla: 549938 RH-Acked-by: Markus Armbruster <armbru@redhat.com> RH-Acked-by: Dor Laor <dlaor@redhat.com> RH-Acked-by: Marcelo Tosatti <mtosatti@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com> --- qemu/hw/ide.c | 15 ++++++++++++--- 1 files changed, 12 insertions(+), 3 deletions(-) Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> --- qemu/hw/ide.c | 15 ++++++++++++--- 1 files changed, 12 insertions(+), 3 deletions(-) diff --git a/qemu/hw/ide.c b/qemu/hw/ide.c index 9a030b0..9dd5a0b 100644 --- a/qemu/hw/ide.c +++ b/qemu/hw/ide.c @@ -2869,6 +2869,9 @@ static void ide_save(QEMUFile* f, IDEState *s, int version_id) qemu_put_8s(f, &s->sense_key); qemu_put_8s(f, &s->asc); /* XXX: if a transfer is pending, we do not save it yet */ + if (version_id > 4) { + qemu_get_8s(f, &s->bs->enable_write_cache); + } } /* load per IDE drive data */ @@ -2897,6 +2900,12 @@ static void ide_load(QEMUFile* f, IDEState *s, int version_id) qemu_get_8s(f, &s->sense_key); qemu_get_8s(f, &s->asc); /* XXX: if a transfer is pending, we do not save it yet */ + if (version_id > 4) { + /* should we advertise barriers? */ + qemu_put_8s(f, &s->bs->enable_write_cache); + } else { + s->bs->enable_write_cache = 0; + } } /***********************************************************/ @@ -3368,7 +3377,7 @@ void pci_cmd646_ide_init(PCIBus *bus, BlockDriverState **hd_table, ide_init2(&d->ide_if[0], hd_table[0], hd_table[1], irq[0]); ide_init2(&d->ide_if[2], hd_table[2], hd_table[3], irq[1]); - register_savevm("ide", 0, 3, pci_ide_save, pci_ide_load, d); + register_savevm("ide", 0, 4, pci_ide_save, pci_ide_load, d); qemu_register_reset(cmd646_reset, d); cmd646_reset(d); } @@ -3432,7 +3441,7 @@ void pci_piix3_ide_init(PCIBus *bus, BlockDriverState **hd_table, int devfn, qemu_register_reset(piix3_reset, d); piix3_reset(d); - register_savevm("ide", 0, 3, pci_ide_save, pci_ide_load, d); + register_savevm("ide", 0, 4, pci_ide_save, pci_ide_load, d); } /* hd_table must contain 4 block drivers */ @@ -3471,7 +3480,7 @@ void pci_piix4_ide_init(PCIBus *bus, BlockDriverState **hd_table, int devfn, qemu_register_reset(piix3_reset, d); piix3_reset(d); - register_savevm("ide", 0, 3, pci_ide_save, pci_ide_load, d); + register_savevm("ide", 0, 4, pci_ide_save, pci_ide_load, d); } /***********************************************************/ -- 1.6.3.rc4.29.g8146