From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 64E3068184 for ; Tue, 10 Nov 2020 17:16:28 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 5CEF724B38 for ; Tue, 10 Nov 2020 17:16:28 +0100 (CET) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [212.186.127.180]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS id C1E8524B30 for ; Tue, 10 Nov 2020 17:16:27 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 89FBF4605F for ; Tue, 10 Nov 2020 17:16:27 +0100 (CET) From: Stefan Reiter To: pve-devel@lists.proxmox.com Date: Tue, 10 Nov 2020 17:16:15 +0100 Message-Id: <20201110161615.23702-1-s.reiter@proxmox.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.036 Adjusted score from AWL reputation of From: address KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH pve-qemu] update patches with some pbs-state migration cleanups X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Nov 2020 16:16:28 -0000 ...and literal cleanup, as in, call save_cleanup after success or error. Signed-off-by: Stefan Reiter --- I found it more confusing to set opaque to a value and then never use it, so I put it back to NULL and documented it. Behaviour tested to be the same. ...igrate-dirty-bitmap-state-via-savevm.patch | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/debian/patches/pve/0055-PVE-Migrate-dirty-bitmap-state-via-savevm.patch b/debian/patches/pve/0055-PVE-Migrate-dirty-bitmap-state-via-savevm.patch index 77c0c76..a39e3ca 100644 --- a/debian/patches/pve/0055-PVE-Migrate-dirty-bitmap-state-via-savevm.patch +++ b/debian/patches/pve/0055-PVE-Migrate-dirty-bitmap-state-via-savevm.patch @@ -13,13 +13,13 @@ safe migration is possible and makes sense. Signed-off-by: Stefan Reiter --- - include/migration/misc.h | 3 ++ - migration/Makefile.objs | 1 + - migration/pbs-state.c | 97 ++++++++++++++++++++++++++++++++++++++++ - pve-backup.c | 1 + - qapi/block-core.json | 6 +++ - softmmu/vl.c | 1 + - 6 files changed, 109 insertions(+) + include/migration/misc.h | 3 ++ + migration/Makefile.objs | 1 + + migration/pbs-state.c | 106 +++++++++++++++++++++++++++++++++++++++ + pve-backup.c | 1 + + qapi/block-core.json | 6 +++ + softmmu/vl.c | 1 + + 6 files changed, 118 insertions(+) create mode 100644 migration/pbs-state.c diff --git a/include/migration/misc.h b/include/migration/misc.h @@ -48,10 +48,10 @@ index 0fc619e380..20b3792599 100644 common-obj-$(CONFIG_RDMA) += rdma.o diff --git a/migration/pbs-state.c b/migration/pbs-state.c new file mode 100644 -index 0000000000..c711498c3e +index 0000000000..29f2b3860d --- /dev/null +++ b/migration/pbs-state.c -@@ -0,0 +1,97 @@ +@@ -0,0 +1,106 @@ +/* + * PBS (dirty-bitmap) state migration + */ @@ -67,6 +67,7 @@ index 0000000000..c711498c3e + bool active; +} PBSState; + ++/* state is accessed via this static variable directly, 'opaque' is NULL */ +static PBSState pbs_state; + +static void pbs_state_save_pending(QEMUFile *f, void *opaque, @@ -115,8 +116,9 @@ index 0000000000..c711498c3e + +static bool pbs_state_is_active(void *opaque) +{ -+ // we need to be return active once, else .save_setup is never called, but, -+ // if we'd just would return true, we'd freeze the migration for ~ 5 - 10s ++ /* we need to return active exactly once, else .save_setup is never called, ++ * but if we'd just return true the migration doesn't make progress since ++ * it'd be waiting for us */ + return pbs_state.active; +} + @@ -133,6 +135,12 @@ index 0000000000..c711498c3e + return false; +} + ++static void pbs_state_save_cleanup(void *opaque) ++{ ++ /* reset active after migration succeeds or fails */ ++ pbs_state.active = false; ++} ++ +static SaveVMHandlers savevm_pbs_state_handlers = { + .save_setup = pbs_state_save_setup, + .has_postcopy = pbs_state_has_postcopy, @@ -140,6 +148,7 @@ index 0000000000..c711498c3e + .is_active_iterate = pbs_state_is_active_iterate, + .load_state = pbs_state_load, + .is_active = pbs_state_is_active, ++ .save_cleanup = pbs_state_save_cleanup, +}; + +void pbs_state_mig_init(void) @@ -147,7 +156,7 @@ index 0000000000..c711498c3e + pbs_state.active = true; + register_savevm_live("pbs-state", 0, 1, + &savevm_pbs_state_handlers, -+ &pbs_state); ++ NULL); +} diff --git a/pve-backup.c b/pve-backup.c index c7cde0fb0e..f65f1dda26 100644 -- 2.20.1