diff options
author | Aaron Lindsay <aaron@os.amperecomputing.com> | 2019-01-21 10:23:13 +0000 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2019-01-21 10:38:55 +0000 |
commit | 8c07559fc7ee132e2145ad09299a08c10ebe7804 (patch) | |
tree | 78da6eb7ab56ca982e0f95a5ed341c510f284b26 /migration | |
parent | 8733d762d5e089a017ac7c5bc71077a8d75d1b46 (diff) | |
download | qemu-8c07559fc7ee132e2145ad09299a08c10ebe7804.zip qemu-8c07559fc7ee132e2145ad09299a08c10ebe7804.tar.gz qemu-8c07559fc7ee132e2145ad09299a08c10ebe7804.tar.bz2 |
migration: Add post_save function to VMStateDescription
In some cases it may be helpful to modify state before saving it for
migration, and then modify the state back after it has been saved. The
existing pre_save function provides half of this functionality. This
patch adds a post_save function to provide the second half.
Signed-off-by: Aaron Lindsay <aclindsa@gmail.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-id: 20181211151945.29137-2-aaron@os.amperecomputing.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'migration')
-rw-r--r-- | migration/vmstate.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/migration/vmstate.c b/migration/vmstate.c index 80b5900..e2bbb7b 100644 --- a/migration/vmstate.c +++ b/migration/vmstate.c @@ -390,6 +390,9 @@ int vmstate_save_state_v(QEMUFile *f, const VMStateDescription *vmsd, if (ret) { error_report("Save of field %s/%s failed", vmsd->name, field->name); + if (vmsd->post_save) { + vmsd->post_save(opaque); + } return ret; } @@ -415,7 +418,15 @@ int vmstate_save_state_v(QEMUFile *f, const VMStateDescription *vmsd, json_end_array(vmdesc); } - return vmstate_subsection_save(f, vmsd, opaque, vmdesc); + ret = vmstate_subsection_save(f, vmsd, opaque, vmdesc); + + if (vmsd->post_save) { + int ps_ret = vmsd->post_save(opaque); + if (!ret) { + ret = ps_ret; + } + } + return ret; } static const VMStateDescription * |