aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaciej S. Szmigiero <maciej.szmigiero@oracle.com>2025-03-04 23:03:28 +0100
committerCédric Le Goater <clg@redhat.com>2025-03-06 06:47:33 +0100
commitd3237d0d85e9fba79b37c776b0ddda611c338f7d (patch)
treec7cd20be0089068f9a573e45a519185da9021e9b
parent8d8a30d1ac7cc9b35833106d749e1b3e8675bc53 (diff)
downloadqemu-d3237d0d85e9fba79b37c776b0ddda611c338f7d.zip
qemu-d3237d0d85e9fba79b37c776b0ddda611c338f7d.tar.gz
qemu-d3237d0d85e9fba79b37c776b0ddda611c338f7d.tar.bz2
migration: Clarify that {load, save}_cleanup handlers can run without setup
It's possible for {load,save}_cleanup SaveVMHandlers to get called without the corresponding {load,save}_setup handler being called first. One such example is if {load,save}_setup handler of a proceeding device returns error. In this case the migration core cleanup code will call all corresponding cleanup handlers, even for these devices which haven't had its setup handler called. Since this behavior can generate some surprises let's clearly document it in these SaveVMHandlers description. Reviewed-by: Fabiano Rosas <farosas@suse.de> Reviewed-by: Cédric Le Goater <clg@redhat.com> Signed-off-by: Maciej S. Szmigiero <maciej.szmigiero@oracle.com> Link: https://lore.kernel.org/qemu-devel/991636623fb780350f493b5f045cb17e13ce4c0f.1741124640.git.maciej.szmigiero@oracle.com Signed-off-by: Cédric Le Goater <clg@redhat.com>
-rw-r--r--include/migration/register.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/include/migration/register.h b/include/migration/register.h
index f60e797..0b02927 100644
--- a/include/migration/register.h
+++ b/include/migration/register.h
@@ -69,7 +69,9 @@ typedef struct SaveVMHandlers {
/**
* @save_cleanup
*
- * Uninitializes the data structures on the source
+ * Uninitializes the data structures on the source.
+ * Note that this handler can be called even if save_setup
+ * wasn't called earlier.
*
* @opaque: data pointer passed to register_savevm_live()
*/
@@ -244,6 +246,8 @@ typedef struct SaveVMHandlers {
* @load_cleanup
*
* Uninitializes the data structures on the destination.
+ * Note that this handler can be called even if load_setup
+ * wasn't called earlier.
*
* @opaque: data pointer passed to register_savevm_live()
*