* Oleinik, Alexander (alx...@bu.edu) wrote: > Skip the header when saving device state, as the header isn't handled by > qemu_load_device_state > > Signed-off-by: Alexander Oleinik <alx...@bu.edu> > --- > migration/savevm.c | 9 +++++++-- > migration/savevm.h | 2 ++ > 2 files changed, 9 insertions(+), 2 deletions(-) > > diff --git a/migration/savevm.c b/migration/savevm.c > index 79ed44d475..5eac36e6ca 100644 > --- a/migration/savevm.c > +++ b/migration/savevm.c > @@ -1405,7 +1405,7 @@ void qemu_savevm_state_cleanup(void) > } > } > > -static int qemu_savevm_state(QEMUFile *f, Error **errp) > +int qemu_savevm_state(QEMUFile *f, Error **errp) > { > int ret; > MigrationState *ms = migrate_get_current(); > @@ -1471,11 +1471,16 @@ void qemu_savevm_live_state(QEMUFile *f) > int qemu_save_device_state(QEMUFile *f) > { > SaveStateEntry *se; > - > + /* > + * qemu_load_device_state doesn't load the header. Either skip writing > the > + * header or seek forward in the file, prior to loading device state > + */ > +#ifndef CONFIG_FUZZ > if (!migration_in_colo_state()) { > qemu_put_be32(f, QEMU_VM_FILE_MAGIC); > qemu_put_be32(f, QEMU_VM_FILE_VERSION); > } > +#endif
I'd prefer if you just added a ', bool save_header' to the parameters and then replace the '!migration_in_colo_state()' by 'save_header' It's only called from two places at the moment, 'qmp_xen_save_devices_state' where I think it's always 'true' and 'colo_do_checkpoint_transaction' where I think it's always false. Dave > cpu_synchronize_all_states(); > > QTAILQ_FOREACH(se, &savevm_state.handlers, entry) { > diff --git a/migration/savevm.h b/migration/savevm.h > index 51a4b9caa8..5405215cb4 100644 > --- a/migration/savevm.h > +++ b/migration/savevm.h > @@ -64,4 +64,6 @@ void qemu_loadvm_state_cleanup(void); > int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis); > int qemu_load_device_state(QEMUFile *f); > > +int qemu_savevm_state(QEMUFile *f, Error **errp); > + > #endif > -- > 2.20.1 > -- Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK