From nobody Sat Feb 28 00:53:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1771617164; cv=none; d=zohomail.com; s=zohoarc; b=K3ncOh9cJjUK3YK9FFFGqE+MXDlIeJtxop8Csf6Ssb4YdWkKnjV6JjfvsI3KNzB+K7wUrl8VMQQdTiuarCADTZ3vAid1/uoCpY8fC0funABabTe9izUNIn+TMqjGvR0DORZCrSqEj6Fv2BH0Em7yXwQ7JX5aBK7ouTtolStN2w0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771617164; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Wgs8JnPLwSHCXYAOpefvV8N7YHva0erDF8oWhWNsX3A=; b=X58X/4kdqZtjQZ045OYsRqmjycnYrBV6/pcaRup75c5BQZ7o3O8XzltBE39+I9pjhl7UGZlQXLYBq5EHoPk7YvHZUbr+CTZJZ6Q60R0c8rSAB7teAwpeFqMso1c2Js+N1xTfCu/wyLQmYbePzqihEtSEmWqrz9yuq1GH5k+u49I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177161716446696.40125079472705; Fri, 20 Feb 2026 11:52:44 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vtWXc-0000S5-QL; Fri, 20 Feb 2026 14:51:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXb-0000Ri-BQ for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:51:55 -0500 Received: from mout.web.de ([212.227.15.4]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXZ-0001Q5-F3 for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:51:54 -0500 Received: from [127.0.1.1] ([84.133.37.84]) by smtp.web.de (mrweb005 [213.165.67.108]) with ESMTPSA (Nemesis) id 1MSZMD-1wI1Pu0hFR-00SCq9; Fri, 20 Feb 2026 20:51:47 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1771617107; x=1772221907; i=lukasstraub2@web.de; bh=Wgs8JnPLwSHCXYAOpefvV8N7YHva0erDF8oWhWNsX3A=; h=X-UI-Sender-Class:From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:References:In-Reply-To:To:Cc: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=iqpwWuY9lChQ+Sipsrc0k4IJ1RmvKP19W+WdQNJPlFYpB0wB+UfPx/k/lnQlcerj aQ0wdDhWrnl1fHHVB0+1QG8FKH2YXDi/ALSrj0q7qF5Uo8R/9ExOE/ly1GADqghVW qNwrUuo4po4nfU/G2ivFc6hI8gQfkFLTUL2GDKVKlLOoDHPTZHrKw+s0Jx0b+hbiV lTi/ofPNz1axD82r5V5SsGDqbPo0BTC3WJuY+AggJG8eUT87R71qQtOvmJazT6nXM xoeAkNf1jq87wJE003ZGN9Tx6ckE4ftKW15lLP8Lr027GcCPa4Hqpoor6sJfCgzQ5 OIYWmkdUJv0/YO/1TQ== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Fri, 20 Feb 2026 20:51:23 +0100 Subject: [PATCH v10 01/19] MAINTAINERS: Add myself as maintainer for COLO migration framework MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260220-colo_unit_test_multifd-v10-1-bfe67d422ef1@web.de> References: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> In-Reply-To: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Zhang Chen , Hailiang Zhang , Markus Armbruster , Li Zhijian , "Dr. David Alan Gilbert" , Lukas Straub X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=637; i=lukasstraub2@web.de; h=from:subject:message-id; bh=MPZRkh7CVx78Nod7CaK6mwPKVKcE6Kz1AKvpzLXE0w8=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpmLtN1Djxy09VQPOstEohDZT/VARKbfQKA2Evl UIrQevPRMeJAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaZi7TQAKCRA1qwsonF2y WOX9D/47jtJEkKXhKtNHRLBr+Uoa2yxdU1FbrNeeUXMeD3V0Ct+s9EspfO4wKUGDFScEarcGhNJ J+YSqnvO5bWWISQE3Qf1Md63DCa40wtBCoxXRYl+xX6UjogV1OKittLsVaxyCVXAVSwQbDosrlZ 4ivq8+g5UQdRFIoti+KH/mJg4aPusu0v6lK0QXZ3DkomSfEAC/tOFfBvZaLFF/ZLT8kACCFXdJh C8ASss5k9BOIoZcht3NGDF+vvWoBVZehTynOK58itCiz1ZnSfHTwEQVhZRgQApIpPyjETE2/zsI LSVhUBBVbGXG6+DErZBjA1W+vheM0eXXDmCOEs8rbdHmZr4lcpU/NH8C17H2sm8Zb9be77KuTbj bmJRlyBbfuESnPvzvCl6/Mjz5AwyL3BcQmkJ6zVkG7p4MmZJfnC1Z7V4P17hvB5yLXavsObgo7f JZPkMMy6rng0mRcugowHgPEpp8Y0/JdheuaLBF9WQGVvj732wl6tYgc11sMIW+StEK+wX/3+WQl 1ghN57uieiLEtfd631BKK9gowxs2GpV4Tq/XUJBsbSySX037UxmiJP/jIqsEibauRXteLaBjX89 mulrGVViSLDLhmmyyeuS74u31alrlL+dnl9zwaCjj6Ep1nHKkz1XJWRyu6rfxHwkrsib7c2wdOf Ca2e6uSvs1Sy7gw== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:7hZ1BlI1D02PYMWaAf6161g5GsVW02UE27VywCCjEKSFIa0wJ9s LIr/To41Rm4FMztk7s0axBEVYtzjnc0231dp0PQf8qpZzemp9F5rHWlrioCusydyDO+RztA zJeatw3q4Yw5W3GGqefpvSSuNp21X3OLFYRXWkkrr65s48WPQywuU1oxT+OuEKZ00cWtLen mWh0qO7tNH64D9hrbuVNA== UI-OutboundReport: notjunk:1;M01:P0:yCwPVwUn6k8=;yzAWA+BOZ2iTTnl39D8rmwR3B1U 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 h+RBmpww= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.4; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity lukasstraub2@web.de) X-ZM-MESSAGEID: 1771617167233158500 I am ready to maintain it. Reviewed-by: Peter Xu Reviewed-by: Zhang Chen Signed-off-by: Lukas Straub --- MAINTAINERS | 1 + 1 file changed, 1 insertion(+) diff --git a/MAINTAINERS b/MAINTAINERS index e0c481e2125d81298a52caf7f7b51c3e4f026d85..2458241e3cd45673d7228a3fecf= 2fe94f3b51b77 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3866,6 +3866,7 @@ F: qapi/yank.json =20 COLO Framework M: Hailiang Zhang +M: Lukas Straub S: Maintained F: migration/colo* F: include/migration/colo.h --=20 2.39.5 From nobody Sat Feb 28 00:53:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1771617182; cv=none; d=zohomail.com; s=zohoarc; b=Tb3nDtjk1sairO0OH/n1ONoiTewR8UTBwofITbeNsWEeayON5FCfDxXIVMAN3wJV3lg7AHwAIXNamX4gzLJIceLAcjUbScMSCvQccU97IxKDwvK+S/ADn/6cWXMCURgQ05sHdbm+K4IH9BO2yW7WZcdYSUuqBGKfdaSOhdJmHfc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771617182; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=EItZ/+gLUzr/5kLXi4A0a68bhxdVbobY0N6WGPa39kA=; b=dLBctCErTkIW9OejvBd5f0aZrZoltXD9iXDTxxX4gLdDsRHZDgMIBM6kj0WEBf2JJ4e03vq1OiA3jedGeV8TA0Hy3o80qlM0bZFIwNTzeiO8alT2/BfgD7TzbBu9trtLroVRKb1G30ZSEllouBozRplp6ZYFJAwGITja7KH67Ro= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771617182754862.6863734621313; Fri, 20 Feb 2026 11:53:02 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vtWXh-0000UW-7i; Fri, 20 Feb 2026 14:52:01 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXc-0000S2-Lu for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:51:56 -0500 Received: from mout.web.de ([212.227.15.3]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXa-0001QI-Ox for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:51:56 -0500 Received: from [127.0.1.1] ([84.133.37.84]) by smtp.web.de (mrweb005 [213.165.67.108]) with ESMTPSA (Nemesis) id 1MVrft-1wLKnm1wIf-00TJq1; Fri, 20 Feb 2026 20:51:47 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1771617107; x=1772221907; i=lukasstraub2@web.de; bh=EItZ/+gLUzr/5kLXi4A0a68bhxdVbobY0N6WGPa39kA=; h=X-UI-Sender-Class:From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:References:In-Reply-To:To:Cc: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=GlUFAeKltsBpcrIQNM8VaPpjVsU725RIFqHbcZe9lxo1/ae3WnF8NjMAlTgVnBp3 oivtvEOxwmsIlkg6XMcs59cQleQ934+U1rYIMjSqarbv4UGm/UcQNodjJh/WV51CU UKuzi3lmcjk44HbJmvYBq/lzIuoUJVDq+t/ArP8RoA8Zh0e8JxleCpEaBKsRarGTD SbFbhDtYdTm4kbGYnj1urir2HgQAPwYxrZ0vwCLzHvD+Y8Ry10yXYn7RFUmsgR+kg utsHfoh4RnWY23374DDYe4qNX4FdMS5TmhCOReItBGfrRa264TtiYAEYz7jsZwJ/d h35zXOAnCSGs70tbXQ== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Fri, 20 Feb 2026 20:51:24 +0100 Subject: [PATCH v10 02/19] MAINTAINERS: Remove Hailiang Zhang from COLO migration framework MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260220-colo_unit_test_multifd-v10-2-bfe67d422ef1@web.de> References: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> In-Reply-To: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Zhang Chen , Hailiang Zhang , Markus Armbruster , Li Zhijian , "Dr. David Alan Gilbert" , Lukas Straub X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=747; i=lukasstraub2@web.de; h=from:subject:message-id; bh=is3YRplQqUwEeytK+Q8qH2cF/R5ufk9k2waP/h9xIHA=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpmLtN+4xLGgQfg7MPEVkovVpErQop/xuuQHjNF bEyj8HpH+2JAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaZi7TQAKCRA1qwsonF2y WNQmD/9yxE0ziKIYsle9aMADlRLBFX/2hKl99/d/eU94mYCCqFMYxgVvMnhTQ7TJiAuUr80pvA9 0v8XXsf7SuZdFIVJHvVZsz29yXpSiYBllmrXVWtWHrD5YvzFh12ImUjTs7ZfMAhE/G8jKisqcVt W29WoBH7/D9InpvKt7WxO20B1YLLQqh2z7WGUlplcbzWqeibFRwDhgaZqwGhVtP7/NLPWigV5IR VBsWRPhmPxHKaYk7NA5i2Ulr8I3E/77HXfWPnQro5ColSzR9ynO4KFI1q1g5phKJpv2w+dFbIeg m0yHnzSRMy+w7sN12brQTD5vsY7yZDEMnRndECJEANugnS/G5t6UbqcZdyk6CWOSe53MIOdle47 P/1kvQkDPoTbcTEzGRfJH8rY73IrhiJoUUhawMwUst1+qciAmlAXwlMDDG+x7bIfBCR+9IARmCL Dg3pY8/ZJZ88RVXpa/jHHM6JHT6p5LOQ25u4QkNdj3x74acnMucajV1fsmqGc263C708VwrnmJH u++D1UIWUxbN7yeKitzDzJvgn2e72YYeCKCH9il3a+fL4uy7LDfY5EEzEvzHixF+umG7Moy54b5 TYZexFfdtcNb2mkWonqbbMEk27/FN4E8EpUhg4G9EVx12CSEvMmYPmZWBG8mgh/rL7ZqeoFUttw 0+SiCum/TOkys4w== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:oYMxSdf4DIWblhpv/SrJNwGmx2o7XbEMMZS8cC1FD619qbSQRmL E5p9NpProrPfmnEWV+vs8hbutUzni2NQNATzKY5voeZV3dEjICfKGTuZx3Xpj5tVLzDn3Uf NV6CxlNxlYUzcuQ9FXpmT6aI19RDOaUupoT4pKmjhRbiz6qmE8w4aTL3+Ev7yYl27VRT9JQ kPPZUbc3c3Z3zx8s9Mjlg== UI-OutboundReport: notjunk:1;M01:P0:Xomx4kUjcyc=;QCe6h8jdqoYfFRyzErbUH/UYuW5 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 iRCycDS588aziuQowM9U5xwvfRoWw Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.3; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity lukasstraub2@web.de) X-ZM-MESSAGEID: 1771617183253158500 His last email to the mailing list is from December 2021: https://lore.kernel.org/qemu-devel/20211214075424.6920-1-zhanghailiang@xfus= ion.com/ Reviewed-by: Peter Xu Reviewed-by: Zhang Chen Signed-off-by: Lukas Straub --- MAINTAINERS | 1 - 1 file changed, 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS index 2458241e3cd45673d7228a3fecf2fe94f3b51b77..3c4eb3bc744e23dc3d49d14b24a= 0d576d7bd60d6 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3865,7 +3865,6 @@ F: include/qemu/yank.h F: qapi/yank.json =20 COLO Framework -M: Hailiang Zhang M: Lukas Straub S: Maintained F: migration/colo* --=20 2.39.5 From nobody Sat Feb 28 00:53:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1771617170; cv=none; d=zohomail.com; s=zohoarc; b=QSrRyhY4WQut2xm60P3zo7rSw2Wc6pKno4Ji3JEqAVnIMNYntfQi72uISAEbXFMAbtk2J2NUX9sWpLDTl4nivdQqLkDKdsfJ2rS7bvoCScm+mLwuV3leeVGbc/PxCw1ZfqANHHzk1OgQk63Hmg3LTvoJMnKWtD1gWJEu9az/e04= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771617170; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=w7yoLFLxOPrYAjZU0Xno21H3kl0o95xRyRJ/F9GznRU=; b=Ky9lO4V/jWeok488jhNq9L6rr1TmBZFnaFiRnq3ci4kIQD6tRUSwBEOEIgpXHwxGdkwfPUVmYOAv5Fpa3yuH1T9eRDXlWi3OWpiTPWJTGFoZG8MxdP3rnsQtW+i/tMFSaJw/soG/f92sMy2Pd8AL21qB9xSO5DAJKtEKxyP37EM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771617170667415.05922764483523; Fri, 20 Feb 2026 11:52:50 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vtWXc-0000S7-RN; Fri, 20 Feb 2026 14:51:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXa-0000RR-Ie for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:51:54 -0500 Received: from mout.web.de ([212.227.15.4]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXY-0001Pl-7Z for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:51:54 -0500 Received: from [127.0.1.1] ([84.133.37.84]) by smtp.web.de (mrweb005 [213.165.67.108]) with ESMTPSA (Nemesis) id 1Mpl4z-1vNhtu3Bdt-00n1RV; Fri, 20 Feb 2026 20:51:47 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1771617107; x=1772221907; i=lukasstraub2@web.de; bh=w7yoLFLxOPrYAjZU0Xno21H3kl0o95xRyRJ/F9GznRU=; h=X-UI-Sender-Class:From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:References:In-Reply-To:To:Cc: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=cpA3bLKvcWFGTFdoJF2+qhNQW800Mm+KydD/rqxCZ6l6HEl5Y6EJgkxoN2vZdQFV YaMlmBUlD3QifUg5jPaOQXi1IX45Slv3rbjhXkjj5lQoTD8RKE8S79ZN3MWBQwOUS tieeSl0TaRVGDxayVZq/c25n1H5hAPzsVEqVELRgaGNsxgTvSUgFyso5DnfhjAxVp K5Xlf6qiONi0hPgCcj6uVoSQJGDkJU/d+keSwH4uVC21OFRzNZcjRgTp1cQO5LLIx gKrhyQ6OX2SXFm/F8FWhIgZZC85MBGwRy/3ydS34Dlr4hURdAN7OR6SEAl23pZ/Vk x049AtFuwT85T6mNfQ== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Fri, 20 Feb 2026 20:51:25 +0100 Subject: [PATCH v10 03/19] colo: Setup ram cache in normal migration path MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260220-colo_unit_test_multifd-v10-3-bfe67d422ef1@web.de> References: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> In-Reply-To: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Zhang Chen , Hailiang Zhang , Markus Armbruster , Li Zhijian , "Dr. David Alan Gilbert" , Lukas Straub X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2754; i=lukasstraub2@web.de; h=from:subject:message-id; bh=bZqP64D7rElL++ZH8EUI9LK8uvlG56Ai3ztis+On3P4=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpmLtNR1IBDN9PtIUic/Lz33QuA4XISp8xFzUk0 F1l90Azh5eJAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaZi7TQAKCRA1qwsonF2y WMU0D/0bcvfak0DBaZuQPCIY8gy/M9/8xZhPCeG13uEP3zubH3K1Oa7nvBKCiTV7EwM9Skw5xfQ WFXznbHLVhTA2ETgbSp/cMml94rACKMqww25hVgi9SJhAJ/3iiuak5L0wBuWaHV7K+o5+1c9RHd NwJznu9YIv0rLbMlSwueMNTMQt2ahwVKUZqrfgKsGygiRJPEcU5k9SzEmDAq/uoWQToV8C05W6T ZSt2QoRHn4c93OnW1KzZ/shfFC2LZIG9aZBzhWITOmvGNAhWGI/QB7Pg0dB8sho+aCWVP4BSrbZ ++JxjL3Oyn8IDEsaU5KY0IQSckS3au/Aqdi4IJ5NpGZdNoOg23fXEJia43PdJfE7CrFd28xh2Gu rwjz6S3GK4uIB/749s9dPBkbmcMo8FraqM/F2Ro0HFE53Uxw27KOPQhCPMbFDwo6BeyLo6IPcoG u1rQqsn/TpmAP597ryQfBeS+HADKew2gycJCBu9zaGe2zAQFgy8HdBOJCjb0vZXwOfRy5IhYt0k ENSFfWX6dmJl1DDqA0DOwpFB9hHX6bD6WtQbQ/fpLp6ywDg5Ma57nIRLWB44ELGtkiig4u1o8tM kF2krqk7zafq06a0i5QRrki0SlRCEHmj8uREHyk+0V3aq/bwCjFzagrKl9WIn28IeJUqK7VQjyD /Ii+nrw9Lru7V8A== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:DlCD7URn7if5pqgJilW4m3FRxD2aOonnUwin8WuJ/vmlBnjIcY9 NxK2x0DO1KmPygRsPxQd5OJ7XGIdw04Nn8f88Sz3JN3PoISC/UHxd+I9J+2TGVWEguq9kfi GC0GKwqTO95cuKzmh/DQUUTCEkLDSd0SQdNZs9z9NXIzx6TQBUBBd0idf9V3GtLmr82X6VH REBeYU4FZ1UYs3MoS6fSA== UI-OutboundReport: notjunk:1;M01:P0:oi+n2wJ+FyA=;KP/2iRmnyetq6Qbv3H/G25x0R1x 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 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.4; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity lukasstraub2@web.de) X-ZM-MESSAGEID: 1771617173623158500 Since 121ccedc2b migration: block incoming colo when capability is disabled x-colo capability needs to be always enabled on the incoming side. So migration_incoming_colo_enabled() and migrate_colo() are equivalent with migrate_colo() being easier to reason about since it is always true during the whole migration. Use migrate_colo() to initialize the ram cache in the normal migration path. Reviewed-by: Fabiano Rosas Reviewed-by: Peter Xu Signed-off-by: Lukas Straub --- migration/migration.c | 18 ++++++++++++++---- migration/savevm.c | 14 +------------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/migration/migration.c b/migration/migration.c index a5b0465ed30cb812cb294ab901c7a37fe6157dc6..c2b9621190f8678ac6b32d6794d= 9bcb6ffa5e402 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -630,10 +630,6 @@ int migration_incoming_enable_colo(Error **errp) return -EINVAL; } =20 - if (ram_block_discard_disable(true)) { - error_setg(errp, "COLO: cannot disable RAM discard"); - return -EBUSY; - } migration_colo_enabled =3D true; return 0; } @@ -770,6 +766,20 @@ process_incoming_migration_co(void *opaque) =20 assert(mis->from_src_file); =20 + if (migrate_colo()) { + if (ram_block_discard_disable(true)) { + error_setg(&local_err, "COLO: cannot disable RAM discard"); + goto fail; + } + + ret =3D colo_init_ram_cache(&local_err); + if (ret) { + error_prepend(&local_err, "failed to init colo RAM cache: %d: = ", + ret); + goto fail; + } + } + mis->largest_page_size =3D qemu_ram_pagesize_largest(); postcopy_state_set(POSTCOPY_INCOMING_NONE); migrate_set_state(&mis->state, MIGRATION_STATUS_SETUP, diff --git a/migration/savevm.c b/migration/savevm.c index 3a16c467b25b8d93b7d40bd0db751158e0278b4f..b88851cdb7974314b8481646a1d= d19642887f210 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2427,19 +2427,7 @@ static int loadvm_process_enable_colo(MigrationIncom= ingState *mis, Error **errp) { ERRP_GUARD(); - int ret; - - ret =3D migration_incoming_enable_colo(errp); - if (ret < 0) { - return ret; - } - - ret =3D colo_init_ram_cache(errp); - if (ret) { - error_prepend(errp, "failed to init colo RAM cache: %d: ", ret); - migration_incoming_disable_colo(); - } - return ret; + return migration_incoming_enable_colo(errp); } =20 static int loadvm_postcopy_handle_switchover_start(Error **errp) --=20 2.39.5 From nobody Sat Feb 28 00:53:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1771617261; cv=none; d=zohomail.com; s=zohoarc; b=TNb1FomytyNt5De2OXtQThwIdJ2WshMPLqTqQdxCrDHm9uIgrM21aS6h3VRjB2TWgL1o3JhNXXJkWK7ZsDAgRB0nF6EmBgB/CN47lYRFSz5oCsTDsFWUMTo/I9pWP2/hgEq6jGrZ8sIfJDT3RBMjdeHZXBiY3UV585+hZKBSOkc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771617261; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=cKo1RcLXnUykLSWo5DXiqn6Y9pPE2FE/DD1aFztALAM=; b=JScqxZGTdKL8a1AHyPhGb7wV6NU1KdTbeHaJTxwO/MRgV293TT56fY3wLQ/WY3YMHIhuqRwxMB5SbnbUUeHIXlOMmO01dzmrbspZ5rQw3MBCsaTvm5tNSDIhf4nIzJoT80AoC25nt0Ysz1GezXvKQsX59q/fdp3DG3Kp8jEvdXY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771617261562265.7902842810679; Fri, 20 Feb 2026 11:54:21 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vtWXn-0000Vp-1n; Fri, 20 Feb 2026 14:52:07 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXc-0000S6-OY for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:51:56 -0500 Received: from mout.web.de ([212.227.15.14]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXa-0001QG-Py for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:51:56 -0500 Received: from [127.0.1.1] ([84.133.37.84]) by smtp.web.de (mrweb005 [213.165.67.108]) with ESMTPSA (Nemesis) id 1N3Xnj-1vlRYN0E2l-012vEp; Fri, 20 Feb 2026 20:51:48 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1771617108; x=1772221908; i=lukasstraub2@web.de; bh=cKo1RcLXnUykLSWo5DXiqn6Y9pPE2FE/DD1aFztALAM=; h=X-UI-Sender-Class:From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:References:In-Reply-To:To:Cc: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=iXIF6aPbVQzX+euq1Ae4d4k0nQX081Uo2tG3gAnUlJx2FsoI/Qsydixlfk+/5bnQ xgHGCkRwAJG/9GnLBm17xjrB7VJfrJNcH1k6AOna/EEg61uflHA4/hpzit9u/eTx0 MeGu4tboDXh9VM4RvYPIm6KhP3DmjNPixRHZMOeg7UraiWBvB+WrsjqwhAaXDjrmN lsQRHjMNwOdCBVC6MS09OhudoOtHxl8VOPE05DWfm7usb1hUpdI6Bot9NL777mT2W uInLX84BgkJx26UjN/HGecKyBuEwaaGwTC6Bf8m2y7cOmag9mJTmAA+0hr004aL49 0gQhkAu4MA2Cgj74NA== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Fri, 20 Feb 2026 20:51:26 +0100 Subject: [PATCH v10 04/19] colo: Replace migration_incoming_colo_enabled() with migrate_colo() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260220-colo_unit_test_multifd-v10-4-bfe67d422ef1@web.de> References: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> In-Reply-To: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Zhang Chen , Hailiang Zhang , Markus Armbruster , Li Zhijian , "Dr. David Alan Gilbert" , Lukas Straub X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3533; i=lukasstraub2@web.de; h=from:subject:message-id; bh=n0JNkGWwDvp69U+jS7cX+vJwFoFOUey0gb5uYJ0EtrM=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpmLtNmxIpuVb+c88CC4W1S5Ph0CCfGnf1Woye8 w9IBVGMq+uJAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaZi7TQAKCRA1qwsonF2y WAL0EACdafZC34xmnfKagDY3lYf4YJaZa6+kyLFjHBvDSPujtxi3IRjjBZLmkxgKsRbcu6AH/o9 drjwI7MpEXQiiCv9J/7uIvND2Aa0mMXCldk+r9OdK1aOArorVTc8HKB0vFgU1tIgwVMKHtxaTyg FcDCOglinVjFlaKRZoDVlfslo25Wi2n2TGCSAZv7Cr0lXM0JOkT76c+UnBQM9mIO0tToMKfp6tj cpm+DjUrZ4eezr9Eo8FbDweyQHIWGcvAmzNVst+jX9IC3XdZitsGi1divg7tLwcWT7YDlhWPVRL ysjX52W04kOrCHicFvjk9gEWoVFKovIvhIa3gGLcXZoqeUYYQuHq6VSL6PaiyoRuP1coSdbz7S/ PvVycXx/Mvtf4yV2YkMgWcnbnB3NDFNLvZr/CqXkro8/1M+ITsaf2PVIELHTR5jN6S3qHhARbVi nV4s9JghDQhC9bi4SVKYJiUgR9t8Op7zDoE58SLJDxD27AJx/DWP5F11rSRJ7kqf/TbKDu4fJQf ifFsgfXKhKlUBHwfh0pw4OdGGexjedBHl1uUUlT0jrQ4Px1Ko22vm8sK0Dp20lpkVDlH2YeSXVD geaYS2j5qq4S3N0Dyb3EHdDbJVmgLPMJkf4coaV+Zo2CcNpqnfKRoT3NBDK3zxrlKHkN6S6Grpp 0b5DCvy8q21+lWA== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:6f2CakCurOdZSo8MvCHlTgSLrE7/uCOWya+iblgo0jShgkElLrF p6TqLjeiMQR+ckDkvhHRPHfoXt3ECEWjHLDLTPiKJKN9nRiS5ZWgDM/+xeg/ZZAp6xvwdFA 2/l6U5JQ+pGxVZRAW8nbyfeF8ct2cI96TXRtkU7QxoZrD7AlsKFayFDW861K5TfTKKkPCBI RLT9DWPDTcdf504WLgVuQ== UI-OutboundReport: notjunk:1;M01:P0:nMcWzjmCkcU=;JQQiLBdDJTCdWjschF3hzFAFwYg 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 QQSWPBNzhOaHK0RgOpnJkMmD7CgLX Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.14; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity lukasstraub2@web.de) X-ZM-MESSAGEID: 1771617263677158500 Since 121ccedc2b migration: block incoming colo when capability is disabled x-colo capability needs to be always enabled on the incoming side. So migration_incoming_colo_enabled() and migrate_colo() are equivalent with migrate_colo() being easier to reason about since it is always true during the whole migration. Reviewed-by: Fabiano Rosas Reviewed-by: Peter Xu Signed-off-by: Lukas Straub --- include/migration/colo.h | 1 - migration/colo.c | 2 +- migration/migration.c | 9 ++------- migration/ram.c | 2 +- 4 files changed, 4 insertions(+), 10 deletions(-) diff --git a/include/migration/colo.h b/include/migration/colo.h index d4fe422e4d335d3bef4f860f56400fcd73287a0e..2496a968cc1ce709f706c0efe57= e4f765f163d3c 100644 --- a/include/migration/colo.h +++ b/include/migration/colo.h @@ -27,7 +27,6 @@ bool migration_in_colo_state(void); /* loadvm */ int migration_incoming_enable_colo(Error **errp); void migration_incoming_disable_colo(void); -bool migration_incoming_colo_enabled(void); bool migration_incoming_in_colo_state(void); =20 COLOMode get_colo_mode(void); diff --git a/migration/colo.c b/migration/colo.c index f7a5bd3619a49a3b4a8306973de7a4411cc0df58..97a224c39c49ff2269f375db471= 12458cab0b4cb 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -935,7 +935,7 @@ void coroutine_fn colo_incoming_co(void) QemuThread th; =20 assert(bql_locked()); - assert(migration_incoming_colo_enabled()); + assert(migrate_colo()); =20 qemu_thread_create(&th, MIGRATION_THREAD_DST_COLO, colo_process_incoming_thread, diff --git a/migration/migration.c b/migration/migration.c index c2b9621190f8678ac6b32d6794d9bcb6ffa5e402..ef6aac53343f2217cd1aa37e493= 483703068d1ff 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -605,11 +605,6 @@ int migrate_send_rp_req_pages(MigrationIncomingState *= mis, } =20 static bool migration_colo_enabled; -bool migration_incoming_colo_enabled(void) -{ - return migration_colo_enabled; -} - void migration_incoming_disable_colo(void) { ram_block_discard_disable(false); @@ -739,7 +734,7 @@ static void process_incoming_migration_bh(void *opaque) } else { runstate_set(RUN_STATE_PAUSED); } - } else if (migration_incoming_colo_enabled()) { + } else if (migrate_colo()) { migration_incoming_disable_colo(); vm_start(); } else { @@ -807,7 +802,7 @@ process_incoming_migration_co(void *opaque) goto fail; } =20 - if (migration_incoming_colo_enabled()) { + if (migrate_colo()) { /* yield until COLO exit */ colo_incoming_co(); } diff --git a/migration/ram.c b/migration/ram.c index fc7ece2c1a10f34aa5a91f58cbe42ea418d7c078..aebf77aa0b861e00516d6f1090a= ebefdd0d97e54 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -4370,7 +4370,7 @@ static int ram_load_precopy(QEMUFile *f) * speed of the migration, but it obviously reduce the downtim= e of * back-up all SVM'S memory in COLO preparing stage. */ - if (migration_incoming_colo_enabled()) { + if (migrate_colo()) { if (migration_incoming_in_colo_state()) { /* In COLO stage, put all pages into cache temporarily= */ host =3D colo_cache_from_block_offset(block, addr, tru= e); --=20 2.39.5 From nobody Sat Feb 28 00:53:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1771617249; cv=none; d=zohomail.com; s=zohoarc; b=mVnEq9IFM3QA1QAAAhF27UAaIq+PTRQaOAQGquc7RJtnhEsZz2VW5H8HY/A4UQI83PmJvQpIg2OHq8wsWagBi8cUPGm7LhapxnatbOJf0E77B1bkNYTbZCJmA5O1nKEp7QCGAcQpFdMwbdfXJIlrchaJnYMe06VVbBo2Ur2uRfw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771617249; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=lFaylqJfRwA+xGkjtlbHuBTbGEoGnwtC2rN5nMHNvvg=; b=X+HSM37FEvxnpo3NaKLh72oT9u/iybKcvDNgfelSfxQkUkCyck0FdSk+EQcXYkwnrF9RmGRm2jJ/rpLWjb2W7RoxVoS6hU87eSP2e4qSibX/uImMRbkmkhXTwg9EKY5Hen44JUBPdhPYvkU2qbR9k0PlyWmZJG7x0j8BS3XaWhw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771617249697671.8286789611889; Fri, 20 Feb 2026 11:54:09 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vtWXq-0000Wh-DL; Fri, 20 Feb 2026 14:52:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXj-0000VC-Ge for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:52:04 -0500 Received: from mout.web.de ([212.227.15.14]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXg-0001T5-8Q for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:52:03 -0500 Received: from [127.0.1.1] ([84.133.37.84]) by smtp.web.de (mrweb005 [213.165.67.108]) with ESMTPSA (Nemesis) id 1MqIFD-1vPMKF1TU3-00pm4B; Fri, 20 Feb 2026 20:51:48 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1771617108; x=1772221908; i=lukasstraub2@web.de; bh=lFaylqJfRwA+xGkjtlbHuBTbGEoGnwtC2rN5nMHNvvg=; h=X-UI-Sender-Class:From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:References:In-Reply-To:To:Cc: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=eRog03xKZa/i1BYvc/DSQ2AQ19gaUzg6cJlRn/5+8YQ3yQakFSioXQAxqWgj+Rro 8UEJ4zKHKjE7KzNT2Zfvp9JN+Lb/AWN+Y7/rcyt58Fh+c1fvmxf317OyDJHtcOVrq 2xfyUaHe0rBClWHxZTvNZdeZM/SlmnJH0d0yqEUYz6T/0cIqV/t7x1LbzWfHm32dZ wDHRhJCIbb2aMKpoBAfEif+4+MQmqYZunLBIy29mRulDL+QxpmfW5egqdGHflnrkj UjBLw4uIUidg3ThTapdQAmovZyXCmTiQiRdz0lekRdUjh3MWMIxXb+rOeZllIyRP3 nI4QHYakn3fOSPmwaA== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Fri, 20 Feb 2026 20:51:27 +0100 Subject: [PATCH v10 05/19] colo: Remove ENABLE_COLO savevm command and mark it as deprecated MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260220-colo_unit_test_multifd-v10-5-bfe67d422ef1@web.de> References: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> In-Reply-To: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Zhang Chen , Hailiang Zhang , Markus Armbruster , Li Zhijian , "Dr. David Alan Gilbert" , Lukas Straub X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=7042; i=lukasstraub2@web.de; h=from:subject:message-id; bh=YT+h1EviSwAmcakmyBDcRUQRzNdTm5AuYHH102VFwng=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpmLtNUV3qkR0xdv1obFwdK7QkQ1qzK7q+/6VHX bIlroOs8eKJAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaZi7TQAKCRA1qwsonF2y WKo8D/9XYB3cWv78VAsyOwVHJ2IbddEGvPcZ9vDQWEIhz3+7Gl5O8SMgni+uOaFf8az8HIIRk3H NAI7aG3AENyOooHlDWQacmCU85HR5SErSRb3hfTm/TfLnj9EtSx1oAAfh3W97DJG0iX6SNPzhGT oXlIpAlZ/O3yRMk1sWzO6ue6kPxHopP/CZvOWg6fKK8eXPuvX8A80xKlAWsX2Uos9+88KKBZBc2 LPUwu5UjFwGgX41puFgJ0sJn/MSKkz8uFHgR2bqntz81MiXdjXioTuMlJ6qM+LhtFO3zqlQaOzw 7IyZyH9U1MILcVDaKfF2unMa7Ms3rNtRyQnMQ/5IH9KEvp+v4nSsRP4fMTv35je203wFfVlxDZI ia1/EmlxtlRcttwUZMPetVb8jMt4wkKDBlLo9djTbbDihipe0u6cuotjsvMXQgLWlEVNLB3LTKs nExtMN0EkbbNOG6cH2djjYRiBCVBvF5YPGpzLwUuu233uOEgMREBg1xAkK9v5kRCsvO63k06K83 1do/N38tn2RHvp4SS3wKqUPRbdDXJPAfTbS2rVk69RDytSPrBcWCZS1e36pmarm8R4DDO1V+alM dOVkq9MNBSJyRmI6/O2RQCdbfu9dcwuGWEnOxwAOpTPyz/+cw1KFavz0Ml9M01JkBypAI3V0yC3 ins1C6+B2uxruaA== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:DAffT4DPf1r8SKgv02MmK2PUner5SXCyYHhpsywFd3YoHiIYCbv 1iEiMex8UOR7yQQSqWi7V5A2HDr2XwroZBvH9ZEmJpYswaHMf0MXj7xW+t+Tzoae3wN6/6l u4zBhfg369yLoyfhzFAsvo8+YCD3gFYZa+kg9DZUgzNZlarkM7YbzUbkQGJDvOAh3lRF+OZ 5hrQUy6AZzHoL5FceBwUg== UI-OutboundReport: notjunk:1;M01:P0:ckSqNxywgx8=;7k4+uWyCwuaNn9xCJMvgKLEY91F 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 p6ghdNVP7fnrCC/IbpgY Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.14; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity lukasstraub2@web.de) X-ZM-MESSAGEID: 1771617251742158500 No need for it anymore now that x-colo capability is required on incoming side. There is also no need to send it for backwards compatibility since we only support COLO with the same version on both sides. We mark the command code as deprecated and now error out if such a unhandled command is encountered in loadvm_process_command(). Reviewed-by: Fabiano Rosas Signed-off-by: Lukas Straub --- include/migration/colo.h | 2 -- migration/migration.c | 31 ------------------------------- migration/savevm.c | 25 +++++-------------------- migration/savevm.h | 1 - migration/trace-events | 1 - 5 files changed, 5 insertions(+), 55 deletions(-) diff --git a/include/migration/colo.h b/include/migration/colo.h index 2496a968cc1ce709f706c0efe57e4f765f163d3c..8f94054a10760d0f2598f080643= f45f9944cf051 100644 --- a/include/migration/colo.h +++ b/include/migration/colo.h @@ -25,8 +25,6 @@ void migrate_start_colo_process(MigrationState *s); bool migration_in_colo_state(void); =20 /* loadvm */ -int migration_incoming_enable_colo(Error **errp); -void migration_incoming_disable_colo(void); bool migration_incoming_in_colo_state(void); =20 COLOMode get_colo_mode(void); diff --git a/migration/migration.c b/migration/migration.c index ef6aac53343f2217cd1aa37e493483703068d1ff..dba5d6ede579da42693d5270ede= 9660fb145238a 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -604,31 +604,6 @@ int migrate_send_rp_req_pages(MigrationIncomingState *= mis, return migrate_send_rp_message_req_pages(mis, rb, start); } =20 -static bool migration_colo_enabled; -void migration_incoming_disable_colo(void) -{ - ram_block_discard_disable(false); - migration_colo_enabled =3D false; -} - -int migration_incoming_enable_colo(Error **errp) -{ -#ifndef CONFIG_REPLICATION - error_setg(errp, "ENABLE_COLO command come in migration stream, but th= e " - "replication module is not built in"); - return -ENOTSUP; -#endif - - if (!migrate_colo()) { - error_setg(errp, "ENABLE_COLO command come in migration stream" - ", but x-colo capability is not set"); - return -EINVAL; - } - - migration_colo_enabled =3D true; - return 0; -} - void migrate_add_address(SocketAddress *address) { MigrationIncomingState *mis =3D migration_incoming_get_current(); @@ -735,7 +710,6 @@ static void process_incoming_migration_bh(void *opaque) runstate_set(RUN_STATE_PAUSED); } } else if (migrate_colo()) { - migration_incoming_disable_colo(); vm_start(); } else { runstate_set(global_state_get_runstate()); @@ -3534,11 +3508,6 @@ static void *migration_thread(void *opaque) qemu_savevm_send_postcopy_advise(s->to_dst_file); } =20 - if (migrate_colo()) { - /* Notify migration destination that we enable COLO */ - qemu_savevm_send_colo_enable(s->to_dst_file); - } - if (migrate_auto_converge()) { /* Start RAMBlock dirty bitmap sync timer */ cpu_throttle_dirty_sync_timer(true); diff --git a/migration/savevm.c b/migration/savevm.c index b88851cdb7974314b8481646a1dd19642887f210..197c89e0e659b889409c3dc9751= 8920ea9c1824f 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -90,7 +90,7 @@ enum qemu_vm_cmd { were previously sent during precopy but are dirty. */ MIG_CMD_PACKAGED, /* Send a wrapped stream within this stream= */ - MIG_CMD_ENABLE_COLO, /* Enable COLO */ + MIG_CMD_DEPRECATED_0, /* Prior to 10.2, used as MIG_CMD_ENABLE_CO= LO */ MIG_CMD_POSTCOPY_RESUME, /* resume postcopy on dest */ MIG_CMD_RECV_BITMAP, /* Request for recved bitmap on dst */ MIG_CMD_SWITCHOVER_START, /* Switchover start notification */ @@ -1103,12 +1103,6 @@ static void qemu_savevm_command_send(QEMUFile *f, qemu_fflush(f); } =20 -void qemu_savevm_send_colo_enable(QEMUFile *f) -{ - trace_savevm_send_colo_enable(); - qemu_savevm_command_send(f, MIG_CMD_ENABLE_COLO, 0, NULL); -} - void qemu_savevm_send_ping(QEMUFile *f, uint32_t value) { uint32_t buf; @@ -2423,13 +2417,6 @@ static int loadvm_handle_recv_bitmap(MigrationIncomi= ngState *mis, return 0; } =20 -static int loadvm_process_enable_colo(MigrationIncomingState *mis, - Error **errp) -{ - ERRP_GUARD(); - return migration_incoming_enable_colo(errp); -} - static int loadvm_postcopy_handle_switchover_start(Error **errp) { SaveStateEntry *se; @@ -2513,7 +2500,7 @@ static int loadvm_process_command(QEMUFile *f, Error = **errp) return ret; } } - break; + return 0; =20 case MIG_CMD_PING: tmp32 =3D qemu_get_be32(f); @@ -2524,7 +2511,7 @@ static int loadvm_process_command(QEMUFile *f, Error = **errp) return -1; } migrate_send_rp_pong(mis, tmp32); - break; + return 0; =20 case MIG_CMD_PACKAGED: return loadvm_handle_cmd_packaged(mis, errp); @@ -2548,14 +2535,12 @@ static int loadvm_process_command(QEMUFile *f, Erro= r **errp) case MIG_CMD_RECV_BITMAP: return loadvm_handle_recv_bitmap(mis, len, errp); =20 - case MIG_CMD_ENABLE_COLO: - return loadvm_process_enable_colo(mis, errp); - case MIG_CMD_SWITCHOVER_START: return loadvm_postcopy_handle_switchover_start(errp); } =20 - return 0; + error_setg(errp, "MIG_CMD 0x%x deprecated (len 0x%x)", cmd, len); + return -EINVAL; } =20 /* diff --git a/migration/savevm.h b/migration/savevm.h index 2ba0881f3bd28dba10e52e16657a0b67b19bb00b..b3d1e8a13ca9a535a6990560ed2= d64739ebe730e 100644 --- a/migration/savevm.h +++ b/migration/savevm.h @@ -65,7 +65,6 @@ void qemu_savevm_send_postcopy_ram_discard(QEMUFile *f, c= onst char *name, uint16_t len, uint64_t *start_list, uint64_t *length_list); -void qemu_savevm_send_colo_enable(QEMUFile *f); int qemu_save_device_state(QEMUFile *f, Error **errp); int qemu_loadvm_state(QEMUFile *f, Error **errp); void qemu_loadvm_state_cleanup(MigrationIncomingState *mis); diff --git a/migration/trace-events b/migration/trace-events index 90629f828f80b51500776ae2171724369e194573..60e5087e38beccb98588fdffec7= deff9a7f92c88 100644 --- a/migration/trace-events +++ b/migration/trace-events @@ -37,7 +37,6 @@ savevm_send_ping(uint32_t val) "0x%x" savevm_send_postcopy_listen(void) "" savevm_send_postcopy_run(void) "" savevm_send_postcopy_resume(void) "" -savevm_send_colo_enable(void) "" savevm_send_recv_bitmap(char *name) "%s" savevm_send_switchover_start(void) "" savevm_state_setup(void) "" --=20 2.39.5 From nobody Sat Feb 28 00:53:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1771617179; cv=none; d=zohomail.com; s=zohoarc; b=VQSNyxHptAKN18yvDYInotimL+nkljhmqyaIZiH5ytNgDTL3QmfRN4NWjdz/A+YDJ5zdb+WniUb03gbJq5i6jazyVd8O+Yo/w9ATgFx6KuCw+wUDN/kFYiaej61jbaAKXcU28TuTXyW6l4lGUnLTS7OOJSWIim1u72dsIRl2FVE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771617179; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=f78P3av60iHXeYLfBcNIb/W7089vNVfF6LL/haLWLTM=; b=IeYCNpf7HzvPPg6EU16RMy2yO+X2jnG9i9VmM8yzOAPgl8xXk6CpGuxkZ9eWmXPlKN6nyldwiVnGK3Bs92cvhXgxGGAYwAJ82nHq6Dd5OxKKXZTcbun8YFRzGWO2QSgWC9vpRmgd2v0gDEFMYRhRn7qytlmCN6GOJ5Rd8/wsNGo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771617179759617.9482719216687; Fri, 20 Feb 2026 11:52:59 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vtWXc-0000S1-9k; Fri, 20 Feb 2026 14:51:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXa-0000RP-Ir for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:51:54 -0500 Received: from mout.web.de ([212.227.15.4]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXY-0001Q1-PB for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:51:54 -0500 Received: from [127.0.1.1] ([84.133.37.84]) by smtp.web.de (mrweb005 [213.165.67.108]) with ESMTPSA (Nemesis) id 1MYLig-1wG5TC2kmg-00YWEM; Fri, 20 Feb 2026 20:51:48 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1771617108; x=1772221908; i=lukasstraub2@web.de; bh=f78P3av60iHXeYLfBcNIb/W7089vNVfF6LL/haLWLTM=; h=X-UI-Sender-Class:From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:References:In-Reply-To:To:Cc: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=USeCCwfud+SMW1CRSnjkYZdYi+aqYd6kd3x5PlsSrls2oJj1Dmq+WIFCSw/fxdB1 rhWbM4H4pK5Ttv83N7QRWNREj1ArhVv/peck7KZ/0++TN9Gn9wfb9yHXJ/fMCEkBS blwFqgVshLopgWj2SONpO38XVOT1ms+H9z44Tr3TBEfJNzCkYbBhMGTT8LFn0lQbH XepDuFaKdK8WUNNuKjuxiAkWffQvyjQFm9z8EyyLbtXll6F5VVtdnZhL0Itw/Xe4p TMBQoD8zgjWJ3Zieu3mbDNeSpNmMEBlSJgRL+uSawYF2p6uzzc3jlinIrsGM1fCkb 2YUwp1fckN1Ty91kzw== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Fri, 20 Feb 2026 20:51:28 +0100 Subject: [PATCH v10 06/19] ram: Remove colo special-casing MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260220-colo_unit_test_multifd-v10-6-bfe67d422ef1@web.de> References: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> In-Reply-To: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Zhang Chen , Hailiang Zhang , Markus Armbruster , Li Zhijian , "Dr. David Alan Gilbert" , Lukas Straub X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1057; i=lukasstraub2@web.de; h=from:subject:message-id; bh=vR/wp6SYVr5uUbTS+XPqPG4RkOoroNdE8dtNpsOBphM=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpmLtO3Jrak8/eeY1uP+83g+Y1GyzhKaT6OthEs cX0RM0RCE2JAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaZi7TgAKCRA1qwsonF2y WDVVEAC8OuTPWnJbJCdNuoMaquT64ZRIIcoQ+gAYIU0bK+UGrZ+1oXSRH5TZOPwGIjTaIC3Vxiu pDOwOAEBKvpxwsi3o654gBzML96mJ0KwCOMgtJlPbOvGzSJdSKE68pFghxCoXw74Pk9/6jAqVRG D411X8ZML2RBDJz9hR58r5Mty5tIAd21ZFHlLe+vYuh0hu1zB3qqqRptQSoV6AVgkd0URzRqa7I Mn8H9+wS6TUWgkRxTbsMPUycIaZT/zn8Dk+OS1+0Htnz92jQeWMDpZbu+M+K4qARVy8IG4PiPxT dOImWl+9YyVGdOEHoxtEIu+IOTb3GMNO6vPT7sS/+gXX9GPHVa7Cxu7dWH8gD4aCAMtlp5SekMe pijyafEKPYOkTq77m+mvoJftgkNnjX1a+6BIK01yqIpao39gGvZuS62tBqH9dAYVsg9dLxs1ld9 iB8liSYoq81nyhU93YsVG63uXHYopvrIvqoCl2v7IMeZ039NLqeCt5DkPiOTblQwD3Jg8Pn1MXV ljN8lvBYaFk1Yi0oIDVxinSOwYPNc+onoPoBYqV9RxmXKt1hRJ8GGkIbKG4czQE6K61Imc9uznd GOUESFUPm/yYIyADWt22ZQBXRgsWk5GzfbGM0Z1jZOfv3dTA6SCv6q3c3uamKDZexnXfibOPWIj eUcfIDo/62P+RFg== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:T7FOTfTvqiy5Dd3CCvSpyIjyNWlIep4JEwnh+hkt5efSGzl7OEX X/gNblwp0WDguUbux/2nlYMzW2dpi1wYyBme00NDOFkCzQcwbv+LgSQWyxSn6R7zDoS2VjL RgwNxfFxgjSsUq+bRK4GQO2cMNsrXEX6DVJblMiCzIcSRb/q5PUYla7J02sF4IuB4tWo49Y Lx/SGLv+7iqgKbzXjybhw== UI-OutboundReport: notjunk:1;M01:P0:1wHsieXjY4s=;bliDQrUr08kZOVo6XViR3xAX+/S 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 6M6c5s/s= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.4; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity lukasstraub2@web.de) X-ZM-MESSAGEID: 1771617181230158500 We only enter colo state after the precopy migration is finished so this if is always taken. Reviewed-by: Fabiano Rosas Reviewed-by: Peter Xu Signed-off-by: Lukas Straub --- migration/ram.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/migration/ram.c b/migration/ram.c index aebf77aa0b861e00516d6f1090aebefdd0d97e54..979751f61b30d6c4b878866b501= 1507e7c519176 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -3116,12 +3116,12 @@ static int ram_save_setup(QEMUFile *f, void *opaque= , Error **errp) RAMBlock *block; int ret, max_hg_page_size; =20 - /* migration has already setup the bitmap, reuse it. */ - if (!migration_in_colo_state()) { - if (ram_init_all(rsp, errp) !=3D 0) { - return -1; - } + assert(!migration_in_colo_state()); + + if (ram_init_all(rsp, errp) !=3D 0) { + return -1; } + (*rsp)->pss[RAM_CHANNEL_PRECOPY].pss_channel =3D f; =20 /* --=20 2.39.5 From nobody Sat Feb 28 00:53:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1771617243; cv=none; d=zohomail.com; s=zohoarc; b=YYw9fY1zUcwHr2JsF6Pz0KtLl2Jny0QCjSMdmClGzi+SvFbBJ+wC+mOubpuZbO0tvYjYwCAAL4/DcKjOCQyoL2jpSAnKuDFdMr3CmaAYIdszZvTb7Y6aNZs1Iz7of7eWu0IvlTjV7ZOxhVEh1HRUk4JcV7Np0yuJf7E3IjVssew= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771617243; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=1ICvXz617I/huIhIVtPmcg6MlmFeXbl2B7uO1sTyTmw=; b=ey5AAUyh2w/Foa594qkiNnE40SGTT2PcOQhg5vIrss2nfN9wzkkM2VloRtShVq8ZzVVg6b0JkdzV6ZzGWxZw1TXKQoKTn6ekENXCLLpmxPjanpaqfIssByJbmmmq06FtsjRbuzc1WSuK4y6ueg5+vlIal0WDFsgGmm1BBvPeuno= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771617243826660.6983736594884; Fri, 20 Feb 2026 11:54:03 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vtWXq-0000Wf-CE; Fri, 20 Feb 2026 14:52:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXg-0000UN-Lq for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:52:00 -0500 Received: from mout.web.de ([212.227.15.3]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXf-0001SP-54 for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:52:00 -0500 Received: from [127.0.1.1] ([84.133.37.84]) by smtp.web.de (mrweb005 [213.165.67.108]) with ESMTPSA (Nemesis) id 1N9LEG-1vhJDM4AC4-0172Ee; Fri, 20 Feb 2026 20:51:49 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1771617109; x=1772221909; i=lukasstraub2@web.de; bh=1ICvXz617I/huIhIVtPmcg6MlmFeXbl2B7uO1sTyTmw=; h=X-UI-Sender-Class:From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:References:In-Reply-To:To:Cc: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=d/xj+T/ufc21gEx3rq1LBhxpPn04VZcBB37vZqxmD5+CkLEfXVLmFVyI4T74ty+j R1C9Z8tKtA4Zi+g94ZF4OJAVONlAfVTu1tKfSB9ialEgg3HugBbVXO17eGYZga2lC FW4DOjTN2LoSq1DZwfYQNrOdJEXClsiapOphGy/F6V/m3rQdYzoFVjUrH83EcKPtd 5D8VZkv1Nki5DAz1jaSVCbbf/gyNm7elMhK0uQ/E10TeSwX1rhAn31tkWRhUjadT/ wWZFKQx85bIMOF+gPWLRsQXaVqU7D+nfXNQtOzzofT67G9O2pSXA8UkagSbCQ2fPF AYQdKbPIesQ59MWfyw== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Fri, 20 Feb 2026 20:51:29 +0100 Subject: [PATCH v10 07/19] multifd: Move ram state receive into multifd_ram_state_recv() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260220-colo_unit_test_multifd-v10-7-bfe67d422ef1@web.de> References: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> In-Reply-To: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Zhang Chen , Hailiang Zhang , Markus Armbruster , Li Zhijian , "Dr. David Alan Gilbert" , Lukas Straub X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1304; i=lukasstraub2@web.de; h=from:subject:message-id; bh=98xoBBDImdpaajW7ylxF0FElE0Zr54AC89SoX41cbBc=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpmLtOdf3MMiRYhkq0pWLssLHFCgy11wFO2YWuD J+MRHzV3puJAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaZi7TgAKCRA1qwsonF2y WPuyD/0aQT05TB55WmuN4eZUM5c/622b8ZB3biPqeer1gNxfiHHro2enOb6QFFVbP/jCRJfcIaQ u6gyY+HVf2EQuasM4JK4oMtB/uJJz9Db6gv6EnFl/JT7rBB7Llg1yaDLYGuiOQGrr2Vv4VrJ+wW PbY1XpL0AeMEozpnSTkfj9Jj6aYgqGBOA0Y2nruw5oYJpvIIp3FiiSHhshPwS9YKIPF5Rbb2Scz NK9UjHcsXwSEpiipEY8IVK0pjSBbDChPnThYLY1/soguC3OeMysWKymPsDhWMMa+GmVGRGKKtFH lI5mv7iphqSr81fMJOegjU0wMpiKTcrm+pwNfsbioQ2TBOYEXosi6j0ImciuXQP6tmNhW+MwhA1 sSRl6kpje2QjhbBoc9J7SWFtHXOQP0SPEKCqToQOSNT9Rv2ZAwoiIvZFGl6nhEAWRkHHibj+WzA x+VPV52gWsKQBoUGM00V/sVYW0GbF9Et4p6MJYTUXI5LrVTqwh7kSEawHzZXx2wKfa4OUDMqtW/ QpBzdiZNI1DWZMh0xpMIhkjQPOcsRDzL64vFfIN4neHAAufxxMpEme0uhom19q5tZxvNonwG2pO 4O/rD/XaukC0WZKencFDqHroICs+zXCxw5U+vEVV8UiyhjW7ZbTyajhSiM0qaWDyhXGJHjYGVGz mIQSo4PF3PNNkuQ== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:Qtle/r9B3bGwDTtvhrS/c93CjoW1QoKS+2AAZJC2nYMWVAi1o1G F+oOs+JbngXR9YxxKIsDfocu0gNVQwfBd6OYqxwauiGA18tfhQUJzkozwrk4Fb+POVYfByA AYrB6zHppLDaFlUnCz0Q0qfUt/EdOdc9fJJ9Wj+muKH0BVmN5xYal3QeOTl6WopfIBVsRic yXE7rzrCIubJOvf1UgLSw== UI-OutboundReport: notjunk:1;M01:P0:Z8mcZAXN098=;pF8lRFf7EOYrqNNjyszkOyVuDp/ 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 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.3; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity lukasstraub2@web.de) X-ZM-MESSAGEID: 1771617245637158500 This is in preparation for the next patch. Reviewed-by: Peter Xu Reviewed-by: Fabiano Rosas Signed-off-by: Lukas Straub --- migration/multifd.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/migration/multifd.c b/migration/multifd.c index ad6261688fdf98a5c7f4ee9fb80ba2901201a33e..332e6fc58053462419f3171f6c3= 20ac37648ef7b 100644 --- a/migration/multifd.c +++ b/migration/multifd.c @@ -1253,6 +1253,15 @@ static int multifd_device_state_recv(MultiFDRecvPara= ms *p, Error **errp) return ret; } =20 +static int multifd_ram_state_recv(MultiFDRecvParams *p, Error **errp) +{ + int ret; + + ret =3D multifd_recv_state->ops->recv(p, errp); + + return ret; +} + static void *multifd_recv_thread(void *opaque) { MigrationState *s =3D migrate_get_current(); @@ -1387,7 +1396,7 @@ static void *multifd_recv_thread(void *opaque) assert(use_packets); ret =3D multifd_device_state_recv(p, &local_err); } else { - ret =3D multifd_recv_state->ops->recv(p, &local_err); + ret =3D multifd_ram_state_recv(p, &local_err); } if (ret !=3D 0) { break; --=20 2.39.5 From nobody Sat Feb 28 00:53:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1771617202; cv=none; d=zohomail.com; s=zohoarc; b=TvdzXNG8z4jIW6yYDR6zX9aX1dpC51H144ym1oxsKcE20Qx7qTGXrQK0oiJZn3v1eQcHGKjUCJHu/IUXuR/nTt7EwAq2wooIPWH8+slUFe/iGSwTRfMfQIi1WtMD0kDbZw0dvTAoage8vo8ik/4vcyC42nvtajklibvOuBeKir8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771617202; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=PIeh9HHb7yZFZn9UaUBgAwp0Tvj8RNmFgHfSkQif19o=; b=gGizUrE9HE8QLz9uD2qrOxlYVgJQtNgCL361w1YSQLQmPoR9hRDSFST5FbTZ5DUKB7VNnUI1qzL87NrtAEwX4Wn1aELRAp5HXcIEUi+9Nu+j+HBVv3CAJ61Vx3quuZ7IgT3/nGqQICT2zV5fpnFSBPXqDd4jCK3bdewBBYz1p6I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771617202569307.1209834281674; Fri, 20 Feb 2026 11:53:22 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vtWXo-0000WD-Su; Fri, 20 Feb 2026 14:52:08 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXi-0000Uh-Ci for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:52:03 -0500 Received: from mout.web.de ([212.227.15.3]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXf-0001Se-5j for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:52:02 -0500 Received: from [127.0.1.1] ([84.133.37.84]) by smtp.web.de (mrweb005 [213.165.67.108]) with ESMTPSA (Nemesis) id 1N4eGJ-1vmY0w1KEx-011pJH; Fri, 20 Feb 2026 20:51:49 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1771617109; x=1772221909; i=lukasstraub2@web.de; bh=PIeh9HHb7yZFZn9UaUBgAwp0Tvj8RNmFgHfSkQif19o=; h=X-UI-Sender-Class:From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:References:In-Reply-To:To:Cc: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=wnZqUeyhBqm8dnjyoS9Zn5gsQL0lh4u+HQrsEMyDXL575rV7T17v3+S9mXeEtqp8 jDuvp+ptFESV5QY2yvPc/8DfjjnuCQe5yQU+6mYye+IDxa8Axg1WODglSXc1VfqAU ggoyjbQ0uQxRMSvFN1K0HwxDIJg0AiFWKlq+8H7tkrjPnUotrkzXgMOrpoSFYj0gv HZ4eH8xY9c3SMmcuyVgXeS/M2/nmBxzNriiLizRcFLy3Bqmi64eduGAH9M6jkSCLV zukA2fC/AW6O2j/oLWi7K8Qe2pLdxL2V2d8vfCmPub7o6vW8tfzAxHTndzabwv1so Ak72cK1FUYoOvIlEdQ== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Fri, 20 Feb 2026 20:51:30 +0100 Subject: [PATCH v10 08/19] multifd: Add COLO support MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260220-colo_unit_test_multifd-v10-8-bfe67d422ef1@web.de> References: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> In-Reply-To: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Zhang Chen , Hailiang Zhang , Markus Armbruster , Li Zhijian , "Dr. David Alan Gilbert" , Lukas Straub , Juan Quintela X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=7788; i=lukasstraub2@web.de; h=from:subject:message-id; bh=8r37wRUpxfxlZdZosdNFVkALib5KksA9QEkP7ns3l1Y=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpmLtOHdX2AXSxYLXGIKcMk+G42VXG8qbs2IDei EWMyAZo0meJAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaZi7TgAKCRA1qwsonF2y WLiBD/9+7qorsWw5MRftiKPdaVkpsvJTACilLdZXe1opKQc6IbhD1SZlIg5BeWYKyXrqKWjLOU/ pYX+nZ5U02V7iJcr7FgldmaKo9W6yD9McZkb/+DS8r0qaKW7gDng9pyhkdG+KxW0Y4Mx5su+FvR TtcKk0tVSQQP1xIBntZlbRZcKts34Z/CfloP2l658xm61Qw4wYqtKhdJMbHMl2yvov590EsviBr KQp7K/YZf18gAA3/6gCSMN6hpP13siBWcmR6ZZfBSxUqXVpsGRjYQAKFgfsIoxsUFjPmCuThcdx N86PnxNHS8VL89EB7WS/VYI5Wd1Pm6lRBmN1GXBt+srjsns+U9utnxJloCfIcbv3duvZ9IMv8Sd LuFYt0LdAyVYTk+ZntS4jM4u8h6nDcAt+KwxxoVCbeNYhI8y2HpTysReaZbV+01c4+0ODVpIGaV hNfUoRESH/XAzRLxK8J05JW0S58OolyMVnUyXERY7S/taeFt3Jx6yMz0fmCmW5jDxekwDFmAve0 kEn8yIRjf0n6QghLMoF5mc0gBv4pupo2k9851tBL+WhrNz/+GEaAybNgzHcYsVYdbed/WbqW+j3 b9G1kH3FxDqaKSRQJfeHXMt2LvIO5OGYJCPaMll44R2qgefjyaGjYKZkmybYC1pKeNhzxghEAyd oQtu0PDpz1K7lbg== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:QB1kQqnHiQ9e7RAFhbDTUzxsvfoGX2Apg8Op7aEuKWkiZWJ/BRz M7sYDEYc3U38etMiJCAQ8gpAyDB17RH7YiNzTrLuunDAwUXv/nXDAd0w3RWnx0PnW5BRsXM ftrzS7YdqqBorNbTUXv+3OOUlI/dJ5hVCD8oOVN+hWnmoLS/7hDGSz8kvcifbEQ4eq1nmGZ fLox8viCarj3/83R33Qdw== UI-OutboundReport: notjunk:1;M01:P0:p1LJlTTqm4g=;lfDx9SuL09FXbSvUZYlXVnvuIFp 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 FQBInGSOvruMRj4c8+uoIR6OJuPjq Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.3; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity lukasstraub2@web.de) X-ZM-MESSAGEID: 1771617204179158500 Like in the normal ram_load() path, put the received pages into the colo cache and mark the pages in the bitmap so that they will be flushed to the guest later. Multifd with COLO is useful to reduce the VM pause time during checkpointing for latency sensitive workloads. In such workloads the worst-case latency is especially important. Also, this is already worth it for the precopy phase as it helps with converging. Moreover, multifd migration is the preferred way to do migration nowadays and this allows to use multifd compression with COLO. Benchmark: Cluster nodes - Intel Xenon E5-2630 v3 - 48Gb RAM - 10G Ethernet Guest - Windows Server 2016 - 6Gb RAM - 4 cores Workload - Upload a file to the guest with SMB to simulate moderate memory dirtying - Measure the memory transfer time portion of each checkpoint - 600ms COLO checkpoint interval Results Plain idle mean: 4.50ms 99per: 10.33ms load mean: 24.30ms 99per: 78.05ms Multifd-4 idle mean: 6.48ms 99per: 10.41ms load mean: 14.12ms 99per: 31.27ms Evaluation While multifd has slightly higher latency when the guest idles, it is 10ms faster under load and more importantly it's worst case latency is less than 1/2 of plain under load as can be seen in the 99. Percentile. Signed-off-by: Juan Quintela Reviewed-by: Fabiano Rosas Reviewed-by: Peter Xu Signed-off-by: Lukas Straub --- MAINTAINERS | 1 + migration/meson.build | 2 +- migration/multifd-colo.c | 44 ++++++++++++++++++++++++++++++++++++++++++= ++ migration/multifd-colo.h | 26 ++++++++++++++++++++++++++ migration/multifd-nocomp.c | 10 +++++++++- migration/multifd.c | 8 ++++++++ migration/multifd.h | 5 ++++- 7 files changed, 93 insertions(+), 3 deletions(-) diff --git a/MAINTAINERS b/MAINTAINERS index 3c4eb3bc744e23dc3d49d14b24a0d576d7bd60d6..5519ea4e163229a9bbc06318a0e= e06d88ba6a8a1 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3868,6 +3868,7 @@ COLO Framework M: Lukas Straub S: Maintained F: migration/colo* +F: migration/multifd-colo.* F: include/migration/colo.h F: include/migration/failover.h F: docs/COLO-FT.txt diff --git a/migration/meson.build b/migration/meson.build index c7f39bdb55239ecb0e775c77b90a1aa9e6a4a9ce..c9f0f5f9f2137536497e53e960c= e70654ad1b394 100644 --- a/migration/meson.build +++ b/migration/meson.build @@ -39,7 +39,7 @@ system_ss.add(files( ), gnutls, zlib) =20 if get_option('replication').allowed() - system_ss.add(files('colo-failover.c', 'colo.c')) + system_ss.add(files('colo-failover.c', 'colo.c', 'multifd-colo.c')) else system_ss.add(files('colo-stubs.c')) endif diff --git a/migration/multifd-colo.c b/migration/multifd-colo.c new file mode 100644 index 0000000000000000000000000000000000000000..f160c6543414d3e157a444d613c= 96df4c5f0e602 --- /dev/null +++ b/migration/multifd-colo.c @@ -0,0 +1,44 @@ +/* + * SPDX-License-Identifier: GPL-2.0-or-later + * + * multifd colo implementation + * + * Copyright (c) Lukas Straub + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + */ + +#include "qemu/osdep.h" +#include "multifd.h" +#include "multifd-colo.h" +#include "migration/colo.h" +#include "system/ramblock.h" + +void multifd_colo_prepare_recv(MultiFDRecvParams *p) +{ + /* + * While we're still in precopy state (not yet in colo state), we copy + * received pages to both guest and cache. No need to set dirty bits, + * since guest and cache memory are in sync. + */ + if (migration_incoming_in_colo_state()) { + colo_record_bitmap(p->block, p->normal, p->normal_num); + colo_record_bitmap(p->block, p->zero, p->zero_num); + } +} + +void multifd_colo_process_recv(MultiFDRecvParams *p) +{ + if (!migration_incoming_in_colo_state()) { + for (int i =3D 0; i < p->normal_num; i++) { + void *guest =3D p->block->host + p->normal[i]; + void *cache =3D p->host + p->normal[i]; + memcpy(guest, cache, multifd_ram_page_size()); + } + for (int i =3D 0; i < p->zero_num; i++) { + void *guest =3D p->block->host + p->zero[i]; + memset(guest, 0, multifd_ram_page_size()); + } + } +} diff --git a/migration/multifd-colo.h b/migration/multifd-colo.h new file mode 100644 index 0000000000000000000000000000000000000000..82eaf3f48c47de2f090f9de52f9= d57a337d4754a --- /dev/null +++ b/migration/multifd-colo.h @@ -0,0 +1,26 @@ +/* + * SPDX-License-Identifier: GPL-2.0-or-later + * + * multifd colo header + * + * Copyright (c) Lukas Straub + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + */ + +#ifndef QEMU_MIGRATION_MULTIFD_COLO_H +#define QEMU_MIGRATION_MULTIFD_COLO_H + +#ifdef CONFIG_REPLICATION + +void multifd_colo_prepare_recv(MultiFDRecvParams *p); +void multifd_colo_process_recv(MultiFDRecvParams *p); + +#else + +static inline void multifd_colo_prepare_recv(MultiFDRecvParams *p) {} +static inline void multifd_colo_process_recv(MultiFDRecvParams *p) {} + +#endif +#endif diff --git a/migration/multifd-nocomp.c b/migration/multifd-nocomp.c index 9be79b3b8e00371ebff9e112766c225bec260bf7..9f7a792fa761b3bc30b971b35f4= 64103a61787f0 100644 --- a/migration/multifd-nocomp.c +++ b/migration/multifd-nocomp.c @@ -16,6 +16,7 @@ #include "file.h" #include "migration-stats.h" #include "multifd.h" +#include "multifd-colo.h" #include "options.h" #include "migration.h" #include "qapi/error.h" @@ -269,7 +270,6 @@ int multifd_ram_unfill_packet(MultiFDRecvParams *p, Err= or **errp) return -1; } =20 - p->host =3D p->block->host; for (i =3D 0; i < p->normal_num; i++) { uint64_t offset =3D be64_to_cpu(packet->offset[i]); =20 @@ -294,6 +294,14 @@ int multifd_ram_unfill_packet(MultiFDRecvParams *p, Er= ror **errp) p->zero[i] =3D offset; } =20 + if (migrate_colo()) { + multifd_colo_prepare_recv(p); + assert(p->block->colo_cache); + p->host =3D p->block->colo_cache; + } else { + p->host =3D p->block->host; + } + return 0; } =20 diff --git a/migration/multifd.c b/migration/multifd.c index 332e6fc58053462419f3171f6c320ac37648ef7b..220ed8564960fdabc58e4baa069= dd252c8ad293c 100644 --- a/migration/multifd.c +++ b/migration/multifd.c @@ -29,6 +29,7 @@ #include "qemu-file.h" #include "trace.h" #include "multifd.h" +#include "multifd-colo.h" #include "options.h" #include "qemu/yank.h" #include "io/channel-file.h" @@ -1258,6 +1259,13 @@ static int multifd_ram_state_recv(MultiFDRecvParams = *p, Error **errp) int ret; =20 ret =3D multifd_recv_state->ops->recv(p, errp); + if (ret !=3D 0) { + return ret; + } + + if (migrate_colo()) { + multifd_colo_process_recv(p); + } =20 return ret; } diff --git a/migration/multifd.h b/migration/multifd.h index 89a395aef2b09a6762c45b5361e0ab63256feff6..fbc35702b062fdc3213ce92baed= 35994f5967c2b 100644 --- a/migration/multifd.h +++ b/migration/multifd.h @@ -279,7 +279,10 @@ typedef struct { uint64_t packets_recved; /* ramblock */ RAMBlock *block; - /* ramblock host address */ + /* + * Normally, it points to ramblock's host address. When COLO + * is enabled, it points to the mirror cache for the ramblock. + */ uint8_t *host; /* buffers to recv */ struct iovec *iov; --=20 2.39.5 From nobody Sat Feb 28 00:53:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1771617251; cv=none; d=zohomail.com; s=zohoarc; b=Zt+OZHNyPyJkUzGaxbagxf+khx8x+p/mIS+js/TYNMUIN6QePg7AYag/Pr4Nhjz7ab9YJX366SEnGU7VfZwz8/ZIEETpwIbe8wC/weF3dS93Wq7Nl7lB20YRPIREEFIpIwhvfOJcmyYx3W5VsgLTGp4247isw87xa1DDspMkJ0Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771617251; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=8hHLJHabzCk4FfrjTAJvzzHBO1OUkODVuFNUMhqME4c=; b=KLnqpiG3ny2AuD4yDrR1z4C9v5CI2zXCPSw5FzhntpPABVBF9RACOHyLzdlyT4nbZDfCa+X8LQURpdCdyVoKqjAV8vuTWL8/suahvUERWUiH35HmvLSvNLd9egGW8BV9CVT2IePSrOOrbBOXPMuhf5+jLmMfatRDS8PTSSvgyzI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771617251437734.86349109769; Fri, 20 Feb 2026 11:54:11 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vtWY6-0000bg-Aj; Fri, 20 Feb 2026 14:52:26 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXj-0000VG-Rs for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:52:04 -0500 Received: from mout.web.de ([212.227.15.4]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXi-0001TY-8T for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:52:03 -0500 Received: from [127.0.1.1] ([84.133.37.84]) by smtp.web.de (mrweb005 [213.165.67.108]) with ESMTPSA (Nemesis) id 1MkVsg-1vSOjb2bPS-00iMTu; Fri, 20 Feb 2026 20:51:49 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1771617109; x=1772221909; i=lukasstraub2@web.de; bh=8hHLJHabzCk4FfrjTAJvzzHBO1OUkODVuFNUMhqME4c=; h=X-UI-Sender-Class:From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:References:In-Reply-To:To:Cc: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=jYdpUOnEvMQo+tw5zSKdXJuUBSIvi2ETMe8IYk6tfndsR+z1qVKYYCo1OjbHD1P8 D4jJd8SkR0OeJ9sDxQrgHQZk1mRVud6OghD60jg3eDUQoDEm8q+2Yxuy4OrbtDhl/ DVzbif8bi8Br45Dwa93jrT6tp2awaH2hekoM8iPUb+eBap4BHpiZ81GH3S9FLu+ST lf95IQQyYAwuDNnn1qgtDWR4PObk8dCKbkEfxw4THh716I9EHfakT3GKEngFdlVog cEugGrhQFGc9i7Go45f2MJb66qE57xmaw/kH0M9AE/pifWhVxeOHMSYCZxTDKLVhd RYR0p6AOSyqn9siM7g== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Fri, 20 Feb 2026 20:51:31 +0100 Subject: [PATCH v10 09/19] Call colo_release_ram_cache() after multifd threads terminate MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260220-colo_unit_test_multifd-v10-9-bfe67d422ef1@web.de> References: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> In-Reply-To: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Zhang Chen , Hailiang Zhang , Markus Armbruster , Li Zhijian , "Dr. David Alan Gilbert" , Lukas Straub X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1345; i=lukasstraub2@web.de; h=from:subject:message-id; bh=742UeEMYZJ7tKnjG0Stx7vUAA1BGNxPixG9gIstyBU0=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpmLtOkMXaWxRLe1zY3hsGVM733tWUeFguL2e9P XtC9BdqUUGJAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaZi7TgAKCRA1qwsonF2y WLWGD/9c6Prpcsr/SdMumrg9zaCKRafQzASbpXa4FohN53z3VCgI7uKS1uxurAIZSFM9Lz+36O9 ItHljEsHgj3XdqL0JWLOLM76oWuR4+bIGFOTtyTstfSfqefSK6YRX2Dvd9MQ5t9MLo+cnDmruFJ kH3l1qiy9sOZoKEhjZcnA7hzdiIQ6vAjifhIEfiNLyodBR4A84vrYzTUPMpXrkFUneEf8Zju1py r9x6CZ0Fjm5HP6GohFhJczJvSrDrzyRFWu7XOf+1njsQ3DxOWHYyF1lXan1nZHnUg9IrVBp0uDL saYc/TpHpMqdzYIjT4xkGsaMuZVHTncs2jEiap534H+1dbXi+HQfdIN5V3kfHLYr/H5CvT/hieD 1yywxLdPEdn34wYKrDYJYhwr67fNOtQJiPBCSAEack/KaIyGU9EdK5VtQPN65iOq1R+w+OAIdJP 4BBQPWnSJamDC1PhQiq1h0MIxjL3oPgqGJnpk+L6yQfS7YyPgNhDRLHwqDW3JhGrkuOKGPeN+rt 8MUhCz5V5mg9FESjYC0uj+MXupi67qucUEGks+AZpfPbxtat+KXSUljEicjuVUs8LbxQOkZg4it zQKUc+W2lVQP/+ANKNZ6CNutNyhx/35Cvmf/Kr7uanBnrl5Fj8NTvBPicyONsFrXC5kbhpX+5gF /XHOI18XQqhSwYA== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:orGjv+EN+D1T+EUEKFK3uv64QsQhUjQs4crVllcgW0EoLBi1bQb XC/STkcyuTy5xNtcm4yERr/+CAbFyhmjJdRLakWC5iqzgQdFbyFUNpSSqztDjdOQACzw3wI 8ZDB5HFbciEkD0xbrul/Wl6ACAzpvYUxgEHF3aVrA2RP4Y8PVTVj12GLyTZjKywUBdPd2+F mcy3f0+9oKxCnCTx0voBQ== UI-OutboundReport: notjunk:1;M01:P0:m/XUGeFsWyw=;r1btxZmh5Iy1vDDD51QBMTYNSq8 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 0R0yoV/bZOAQt/nIPGropfQfE8C+E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.4; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity lukasstraub2@web.de) X-ZM-MESSAGEID: 1771617251650158500 The multifd threads still may access the colo cache, so release it only after they terminate. Reviewed-by: Fabiano Rosas Reviewed-by: Peter Xu Signed-off-by: Lukas Straub --- migration/colo.c | 3 --- migration/migration.c | 3 +++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/migration/colo.c b/migration/colo.c index 97a224c39c49ff2269f375db47112458cab0b4cb..96102c9d0fb3b60e063c81ce07b= 730011bc4919f 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -949,7 +949,4 @@ void coroutine_fn colo_incoming_co(void) /* Wait checkpoint incoming thread exit before free resource */ qemu_thread_join(&th); bql_lock(); - - /* We hold the global BQL, so it is safe here */ - colo_release_ram_cache(); } diff --git a/migration/migration.c b/migration/migration.c index dba5d6ede579da42693d5270ede9660fb145238a..f36d42ef657bdf26d78ca642d77= a9b76e1c0c174 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -454,6 +454,9 @@ void migration_incoming_state_destroy(void) * BQL and retake unconditionally. */ assert(bql_locked()); + if (migrate_colo()) { + colo_release_ram_cache(); + } qemu_loadvm_state_cleanup(mis); =20 if (mis->to_src_file) { --=20 2.39.5 From nobody Sat Feb 28 00:53:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1771617241; cv=none; d=zohomail.com; s=zohoarc; b=aAUImVtyMZqJivbFnuwJJQLC6Xf4hPDcfkIrpkXk748tsbfuzrY7Nyii1APsLK3D0yFQxY3gI/blgJI4hT/50S41B3ZrjKlBxJrIqCbbswxIeQJ/krsvjlJPGQjLgllcg1ke5gUTYyD1gQ40DQUPzi7dGVSZFoknlwnx6fCl5uo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771617241; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=q/mNNwnaGGa47jBNu/l/VsNCmpfLA9HBEoNXzcytdkc=; b=dFriqbgHQP0iwXEWhQMKGbneB0F6xJHLnaAdpx6mSOjKstXyVu16kQUYrjTDet0WKDpwQfT1X+es+vCAZ8Rvm5vdDngTmu9nC3Bo+X6jrFoziAzX8jTEqRYSHZhltrBGU7KzscVYweO5wvLwpGkgG6IpbyY1fi8R3Y0uIrb6lGw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771617241073689.2925885168078; Fri, 20 Feb 2026 11:54:01 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vtWXn-0000Vw-27; Fri, 20 Feb 2026 14:52:07 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXf-0000Tv-C5 for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:51:59 -0500 Received: from mout.web.de ([212.227.15.4]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXc-0001RU-N0 for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:51:58 -0500 Received: from [127.0.1.1] ([84.133.37.84]) by smtp.web.de (mrweb005 [213.165.67.108]) with ESMTPSA (Nemesis) id 1M3Ez3-1vsh3o3qkn-000oaL; Fri, 20 Feb 2026 20:51:49 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1771617110; x=1772221910; i=lukasstraub2@web.de; bh=q/mNNwnaGGa47jBNu/l/VsNCmpfLA9HBEoNXzcytdkc=; h=X-UI-Sender-Class:From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:References:In-Reply-To:To:Cc: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=CYiGX8S1bNF8XXCeaa0eXivMg9ciSsfYZQMrSIDGImn+aXAwUn0un/I4caZvtmfK MUGaZ8Ob7Dj7HOE8h2CMuSGNT64xWxZmDWxdM5JKMfrGFbFmUItu9bQsR6JIRvcFr 8w/cJaSEcmObCPpuMGrs7RiR8AZUM+/Uzy8kdLCXfy8dPovMEudWZZy8pKkKqkG76 6lGZ52YGrxHyYTiLLIy7jCmHoegEN7frAqbQuGDux025PiGJHb2RTmq5aK8lpiZvy dGYueU6Ki9Ju0v4vmEYMbLLtSrvA286SHVDcie7iAYaBhsdy1ZI424d3AO2x2DUQE GEoDv0SJtau0FeIZFQ== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Fri, 20 Feb 2026 20:51:32 +0100 Subject: [PATCH v10 10/19] colo: Fix crash during device vmstate load MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260220-colo_unit_test_multifd-v10-10-bfe67d422ef1@web.de> References: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> In-Reply-To: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Zhang Chen , Hailiang Zhang , Markus Armbruster , Li Zhijian , "Dr. David Alan Gilbert" , Lukas Straub X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1224; i=lukasstraub2@web.de; h=from:subject:message-id; bh=Jo9ygbD9kqkeUyQ0JD+anPkAvVD/vEUQ7S+iY6iqDJE=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpmLtOrxYrpckB7x8y1IAQNiwrrwGC/TvQyjCVF MOc5CTL0e+JAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaZi7TgAKCRA1qwsonF2y WD+ZD/9vX2YQmcVIujiEfyFW38525/1rHyhsc6uXcHEPTx6e9hMn1RswWG6cDAtVZ7b6s6m5fwp f5r5evs+SwmWkwG5DhlRzT6MehfNDwEpABCTz8eb5TxiEt4GHdXVWTdMHHKwObdb65zk1AFQe/+ GbZEuIdZEUGE9iJShU92jmHStWZTPwmypJKwvsZwz6H+TbyCAL6JUL+FOGqu5LHsWvDR5FCYWca EP1UFp4ie3RcN4R/0fDENla8P3pHDuk2hhJKfYKAKxc+rlbq+UDixuqOWsOdkCrzweFqtZhOLmZ nGAfdOmXK/YLzB/Qe9KmoY9zu1jwz3BB8dOrgV4hPp9EDVEvL0YgHb/prdtTzaI6b6Yh4uvQBfC 10kDlQaBapLm87WP+/xCOjqigs6TZ1pkw8+RmOcOhmEe9tazXnfQmWWab6R1uEISabigKm6d3Lf oxreckQFLj4Fwd/HLLj+deXrgUh0bsbOOH0GQUXlTQkgGqW9WejhoElpz7BSyZIX20PLBrHdO5g kiDbnzHWRmb1k4Jr7m6Q6zKHjt99fDdsaYQw3IWaWK69yxJq4ost/WcWuHCZy9vzA/xN+hpua8X qo5atKzoHwW1oQgK2xcZpgavbIXVR42SPp4Sf7OWoi4hQaxjwVnSjvROZd8YQ+jsVx+aPSnNT2k 9lnH8wAoDdGOWBA== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:SvdynoCY1AxFa37ldoBCvJ5/Qg3xa5LNcRhyaVO8wht3skCo6kV xzLM2AlbHlozilWs2yxGKWTaSQeZJoa1GcQdprNLh3SEBpG86cTbehipwq14tSR7reAgQK+ qyzJGhXhYlElh6hbIEDmVctaDChqN31qDwzmbiEpf+VS0GhonjInVfz0kE3Lfpt3x4iKdvX oxBQW8wmRm6v7HjNswWPA== UI-OutboundReport: notjunk:1;M01:P0:UGm0rGKE3xA=;XpP5s+jjZWpmcRUJ3ye74o3dbRY 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 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.4; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity lukasstraub2@web.de) X-ZM-MESSAGEID: 1771617241545158500 With colo we load device vmstate during each checkpoint, on top of a vm that was already running. Some devices expect a reset before loading vmstate on such a previously running vm. This fixes a crash when using COLO with Q35 machine. The reset adds 10-20ms overhead to the checkpointing proces in my testing. Reviewed-by: Peter Xu Signed-off-by: Lukas Straub --- migration/colo.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/migration/colo.c b/migration/colo.c index 96102c9d0fb3b60e063c81ce07b730011bc4919f..dc7cfa81ef7db78e3ee372642de= 48567c5bc06eb 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -729,6 +729,12 @@ static void colo_incoming_process_checkpoint(Migration= IncomingState *mis, =20 bql_lock(); vmstate_loading =3D true; + /* + * With colo we load device vmstate during each checkpoint, on top of + * a vm that was already running. Some devices expect a reset before + * loading vmstate on such a previously running vm. + */ + qemu_system_reset(SHUTDOWN_CAUSE_SNAPSHOT_LOAD); colo_flush_ram_cache(); ret =3D qemu_load_device_state(fb, errp); if (ret < 0) { --=20 2.39.5 From nobody Sat Feb 28 00:53:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1771617192; cv=none; d=zohomail.com; s=zohoarc; b=JsTinADFv4lasLe9fdAaiPbeWpEMsMI1rNmzYc9Hn4ju8gghiHVDgBVjAq7svHOdptRL5jU5S0Dx7/9FQk+rpWL7WeXP5GZq6HopZEvIumNJt+JJHbry5snjadXB6OTVNLcM633K4Om9RiQCV9thhRXVnEE6nosSqvnyuTd5a/I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771617192; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=YSxykUnLHj+SuX5ceNRivJWw7C8CFbfonhplWMaurEo=; b=H3xUtBAgiqyV+3YxwRZE68NxDzDu3mhyAVVWsmNwAurJKqEfDLEgiSmPeO6dzIENkTfHfbvSQjnerhjDV/Xv1Kly77cM0gT0qAPYFY+fIbf/OlKwB5ivh6ADV2rebzrV215Q7J2dKIJJK6uqY201lINbv0k3ZnOfd8nHZxdmPoc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771617192362820.8382567510971; Fri, 20 Feb 2026 11:53:12 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vtWXh-0000UY-92; Fri, 20 Feb 2026 14:52:03 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXc-0000SI-T1 for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:51:56 -0500 Received: from mout.web.de ([212.227.15.4]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXb-0001QU-1u for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:51:56 -0500 Received: from [127.0.1.1] ([84.133.37.84]) by smtp.web.de (mrweb005 [213.165.67.108]) with ESMTPSA (Nemesis) id 1MtPre-1vbIfQ0tnK-00r7vK; Fri, 20 Feb 2026 20:51:50 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1771617110; x=1772221910; i=lukasstraub2@web.de; bh=YSxykUnLHj+SuX5ceNRivJWw7C8CFbfonhplWMaurEo=; h=X-UI-Sender-Class:From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:References:In-Reply-To:To:Cc: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=regRXqGaruUOr79fWRzDSmktwyBU5J7FgnvtQGIqGvc/4f+5tp4MOmhZSunE6PjA uE8Kp6fsPgA6V5T7YUilDMJgrcbPJTA8DIBxCus1wIo2N0teteH8+0cDuXVOl9fwh Ct3q4P0UCKBKC2EHofcnXWBeA1jeIgV3ZIQtB2xUjmkrzSR5RG1ooWoSr3fUkVCTR e5KxFIa4wWnngMIli0xwqU3JDcqF01qJFOpX6cbw/UlsjUyyK6Z0ri5R85RHhvB7B QwOUbO6QJ50bkAfY49oCs1krAov/cYswL5Tmjd9PjFdfI2R0EJYQ6etPWH2yaozE4 Tpml8UU/+lgd9mFlVA== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Fri, 20 Feb 2026 20:51:33 +0100 Subject: [PATCH v10 11/19] colo: Hold the BQL while sending ram state MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260220-colo_unit_test_multifd-v10-11-bfe67d422ef1@web.de> References: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> In-Reply-To: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Zhang Chen , Hailiang Zhang , Markus Armbruster , Li Zhijian , "Dr. David Alan Gilbert" , Lukas Straub X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1103; i=lukasstraub2@web.de; h=from:subject:message-id; bh=RA7Q8b6eDwgtboLVRiR+7AHIKPUv7kjwK/dVBwC/CXE=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpmLtOvYjjpYmlxWh+FlSdi2Je/Kqe9cyv8FgRW zHxhEn5vkiJAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaZi7TgAKCRA1qwsonF2y WEcPEACUhFI7q10DMQ70Skb3OfSolcG5HRkYEI0022aJhUD72pxt6C8/oX1P5ZAlPICtg8Ri6UY xkN6F0YiMckoAUM6D3FhPdjQdYiBAkkHhbFLwKZs/8YwgZs/gITO4gU2CrnkJ9xK/SWBfWp+FE/ p87zKyXy0kWGJFenCDTx5wTFEHQw3Hv6y5SknNrQt04XCgLD/1Jg7MrDElgeLlZkZ7FvikWqWjP ZmBW3V+E2ES8BV4lBZLC4sZ6byxpkcJAQZtFkM0hR+4QpMICrLlA3xPFcOvDEyYJmwwSzhi4MWm AZDXBXYVSSZ+PRMD+QKIKXsIkdVZNN8irlaRNs6vAuIf2zLMB/nKBmCvyqyf51nHDZLwjaoMrcD fPoq9GXD6ksiyrrTlsiNCkJfWoR/EbgVg0afy8VXC7GNgHhkQhIZGhf3hSbbwxFgWRfRTLPuDzW XlOvIW7hQjBWiWmzboA6Yl1v8VQQwnn2Veh9wWFVNS66W38P1N6YtBT4cR0fm3LACJI09rKV91A +izYzJOMHMgWgOLy4n5QsSKe/ot8YNuvl9Wc7rFnH4zH27sjaN8D34pQt3zSPjNz9wpHKStIusi 6KgK/0LEaMzbRG1iYXTpCZ4bLuDMUgU6sHYKF1U92LVgvtwhfGDNN6Lpn0I+2W7MJ+7bmQqQLc2 OZ4ygnUNlDcVLfg== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:OACjv1tRceKRRxAVH5powvHG+6JM4BW1xWgSEdmwPPyugHmeJyv lvp7ayuPdConF91yfw8MAwG/Gk0KNsinJeI4iGzsmAxAP65GxyuBa39q8n0TYzJ0/ONADS1 w7vbMHBFNylf6sceYSzDYcMV5s3Rny0Y7xLvUc4VQ/HxPco6DD318jgfyBCsBjs7n7uMsxx 00N20JdRVQanYeEv8R7YQ== UI-OutboundReport: notjunk:1;M01:P0:SQa0JcU8vOA=;3AkX1BXr1RN3jNSjo5l+3yB/f1m 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 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.4; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity lukasstraub2@web.de) X-ZM-MESSAGEID: 1771617194417158500 qemu_savevm_state_complete_precopy() requires that BQL is held. This fixes a crash when running with TCG accel. Reviewed-by: Peter Xu Signed-off-by: Lukas Straub --- migration/colo.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/migration/colo.c b/migration/colo.c index dc7cfa81ef7db78e3ee372642de48567c5bc06eb..3297aa593cd9f87bf1013598464= cc581a9d23531 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -455,9 +455,8 @@ static int colo_do_checkpoint_transaction(MigrationStat= e *s, =20 /* Note: device state is saved into buffer */ ret =3D qemu_save_device_state(fb, &local_err); - - bql_unlock(); if (ret < 0) { + bql_unlock(); goto out; } =20 @@ -471,6 +470,7 @@ static int colo_do_checkpoint_transaction(MigrationStat= e *s, */ qemu_savevm_state_complete_precopy_iterable(s->to_dst_file, false); qemu_savevm_state_end(s->to_dst_file); + bql_unlock(); =20 /* * We need the size of the VMstate data in Secondary side, --=20 2.39.5 From nobody Sat Feb 28 00:53:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1771617163; cv=none; d=zohomail.com; s=zohoarc; b=B8HC9h1VtD+wwBCOPV0WXZta3plA8SgohXAy9ia5KTrWml4SDcFjYwVVheqkHTlem8C8aei+Ges3vKNfCJzzsZ3nkg6++FZ9RIvWvCvCOEOzH7IBHQtN8cSjkaUPy37K47L7WeOlIPeQShjDvjkb+Az42ir8F3U/Djc5b04sfLg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771617163; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=QnjLUeKSVlL/TnFvcfaE/7Aufpnl6G2wkPqvyU4/A9A=; b=HNe3UrgIRzMXriU0vNpkTea7I/kLCUweyw/hzMtmBPhJGjDbDb+61lzSIX6U+wNHVDaPS342RrAclncYd1Axw1hMFZnckfta+GiW12O93HotFv5RNCRUpKX9vuu8C0nAnc7lVJVbd46SO7jCRQA0fwIAih0Mu1Kw6uhpfMHdlhg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771617163800364.8617322580392; Fri, 20 Feb 2026 11:52:43 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vtWXg-0000UM-Bm; Fri, 20 Feb 2026 14:52:00 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXb-0000Rr-LT for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:51:55 -0500 Received: from mout.web.de ([212.227.15.4]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXZ-0001Pt-KF for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:51:55 -0500 Received: from [127.0.1.1] ([84.133.37.84]) by smtp.web.de (mrweb005 [213.165.67.108]) with ESMTPSA (Nemesis) id 1Mr7ac-1vQBns28m6-00ox7W; Fri, 20 Feb 2026 20:51:50 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1771617110; x=1772221910; i=lukasstraub2@web.de; bh=QnjLUeKSVlL/TnFvcfaE/7Aufpnl6G2wkPqvyU4/A9A=; h=X-UI-Sender-Class:From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:References:In-Reply-To:To:Cc: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=Tei7qqSG+yuCG5hTZiP4AY8XkGNgrIsKxJWrfvVrBc8R9LkqmUCWk3hLQDW+Mi5g mk6oQYaYMcQeRJ5jBjct9ZTeM9y7ouq4T1lIGNfMTv4bIkmxeZd3c7PxLkQzYARq1 Sv78eD2+6Iq3zjMhCwfXqwE0FcRR/UX5MIujj0cwTMpG9hKR1I3/yKjbBOMIWLo4I YvNsbHNUe90BHxXkK9x+Mn+siomPzA/injcu0FilMIFiJdQnHlwxRLdHb1ONzAXyv 6QBfcXWr+aKmFCZs5IW22BHrUaTyT6D+WUxVbNUsp1JkSBl2bFyniE6oH/mYDCWb2 Xg+MaW64YC15y3ueFA== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Fri, 20 Feb 2026 20:51:34 +0100 Subject: [PATCH v10 12/19] colo: Do not hold the BQL while receiving ram state. MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260220-colo_unit_test_multifd-v10-12-bfe67d422ef1@web.de> References: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> In-Reply-To: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Zhang Chen , Hailiang Zhang , Markus Armbruster , Li Zhijian , "Dr. David Alan Gilbert" , Lukas Straub X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1457; i=lukasstraub2@web.de; h=from:subject:message-id; bh=5X2xJUQOZtX1vrH3iSE65Qld5dEQ8f6o9Mt01ciNeAY=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpmLtOx5xoFuuv2+1WnpVFY0rvJEkEvS8aYO14T S/P3qysLSuJAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaZi7TgAKCRA1qwsonF2y WMgED/0ahO/2mIt1oPBWswq58e29zNZ0kb3pTZTIkC8g5i1Nh5HSck0djdZnbKM2kLKmlE62BCa K918oPzh+GQXGnhRJNSoc8BfT2sxuhDOS11RKPzdre+zgWBvWZhUaI+0PsTDx1VR59rvthp8VLW 7K/1Dej9JiR35+jIKtcmLtU5VgKo1XR40ytGSbUeUad6CHsp3CIjoDKRUGUJgtn4SHnwqyOZHgx rbwmExFbVth5ZEfkYCxnBZeE94Q+2jou8qGw9sstjN/PLdaIxqWGz95nzZa1psVOlfAxJKBJDc8 NoB+yp2h14UH85Y2tsRWNhEWcEOYmaQHm1S2P4HTP2gyYRQcg3B2JJ8yjQ2wsjHStl/QFsc+pOp ejhdlla5skjhTB9twCJnhL1P5yS9pZG0t/D/BEhycnSRyjWct9MJArzuL1iQBLUn1qGjTYicDdW 5aiAAxDY56Gv4bfZiWp+Nkg8dyNUQgxJniBgjz0ziuPOLuLjINNLsLI07Yk68MSjLdUoY8UZxB0 DeefcqsMjCoIqCNOLcjAF1K8IbDpZSvtu4dhFaot72D26u07AY+GdwV9qF4Bih/7+ozqcZxfr0U xaAkH4cT6i5Rxrr/egStKLjlEEZTJCUjRMG7jBFu5ZGziUllk2YSkpw1DEmLMNLYr2BxBKbRB7G kmEMp64Xnm6K8Cg== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:JcS18YjSgDLEh8brrmFR0fOq7k4cO7Qee1u8wz1yuH2DwhsWCFl GU/80QjtGwosmDMNP/o+ZZX7es1EBbJ4MGVb+DaSuwbwk05gUh1blmlRDeJmVGj5rVHh23f byXyDRGqSzh9YBu3c+Srf8G8cYiWCed8N4U33Pz0msKLSvw+kRV+Hlxe0vkk17lrYYwntc2 4XQ7SEN8iJpuCMy83lw3g== UI-OutboundReport: notjunk:1;M01:P0:Z67JpTiCL6k=;Akg4fXzDMFLq3IkFB3p9ELOzoy+ 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 jRqqjNuI= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.4; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity lukasstraub2@web.de) X-ZM-MESSAGEID: 1771617165723158500 We only receive ram into the colo cache here and don't touch anything else, so the BQL is not needed here. Move cpu_synchronize_all_states() downwards, before we apply the received checkpoint. It turns out that qemu_system_reset() already calls it for us. Reviewed-by: Peter Xu Signed-off-by: Lukas Straub --- migration/colo.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/migration/colo.c b/migration/colo.c index 3297aa593cd9f87bf1013598464cc581a9d23531..ce02c71d8857d470be434bdf3a9= cacad3baab0d5 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -686,11 +686,7 @@ static void colo_incoming_process_checkpoint(Migration= IncomingState *mis, return; } =20 - bql_lock(); - cpu_synchronize_all_states(); ret =3D qemu_loadvm_state_main(mis->from_src_file, mis, errp); - bql_unlock(); - if (ret < 0) { return; } @@ -733,6 +729,8 @@ static void colo_incoming_process_checkpoint(MigrationI= ncomingState *mis, * With colo we load device vmstate during each checkpoint, on top of * a vm that was already running. Some devices expect a reset before * loading vmstate on such a previously running vm. + * + * NOTE: qemu_system_reset() calls cpu_synchronize_all_states() for us */ qemu_system_reset(SHUTDOWN_CAUSE_SNAPSHOT_LOAD); colo_flush_ram_cache(); --=20 2.39.5 From nobody Sat Feb 28 00:53:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1771617241; cv=none; d=zohomail.com; s=zohoarc; b=BmTT3ESYl5b3n7uE8a6/e7cMt7CiHMGstV746K4nHFNHNn4nmOI38y0aGa8UQjkfPm4msGlCIkjA4EyhbIepE8Fkh34/kAJou3zS/4THrWOo4a6C/J2RMBdwj7mlfoAPShb0ikqG3n7CNBku4pLczadULmWTvVkByH1tdE7uzm4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771617241; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=yDiaSK9OpxS8V2pxAHSs+oO9Yxg0bwU7fddiiz7QY1k=; b=RgAU3HtMO5iduq3S0uT8MQWoTQHchd8tKmhZi5RggRwaBmZmFIf9anIUO6v5Ghm+VT7xe5GF8CAR2Dx8axWn1glTZaiB7OmUgvkROJXuBN3RKTJ1U4dPlaLMPnHyvt8BJmRR7v6HBCDX/sOy6+8NJOTka+4w37GD7VCgSOao6go= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771617241025693.0158641368757; Fri, 20 Feb 2026 11:54:01 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vtWXq-0000XD-QD; Fri, 20 Feb 2026 14:52:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXh-0000US-3m for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:52:01 -0500 Received: from mout.web.de ([212.227.15.3]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXe-0001SE-Pi for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:52:00 -0500 Received: from [127.0.1.1] ([84.133.37.84]) by smtp.web.de (mrweb005 [213.165.67.108]) with ESMTPSA (Nemesis) id 1MzTLI-1vXRJO3Txg-00zMim; Fri, 20 Feb 2026 20:51:50 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1771617111; x=1772221911; i=lukasstraub2@web.de; bh=yDiaSK9OpxS8V2pxAHSs+oO9Yxg0bwU7fddiiz7QY1k=; h=X-UI-Sender-Class:From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:References:In-Reply-To:To:Cc: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=VjzwZoRmpVFwmiF6VGCexafMNgjwiZ+sGVty9wcFgBoB8/N6e+AjiO58nKyiIpX3 NnG9m5FdEMG7mqWnR0SEuWFr6Hq6L9T0SHDXb3sUWwnbdUD6p8y4KLE5g2cpYKSw9 vAGgC8Wp1I1Fdff+4ZGHwzdag5lM+uMFHewtNuDA3E4iQIrlqGF7o8r+cS/Cf4PIu IKV/v4/HsmBNzUXGf8Hkr5UlgFSekyyt95oIE1OdMSyGVFmnxnpqorFc2Bymc4PX/ bw8Ap43cZrnRMkYQ8AyLtQNMeSJ1CSZKdeg1KMaN3eGNG7C7ADvHF4UjWqq1EsHch LNdYusmIQff7zSeooQ== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Fri, 20 Feb 2026 20:51:35 +0100 Subject: [PATCH v10 13/19] migration-test: Add COLO migration unit test MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260220-colo_unit_test_multifd-v10-13-bfe67d422ef1@web.de> References: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> In-Reply-To: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Zhang Chen , Hailiang Zhang , Markus Armbruster , Li Zhijian , "Dr. David Alan Gilbert" , Lukas Straub X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=10668; i=lukasstraub2@web.de; h=from:subject:message-id; bh=825HURWaTdxx68arWBum9/F1NbVpsOOl8RFvbUAzHSM=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpmLtOKnapJZ1ZilIcbokws85cTA3OunKZSmDTX BEj3jCGPfaJAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaZi7TgAKCRA1qwsonF2y WNgKD/99KIP3xjEO9w6k3r1w/WcHi6vmRJm7NdYRlY3fM4k27y6KW4UGEbJoxpksMyyho15yAAl XA/QNEZY5pniPoyapZfZThXH2MHE/3sVfr214IObNtvnu6ixuI1YkJr5iJxUuxqXYl2J6daQGzv 7ihGm+h2q3Y6cCTnaU5f/ugk88GMn7HK3uzs6/LX9Nh5X/7OQdexrDns4z3KpPYJGXTInn2eo3R N9Safd2UJ6uN+i1ekzvknziJCU0zhVQ2pR7uUpu+/ULzHdN17Sf9c9kydvddpYknfgeb+HD37Z2 1EoZxWEZA8mv9UDBUA34+mbdhJ6nLIsqtOkQg4TNCMbU+Yr7JhiZhikPdFrcX4UepUuAk3vTmYh pKiB4CXDvI4Meh3EUVxO3c7g4x3KLEXcvD1aVksAQfznSEx87lQNBs1PsY3UGjjcKImiK9YSaPH I7cp7iUs+KeJrBXX0i2/Bh/VVR0/7DCHVqydB4/Zlmh27G+UqxNO8+pbmhmbSyYEQLzbWnkmkD2 Ji5SeeQ/ILxAfJrU6ObTvbS/sx7x7BLEj60KU2bMNlMQjOhAEy/O0Adn44NvtWHUM/jvhKqpA83 aTdYi0aiyhjAp5eJoqOBEg0TYyU0ZuQM7K5RySxRwtSJej5InAU4UE3p4FxLTWkBhV/M1PWC3Z7 Rd9+APwcoBF9zig== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:qQCO7YyrEIxhcQhyBk/xAGYDeqhFThLpsNqwRXeHG8uw3vCUAg9 ThcaW4e7eXVyYq/nTi4zZeJGnqlqCiCAtg6pzCe3C3NeJRjoMqBG6IdebHiyoyC5d9mV/ig ++1xBqfQGCch7aR7qmOjFyJQuN+XKP6c8jIE4Uxuw9HrJTCIlCgqow2nWvE2rA8/gidLXlT HiFPRkSmCl6tumbNIjcXQ== UI-OutboundReport: notjunk:1;M01:P0:rm1BfbPqSLg=;iwqECQhwqgHpirXK7sTz0y0GqCL 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 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.3; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity lukasstraub2@web.de) X-ZM-MESSAGEID: 1771617241683158500 Add a COLO migration test for COLO migration and failover. Reviewed-by: Fabiano Rosas Tested-by: Fabiano Rosas Reviewed-by: Peter Xu Signed-off-by: Lukas Straub --- MAINTAINERS | 1 + tests/qtest/meson.build | 7 +- tests/qtest/migration-test.c | 1 + tests/qtest/migration/colo-tests.c | 198 +++++++++++++++++++++++++++++++++= ++++ tests/qtest/migration/framework.h | 5 + 5 files changed, 211 insertions(+), 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS index 5519ea4e163229a9bbc06318a0ee06d88ba6a8a1..a587a9233ac556a420f8784c4e3= 217e5c5b99f34 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3871,6 +3871,7 @@ F: migration/colo* F: migration/multifd-colo.* F: include/migration/colo.h F: include/migration/failover.h +F: tests/qtest/migration/colo-tests.c F: docs/COLO-FT.txt =20 COLO Proxy diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build index 25fdbc798010b19e8ec9b6ab55e02d3fb5741398..6a46e2a767de12d978d910ddb6d= e175bce9810b8 100644 --- a/tests/qtest/meson.build +++ b/tests/qtest/meson.build @@ -374,6 +374,11 @@ if gnutls.found() endif endif =20 +migration_colo_files =3D [] +if get_option('replication').allowed() + migration_colo_files =3D [files('migration/colo-tests.c')] +endif + qtests =3D { 'aspeed_hace-test': files('aspeed-hace-utils.c', 'aspeed_hace-test.c'), 'aspeed_smc-test': files('aspeed-smc-utils.c', 'aspeed_smc-test.c'), @@ -385,7 +390,7 @@ qtests =3D { 'migration/migration-util.c') + dbus_vmstate1, 'erst-test': files('erst-test.c'), 'ivshmem-test': [rt, '../../contrib/ivshmem-server/ivshmem-server.c'], - 'migration-test': test_migration_files + migration_tls_files, + 'migration-test': test_migration_files + migration_tls_files + migration= _colo_files, 'pxe-test': files('boot-sector.c'), 'pnv-xive2-test': files('pnv-xive2-common.c', 'pnv-xive2-flush-sync.c', 'pnv-xive2-nvpg_bar.c'), diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c index 08936871741535c926eeac40a7d7c3f461c72fd0..e582f05c7dc2673dbd05a936df8= feb6c964b5bbc 100644 --- a/tests/qtest/migration-test.c +++ b/tests/qtest/migration-test.c @@ -55,6 +55,7 @@ int main(int argc, char **argv) migration_test_add_precopy(env); migration_test_add_cpr(env); migration_test_add_misc(env); + migration_test_add_colo(env); =20 ret =3D g_test_run(); =20 diff --git a/tests/qtest/migration/colo-tests.c b/tests/qtest/migration/col= o-tests.c new file mode 100644 index 0000000000000000000000000000000000000000..598a1d3821ed0a9031873270202= 7cebad47352fd --- /dev/null +++ b/tests/qtest/migration/colo-tests.c @@ -0,0 +1,198 @@ +/* + * SPDX-License-Identifier: GPL-2.0-or-later + * + * QTest testcases for COLO migration + * + * Copyright (c) 2025 Lukas Straub + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + * + */ + +#include "qemu/osdep.h" +#include "libqtest.h" +#include "migration/framework.h" +#include "migration/migration-qmp.h" +#include "migration/migration-util.h" +#include "qemu/module.h" + +static int test_colo_common(MigrateCommon *args, + bool failover_during_checkpoint, + bool primary_failover) +{ + QTestState *from, *to; + void *data_hook =3D NULL; + + /* + * For the COLO test, both VMs will run in parallel. Thus both VMs wan= t to + * open the image read/write at the same time. Using read-only=3Don is= not + * possible here, because ide-hd does not support read-only backing im= age. + * + * So use -snapshot, where each qemu instance creates its own writable + * snapshot internally while leaving the real image read-only. + */ + args->start.opts_source =3D "-snapshot"; + args->start.opts_target =3D "-snapshot"; + + /* + * COLO migration code logs many errors when the migration socket + * is shut down, these are expected so we hide them here. + */ + args->start.hide_stderr =3D true; + + /* + * Test with yank with out of band capability since that is how it is + * used in production. + */ + args->start.oob =3D true; + args->start.caps[MIGRATION_CAPABILITY_X_COLO] =3D true; + + if (migrate_start(&from, &to, args->listen_uri, &args->start)) { + return -1; + } + + migrate_set_parameter_int(from, "x-checkpoint-delay", 300); + + if (args->start_hook) { + data_hook =3D args->start_hook(from, to); + } + + migrate_ensure_converge(from); + wait_for_serial("src_serial"); + + migrate_qmp(from, to, args->connect_uri, NULL, "{}"); + + wait_for_migration_status(from, "colo", NULL); + wait_for_resume(to, get_dst()); + + wait_for_serial("src_serial"); + wait_for_serial("dest_serial"); + + /* wait for 3 checkpoints */ + for (int i =3D 0; i < 3; i++) { + qtest_qmp_eventwait(to, "RESUME"); + wait_for_serial("src_serial"); + wait_for_serial("dest_serial"); + } + + if (failover_during_checkpoint) { + qtest_qmp_eventwait(to, "STOP"); + } + if (primary_failover) { + qtest_qmp_assert_success(from, "{'exec-oob': 'yank', 'id': 'yank-c= md', " + "'arguments': {'instances':" + "[{'type': 'migration'}]}}= "); + qtest_qmp_assert_success(from, "{'execute': 'x-colo-lost-heartbeat= '}"); + wait_for_serial("src_serial"); + } else { + qtest_qmp_assert_success(to, "{'exec-oob': 'yank', 'id': 'yank-cmd= ', " + "'arguments': {'instances':" + "[{'type': 'migration'}]}}"); + qtest_qmp_assert_success(to, "{'execute': 'x-colo-lost-heartbeat'}= "); + wait_for_serial("dest_serial"); + } + + if (args->end_hook) { + args->end_hook(from, to, data_hook); + } + + migrate_end(from, to, !primary_failover); + + return 0; +} + +static void test_colo_plain_common(MigrateCommon *args, + bool failover_during_checkpoint, + bool primary_failover) +{ + args->listen_uri =3D "tcp:127.0.0.1:0"; + test_colo_common(args, failover_during_checkpoint, primary_failover); +} + +static void *hook_start_multifd(QTestState *from, QTestState *to) +{ + return migrate_hook_start_precopy_tcp_multifd_common(from, to, "none"); +} + +static void test_colo_multifd_common(MigrateCommon *args, + bool failover_during_checkpoint, + bool primary_failover) +{ + args->listen_uri =3D "defer"; + args->start_hook =3D hook_start_multifd; + args->start.caps[MIGRATION_CAPABILITY_MULTIFD] =3D true; + test_colo_common(args, failover_during_checkpoint, primary_failover); +} + +static void test_colo_plain_primary_failover(char *name, MigrateCommon *ar= gs) +{ + test_colo_plain_common(args, false, true); +} + +static void test_colo_plain_secondary_failover(char *name, MigrateCommon *= args) +{ + test_colo_plain_common(args, false, false); +} + +static void test_colo_multifd_primary_failover(char *name, MigrateCommon *= args) +{ + test_colo_multifd_common(args, false, true); +} + +static void test_colo_multifd_secondary_failover(char *name, + MigrateCommon *args) +{ + test_colo_multifd_common(args, false, false); +} + +static void test_colo_plain_primary_failover_checkpoint(char *name, + MigrateCommon *arg= s) +{ + test_colo_plain_common(args, true, true); +} + +static void test_colo_plain_secondary_failover_checkpoint(char *name, + MigrateCommon *a= rgs) +{ + test_colo_plain_common(args, true, false); +} + +static void test_colo_multifd_primary_failover_checkpoint(char *name, + MigrateCommon *a= rgs) +{ + test_colo_multifd_common(args, true, true); +} + +static void test_colo_multifd_secondary_failover_checkpoint(char *name, + MigrateCommon = *args) +{ + test_colo_multifd_common(args, true, false); +} + +void migration_test_add_colo(MigrationTestEnv *env) +{ + if (!env->full_set) { + return; + } + + migration_test_add("/migration/colo/plain/primary_failover", + test_colo_plain_primary_failover); + migration_test_add("/migration/colo/plain/secondary_failover", + test_colo_plain_secondary_failover); + + migration_test_add("/migration/colo/multifd/primary_failover", + test_colo_multifd_primary_failover); + migration_test_add("/migration/colo/multifd/secondary_failover", + test_colo_multifd_secondary_failover); + + migration_test_add("/migration/colo/plain/primary_failover_checkpoint", + test_colo_plain_primary_failover_checkpoint); + migration_test_add("/migration/colo/plain/secondary_failover_checkpoin= t", + test_colo_plain_secondary_failover_checkpoint); + + migration_test_add("/migration/colo/multifd/primary_failover_checkpoin= t", + test_colo_multifd_primary_failover_checkpoint); + migration_test_add("/migration/colo/multifd/secondary_failover_checkpo= int", + test_colo_multifd_secondary_failover_checkpoint); +} diff --git a/tests/qtest/migration/framework.h b/tests/qtest/migration/fram= ework.h index 40984d04930da2d181326d9f6a742bde49018103..80eef758932ce9c301ed6c0f638= 3d18756144870 100644 --- a/tests/qtest/migration/framework.h +++ b/tests/qtest/migration/framework.h @@ -264,5 +264,10 @@ void migration_test_add_file(MigrationTestEnv *env); void migration_test_add_precopy(MigrationTestEnv *env); void migration_test_add_cpr(MigrationTestEnv *env); void migration_test_add_misc(MigrationTestEnv *env); +#ifdef CONFIG_REPLICATION +void migration_test_add_colo(MigrationTestEnv *env); +#else +static inline void migration_test_add_colo(MigrationTestEnv *env) {}; +#endif =20 #endif /* TEST_FRAMEWORK_H */ --=20 2.39.5 From nobody Sat Feb 28 00:53:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1771617231; cv=none; d=zohomail.com; s=zohoarc; b=mjOwYO7y+J2Xpn1PLNQbLZuNsK2xE/tIBhI7b7XmfTXDum4aYByOiKugHJvAgxwX4MxZMUpZzwvWPtgnJsdN3f4OTnH5pUcwYXUwGhWG4n9HES7r+RaMJQoMMMmRA5VOy+68O4jOnUcX8SNfa9CUKclZksnDEYj65llwnptfaFQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771617231; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=tm2GuqhPzDQglqiU9unalx2iQFmY16oh1Y5nzSaxNkU=; b=Q2s+YD9MmwRmid73kFjWI7Hb6epTVo8E+fkMRxd3txoHv7/ke0qv+AYW0fPgVFxO4l3GkRCSppBj8r8up+48JhnMJnK5Hx4vOMek2JjIQChyP0cLcM9ystq2R93cSPJUl41xUfcZzltnA2UyYVzk3qag0mWQ99CdYDMQt84KUms= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771617230985909.7302873084839; Fri, 20 Feb 2026 11:53:50 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vtWXp-0000WF-2u; Fri, 20 Feb 2026 14:52:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXl-0000Vn-H1 for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:52:05 -0500 Received: from mout.web.de ([212.227.15.14]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXg-0001T9-B6 for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:52:05 -0500 Received: from [127.0.1.1] ([84.133.37.84]) by smtp.web.de (mrweb005 [213.165.67.108]) with ESMTPSA (Nemesis) id 1MNwfU-1w4Z8p0YO0-00O65o; Fri, 20 Feb 2026 20:51:51 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1771617111; x=1772221911; i=lukasstraub2@web.de; bh=tm2GuqhPzDQglqiU9unalx2iQFmY16oh1Y5nzSaxNkU=; h=X-UI-Sender-Class:From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:References:In-Reply-To:To:Cc: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=IHMTsvV6/cj06RI/8tY7DGntUTZq5jpTTVL8ZOQn0vdm8cu4vXM0FgoEh0cTxsxn 1y61v79d8VcRo8CWO5R+FypzT5yCIHs5zQskJKUTDjal47hkfEx0IiOlhYA7fPD/T 6AMocH+XZcQX58ivlyzLgdtxOse8S+UuG6IrIOMCLQ1+ZIbV52vzFJnr6iSXGuhTK ZAnQF9u+yVebi4bNLRHQs+hUKDATc7+/nJ+H5sybVu9+nkXMRdKYHyOPOCUjbFsHo fV6d7eVITLeeZlyUxLALr4PnyrNj0cYT75ku06L7hrIMgqlVO6J9HyXEXLzUCHj9L SveBkhdsqwEx08ZW5w== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Fri, 20 Feb 2026 20:51:36 +0100 Subject: [PATCH v10 14/19] Convert colo main documentation to restructuredText MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260220-colo_unit_test_multifd-v10-14-bfe67d422ef1@web.de> References: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> In-Reply-To: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Zhang Chen , Hailiang Zhang , Markus Armbruster , Li Zhijian , "Dr. David Alan Gilbert" , Lukas Straub X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=41531; i=lukasstraub2@web.de; h=from:subject:message-id; bh=iT0yKWdgPjIrLAMyRRhfEz9UKNNM/A4TaDEqfoojmL4=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpmLtOUaKYKgoTo4StRHNY3GlcV0krIwwtXPTw9 HvHjmTdZqyJAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaZi7TgAKCRA1qwsonF2y WIPkD/9dLoOPfZzObLd/OihacZTpu7Yuj2VgG6vlT0NbUOKsHJtcShFlbQQbuOg/0qh+lkcH8Z7 kpBC6zHztb68gRRfhCvjLBuCQqJica71SqRXgrDNXw4YoDpEVRQbthg7YVDAg9zphVJp+Qm9HcA CYW6atPzTA5zPZbUJXQMJpsRVpSBMhRPhGrTJ5zCwKD0yahFITHGtcIAd/Uyq0rrEsxzqY3spAi h2gcVUfDyNZztB8eDXRpWYN8F51jX/JOdIMQsIIXISG9H1Ct9gfhqKahP2ZvkNgVQIahu+Lnm+y 8wzAZ1SG6Y63hVJXK3pxG/E5wwGN4dk4tnvk2b5DTjgtcXwdz7VCEKiMvttVhoIV3c+d+PaJAsp ynoI3aL1t0bdcYvyMKDdILww3ZS6enS6GzGAnNHpDOz6YtAw5McXuTF5qi18YIaUiEP5pdMsXcL u0eUIva9ZogKYtSgvI9btjaD79BcW6lasd54CPXv/drcUxuWXY+KRR5GkIF4t2l1NjNFQbsaOr0 eZ3rsHYDIXHrdNDNUPiMAmwV/SWfmK37nSPpBrlZcF00iRwLzJicIhmMSNN8Rf9ZChGFv1aHyto /F/+TMeFLNS31Z6vtNZIJuDSjdmnK+eSjHSOSV2UWM5tDlOFZxlzSZKFIVoyLkHudAl2Ap6kDtT BbMTFZ3MF9ZleDQ== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:ImepbSKhqJoELp+6LjZkecujlglgiwepl/I/nSoXUsj0b1L4KfL vOsz7XqNAKERPPFNmVeW7H5imRsL7evdDk+OcPrf40S+MN/AmMUZb2sIqTSJJ8jscNWQ+jB Ter2edKjxkbSKiPC1QdGb9KHdsR7tRk+G6xq3H883tDKKIKPawPBUob6zLcX0DcoPsxMg/x OAMFCQ9Q9g0MTnj1JmZAQ== UI-OutboundReport: notjunk:1;M01:P0:nCqL8/b3DMI=;UHw1hcDjHj9S6qB2gcWjGhDEDtv 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 oOCcInOqduiKaq+rmkLX Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.14; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity lukasstraub2@web.de) X-ZM-MESSAGEID: 1771617231941158500 Reviewed-by: Fabiano Rosas Reviewed-by: Zhang Chen Signed-off-by: Lukas Straub --- MAINTAINERS | 2 +- docs/COLO-FT.txt | 334 ------------------------------------------ docs/system/index.rst | 1 + docs/system/qemu-colo.rst | 360 ++++++++++++++++++++++++++++++++++++++++++= ++++ 4 files changed, 362 insertions(+), 335 deletions(-) diff --git a/MAINTAINERS b/MAINTAINERS index a587a9233ac556a420f8784c4e3217e5c5b99f34..486c361ceac893175a8cb4f9ae2= e8ac8202137ea 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3872,7 +3872,7 @@ F: migration/multifd-colo.* F: include/migration/colo.h F: include/migration/failover.h F: tests/qtest/migration/colo-tests.c -F: docs/COLO-FT.txt +F: docs/system/qemu-colo.rst =20 COLO Proxy M: Zhang Chen diff --git a/docs/COLO-FT.txt b/docs/COLO-FT.txt deleted file mode 100644 index 2283a09c080b8996f9767eeb415e8d4fbdc940af..000000000000000000000000000= 0000000000000 --- a/docs/COLO-FT.txt +++ /dev/null @@ -1,334 +0,0 @@ -COarse-grained LOck-stepping Virtual Machines for Non-stop Service ----------------------------------------- -Copyright (c) 2016 Intel Corporation -Copyright (c) 2016 HUAWEI TECHNOLOGIES CO., LTD. -Copyright (c) 2016 Fujitsu, Corp. - -This work is licensed under the terms of the GNU GPL, version 2 or later. -See the COPYING file in the top-level directory. - -This document gives an overview of COLO's design and how to use it. - -=3D=3D Background =3D=3D -Virtual machine (VM) replication is a well known technique for providing -application-agnostic software-implemented hardware fault tolerance, -also known as "non-stop service". - -COLO (COarse-grained LOck-stepping) is a high availability solution. -Both primary VM (PVM) and secondary VM (SVM) run in parallel. They receive= the -same request from client, and generate response in parallel too. -If the response packets from PVM and SVM are identical, they are released -immediately. Otherwise, a VM checkpoint (on demand) is conducted. - -=3D=3D Architecture =3D=3D - -The architecture of COLO is shown in the diagram below. -It consists of a pair of networked physical nodes: -The primary node running the PVM, and the secondary node running the SVM -to maintain a valid replica of the PVM. -PVM and SVM execute in parallel and generate output of response packets for -client requests according to the application semantics. - -The incoming packets from the client or external network are received by t= he -primary node, and then forwarded to the secondary node, so that both the P= VM -and the SVM are stimulated with the same requests. - -COLO receives the outbound packets from both the PVM and SVM and compares = them -before allowing the output to be sent to clients. - -The SVM is qualified as a valid replica of the PVM, as long as it generates -identical responses to all client requests. Once the differences in the ou= tputs -are detected between the PVM and SVM, COLO withholds transmission of the -outbound packets until it has successfully synchronized the PVM state to t= he SVM. - - Primary Node = Secondary Node -+------------+ +-----------------------+ +------------------------+= +------------+ -| | | HeartBeat +<----->+ HeartBeat |= | | -| Primary VM | +-----------+-----------+ +-----------+------------+= |Secondary VM| -| | | | = | | -| | +-----------|-----------+ +-----------|------------+= | | -| | |QEMU +---v----+ | |QEMU +----v---+ |= | | -| | | |Failover| | | |Failover| |= | | -| | | +--------+ | | +--------+ |= | | -| | | +---------------+ | | +---------------+ |= | | -| | | | VM Checkpoint +-------------->+ VM Checkpoint | |= | | -| | | +---------------+ | | +---------------+ |= | | -|Requests<--------------------------\ /-----------------\ /---------------= ------>Requests| -| | | ^ ^ | | | | |= | | -|Responses+---------------------\ /-|-|------------\ /--------------------= -----+Responses| -| | | | | | | | | | | | | |= | | -| | | +-----------+ | | | | | | | | | | +----------+ |= | | -| | | | COLO disk | | | | | | | | | | | | COLO disk| |= | | -| | | | Manager +---------------------------->| Manager | |= | | -| | | ++----------+ v v | | | | | v v | +---------++ |= | | -| | | |+-----------+-+-+-++| | ++-+--+-+---------+ | |= | | -| | | || COLO Proxy || | | COLO Proxy | | |= | | -| | | || (compare packet || | |(adjust sequence | | |= | | -| | | ||and mirror packet)|| | | and ACK) | | |= | | -| | | |+------------+---+-+| | +-----------------+ | |= | | -+------------+ +-----------------------+ +------------------------+= +------------+ -+------------+ | | | | = +------------+ -| VM Monitor | | | | | = | VM Monitor | -+------------+ | | | | = +------------+ -+---------------------------------------+ +-------------------------= ---------------+ -| Kernel | | | | | Kernel | = | -+---------------------------------------+ +-------------------------= ---------------+ - | | | | - +--------------v+ +---------v---+--+ +------------------+ +v---= ----------+ - | Storage | |External Network| | External Network | | S= torage | - +---------------+ +----------------+ +------------------+ +----= ----------+ - - -=3D=3D Components introduction =3D=3D - -You can see there are several components in COLO's diagram of architecture. -Their functions are described below. - -HeartBeat: -Runs on both the primary and secondary nodes, to periodically check platfo= rm -availability. When the primary node suffers a hardware fail-stop failure, -the heartbeat stops responding, the secondary node will trigger a failover -as soon as it determines the absence. - -COLO disk Manager: -When primary VM writes data into image, the colo disk manager captures thi= s data -and sends it to secondary VM's which makes sure the context of secondary V= M's -image is consistent with the context of primary VM 's image. -For more details, please refer to docs/block-replication.txt. - -Checkpoint/Failover Controller: -Modifications of save/restore flow to realize continuous migration, -to make sure the state of VM in Secondary side is always consistent with V= M in -Primary side. - -COLO Proxy: -Delivers packets to Primary and Secondary, and then compare the responses = from -both side. Then decide whether to start a checkpoint according to some rul= es. -Please refer to docs/colo-proxy.txt for more information. - -Note: -HeartBeat has not been implemented yet, so you need to trigger failover pr= ocess -by using 'x-colo-lost-heartbeat' command. - -=3D=3D COLO operation status =3D=3D - -+-----------------+ -| | -| Start COLO | -| | -+--------+--------+ - | - | Main qmp command: - | migrate-set-capabilities with x-colo - | migrate - | - v -+--------+--------+ -| | -| COLO running | -| | -+--------+--------+ - | - | Main qmp command: - | x-colo-lost-heartbeat - | or - | some error happened - v -+--------+--------+ -| | send qmp event: -| COLO failover | COLO_EXIT -| | -+-----------------+ - -COLO use the qmp command to switch and report operation status. -The diagram just shows the main qmp command, you can get the detail -in test procedure. - -=3D=3D Test procedure =3D=3D -Note: Here we are running both instances on the same host for testing, -change the IP Addresses if you want to run it on two hosts. Initially -127.0.0.1 is the Primary Host and 127.0.0.2 is the Secondary Host. - -=3D=3D Startup qemu =3D=3D -1. Primary: -Note: Initially, $imagefolder/primary.qcow2 needs to be copied to all host= s. -You don't need to change any IP's here, because 0.0.0.0 listens on any -interface. The chardev's with 127.0.0.1 IP's loopback to the local qemu -instance. - -# imagefolder=3D"/mnt/vms/colo-test-primary" - -# qemu-system-x86_64 -enable-kvm -cpu qemu64,kvmclock=3Don -m 512 -smp 1 -= qmp stdio \ - -device piix3-usb-uhci -device usb-tablet -name primary \ - -netdev tap,id=3Dhn0,vhost=3Doff,helper=3D/usr/lib/qemu/qemu-bridge-hel= per \ - -device rtl8139,id=3De0,netdev=3Dhn0 \ - -chardev socket,id=3Dmirror0,host=3D0.0.0.0,port=3D9003,server=3Don,wai= t=3Doff \ - -chardev socket,id=3Dcompare1,host=3D0.0.0.0,port=3D9004,server=3Don,wa= it=3Don \ - -chardev socket,id=3Dcompare0,host=3D127.0.0.1,port=3D9001,server=3Don,= wait=3Doff \ - -chardev socket,id=3Dcompare0-0,host=3D127.0.0.1,port=3D9001 \ - -chardev socket,id=3Dcompare_out,host=3D127.0.0.1,port=3D9005,server=3D= on,wait=3Doff \ - -chardev socket,id=3Dcompare_out0,host=3D127.0.0.1,port=3D9005 \ - -object filter-mirror,id=3Dm0,netdev=3Dhn0,queue=3Dtx,outdev=3Dmirror0 \ - -object filter-redirector,netdev=3Dhn0,id=3Dredire0,queue=3Drx,indev=3D= compare_out \ - -object filter-redirector,netdev=3Dhn0,id=3Dredire1,queue=3Drx,outdev= =3Dcompare0 \ - -object iothread,id=3Diothread1 \ - -object colo-compare,id=3Dcomp0,primary_in=3Dcompare0-0,secondary_in=3D= compare1,\ -outdev=3Dcompare_out0,iothread=3Diothread1 \ - -drive if=3Dide,id=3Dcolo-disk0,driver=3Dquorum,read-pattern=3Dfifo,vot= e-threshold=3D1,\ -children.0.file.filename=3D$imagefolder/primary.qcow2,children.0.driver=3D= qcow2 -S - -2. Secondary: -Note: Active and hidden images need to be created only once and the -size should be the same as primary.qcow2. Again, you don't need to change -any IP's here, except for the $primary_ip variable. - -# imagefolder=3D"/mnt/vms/colo-test-secondary" -# primary_ip=3D127.0.0.1 - -# qemu-img create -f qcow2 $imagefolder/secondary-active.qcow2 10G - -# qemu-img create -f qcow2 $imagefolder/secondary-hidden.qcow2 10G - -# qemu-system-x86_64 -enable-kvm -cpu qemu64,kvmclock=3Don -m 512 -smp 1 -= qmp stdio \ - -device piix3-usb-uhci -device usb-tablet -name secondary \ - -netdev tap,id=3Dhn0,vhost=3Doff,helper=3D/usr/lib/qemu/qemu-bridge-hel= per \ - -device rtl8139,id=3De0,netdev=3Dhn0 \ - -chardev socket,id=3Dred0,host=3D$primary_ip,port=3D9003,reconnect-ms= =3D1000 \ - -chardev socket,id=3Dred1,host=3D$primary_ip,port=3D9004,reconnect-ms= =3D1000 \ - -object filter-redirector,id=3Df1,netdev=3Dhn0,queue=3Dtx,indev=3Dred0 \ - -object filter-redirector,id=3Df2,netdev=3Dhn0,queue=3Drx,outdev=3Dred1= \ - -object filter-rewriter,id=3Drew0,netdev=3Dhn0,queue=3Dall \ - -drive if=3Dnone,id=3Dparent0,file.filename=3D$imagefolder/primary.qcow= 2,driver=3Dqcow2 \ - -drive if=3Dnone,id=3Dchilds0,driver=3Dreplication,mode=3Dsecondary,fil= e.driver=3Dqcow2,\ -top-id=3Dcolo-disk0,file.file.filename=3D$imagefolder/secondary-active.qco= w2,\ -file.backing.driver=3Dqcow2,file.backing.file.filename=3D$imagefolder/seco= ndary-hidden.qcow2,\ -file.backing.backing=3Dparent0 \ - -drive if=3Dide,id=3Dcolo-disk0,driver=3Dquorum,read-pattern=3Dfifo,vot= e-threshold=3D1,\ -children.0=3Dchilds0 \ - -incoming tcp:0.0.0.0:9998 - - -3. On Secondary VM's QEMU monitor, issue command -{"execute":"qmp_capabilities"} -{"execute": "migrate-set-capabilities", "arguments": {"capabilities": [ {"= capability": "x-colo", "state": true } ] } } -{"execute": "nbd-server-start", "arguments": {"addr": {"type": "inet", "da= ta": {"host": "0.0.0.0", "port": "9999"} } } } -{"execute": "nbd-server-add", "arguments": {"device": "parent0", "writable= ": true } } - -Note: - a. The qmp command nbd-server-start and nbd-server-add must be run - before running the qmp command migrate on primary QEMU - b. Active disk, hidden disk and nbd target's length should be the - same. - c. It is better to put active disk and hidden disk in ramdisk. They - will be merged into the parent disk on failover. - -4. On Primary VM's QEMU monitor, issue command: -{"execute":"qmp_capabilities"} -{"execute": "human-monitor-command", "arguments": {"command-line": "drive_= add -n buddy driver=3Dreplication,mode=3Dprimary,file.driver=3Dnbd,file.hos= t=3D127.0.0.2,file.port=3D9999,file.export=3Dparent0,node-name=3Dreplicatio= n0"}} -{"execute": "x-blockdev-change", "arguments":{"parent": "colo-disk0", "nod= e": "replication0" } } -{"execute": "migrate-set-capabilities", "arguments": {"capabilities": [ {"= capability": "x-colo", "state": true } ] } } -{"execute": "migrate", "arguments": {"uri": "tcp:127.0.0.2:9998" } } - - Note: - a. There should be only one NBD Client for each primary disk. - b. The qmp command line must be run after running qmp command line in - secondary qemu. - -5. After the above steps, you will see, whenever you make changes to PVM, = SVM will be synced. -You can issue command '{ "execute": "migrate-set-parameters" , "arguments"= :{ "x-checkpoint-delay": 2000 } }' -to change the idle checkpoint period time - -6. Failover test -You can kill one of the VMs and Failover on the surviving VM: - -If you killed the Secondary, then follow "Primary Failover". After that, -if you want to resume the replication, follow "Primary resume replication" - -If you killed the Primary, then follow "Secondary Failover". After that, -if you want to resume the replication, follow "Secondary resume replicatio= n" - -=3D=3D Primary Failover =3D=3D -The Secondary died, resume on the Primary - -{"execute": "x-blockdev-change", "arguments":{ "parent": "colo-disk0", "ch= ild": "children.1"} } -{"execute": "human-monitor-command", "arguments":{ "command-line": "drive_= del replication0" } } -{"execute": "object-del", "arguments":{ "id": "comp0" } } -{"execute": "object-del", "arguments":{ "id": "iothread1" } } -{"execute": "object-del", "arguments":{ "id": "m0" } } -{"execute": "object-del", "arguments":{ "id": "redire0" } } -{"execute": "object-del", "arguments":{ "id": "redire1" } } -{"execute": "x-colo-lost-heartbeat" } - -=3D=3D Secondary Failover =3D=3D -The Primary died, resume on the Secondary and prepare to become the new Pr= imary - -{"execute": "nbd-server-stop"} -{"execute": "x-colo-lost-heartbeat"} - -{"execute": "object-del", "arguments":{ "id": "f2" } } -{"execute": "object-del", "arguments":{ "id": "f1" } } -{"execute": "chardev-remove", "arguments":{ "id": "red1" } } -{"execute": "chardev-remove", "arguments":{ "id": "red0" } } - -{"execute": "chardev-add", "arguments":{ "id": "mirror0", "backend": {"typ= e": "socket", "data": {"addr": { "type": "inet", "data": { "host": "0.0.0.0= ", "port": "9003" } }, "server": true } } } } -{"execute": "chardev-add", "arguments":{ "id": "compare1", "backend": {"ty= pe": "socket", "data": {"addr": { "type": "inet", "data": { "host": "0.0.0.= 0", "port": "9004" } }, "server": true } } } } -{"execute": "chardev-add", "arguments":{ "id": "compare0", "backend": {"ty= pe": "socket", "data": {"addr": { "type": "inet", "data": { "host": "127.0.= 0.1", "port": "9001" } }, "server": true } } } } -{"execute": "chardev-add", "arguments":{ "id": "compare0-0", "backend": {"= type": "socket", "data": {"addr": { "type": "inet", "data": { "host": "127.= 0.0.1", "port": "9001" } }, "server": false } } } } -{"execute": "chardev-add", "arguments":{ "id": "compare_out", "backend": {= "type": "socket", "data": {"addr": { "type": "inet", "data": { "host": "127= .0.0.1", "port": "9005" } }, "server": true } } } } -{"execute": "chardev-add", "arguments":{ "id": "compare_out0", "backend": = {"type": "socket", "data": {"addr": { "type": "inet", "data": { "host": "12= 7.0.0.1", "port": "9005" } }, "server": false } } } } - -=3D=3D Primary resume replication =3D=3D -Resume replication after new Secondary is up. - -Start the new Secondary (Steps 2 and 3 above), then on the Primary: -{"execute": "drive-mirror", "arguments":{ "device": "colo-disk0", "job-id"= : "resync", "target": "nbd://127.0.0.2:9999/parent0", "mode": "existing", "= format": "raw", "sync": "full"} } - -Wait until disk is synced, then: -{"execute": "stop"} -{"execute": "block-job-cancel", "arguments":{ "device": "resync"} } - -{"execute": "human-monitor-command", "arguments":{ "command-line": "drive_= add -n buddy driver=3Dreplication,mode=3Dprimary,file.driver=3Dnbd,file.hos= t=3D127.0.0.2,file.port=3D9999,file.export=3Dparent0,node-name=3Dreplicatio= n0"}} -{"execute": "x-blockdev-change", "arguments":{ "parent": "colo-disk0", "no= de": "replication0" } } - -{"execute": "object-add", "arguments":{ "qom-type": "filter-mirror", "id":= "m0", "netdev": "hn0", "queue": "tx", "outdev": "mirror0" } } -{"execute": "object-add", "arguments":{ "qom-type": "filter-redirector", "= id": "redire0", "netdev": "hn0", "queue": "rx", "indev": "compare_out" } } -{"execute": "object-add", "arguments":{ "qom-type": "filter-redirector", "= id": "redire1", "netdev": "hn0", "queue": "rx", "outdev": "compare0" } } -{"execute": "object-add", "arguments":{ "qom-type": "iothread", "id": "iot= hread1" } } -{"execute": "object-add", "arguments":{ "qom-type": "colo-compare", "id": = "comp0", "primary_in": "compare0-0", "secondary_in": "compare1", "outdev": = "compare_out0", "iothread": "iothread1" } } - -{"execute": "migrate-set-capabilities", "arguments":{ "capabilities": [ {"= capability": "x-colo", "state": true } ] } } -{"execute": "migrate", "arguments":{ "uri": "tcp:127.0.0.2:9998" } } - -Note: -If this Primary previously was a Secondary, then we need to insert the -filters before the filter-rewriter by using the -""insert": "before", "position": "id=3Drew0"" Options. See below. - -=3D=3D Secondary resume replication =3D=3D -Become Primary and resume replication after new Secondary is up. Note -that now 127.0.0.1 is the Secondary and 127.0.0.2 is the Primary. - -Start the new Secondary (Steps 2 and 3 above, but with primary_ip=3D127.0.= 0.2), -then on the old Secondary: -{"execute": "drive-mirror", "arguments":{ "device": "colo-disk0", "job-id"= : "resync", "target": "nbd://127.0.0.1:9999/parent0", "mode": "existing", "= format": "raw", "sync": "full"} } - -Wait until disk is synced, then: -{"execute": "stop"} -{"execute": "block-job-cancel", "arguments":{ "device": "resync" } } - -{"execute": "human-monitor-command", "arguments":{ "command-line": "drive_= add -n buddy driver=3Dreplication,mode=3Dprimary,file.driver=3Dnbd,file.hos= t=3D127.0.0.1,file.port=3D9999,file.export=3Dparent0,node-name=3Dreplicatio= n0"}} -{"execute": "x-blockdev-change", "arguments":{ "parent": "colo-disk0", "no= de": "replication0" } } - -{"execute": "object-add", "arguments":{ "qom-type": "filter-mirror", "id":= "m0", "insert": "before", "position": "id=3Drew0", "netdev": "hn0", "queue= ": "tx", "outdev": "mirror0" } } -{"execute": "object-add", "arguments":{ "qom-type": "filter-redirector", "= id": "redire0", "insert": "before", "position": "id=3Drew0", "netdev": "hn0= ", "queue": "rx", "indev": "compare_out" } } -{"execute": "object-add", "arguments":{ "qom-type": "filter-redirector", "= id": "redire1", "insert": "before", "position": "id=3Drew0", "netdev": "hn0= ", "queue": "rx", "outdev": "compare0" } } -{"execute": "object-add", "arguments":{ "qom-type": "iothread", "id": "iot= hread1" } } -{"execute": "object-add", "arguments":{ "qom-type": "colo-compare", "id": = "comp0", "primary_in": "compare0-0", "secondary_in": "compare1", "outdev": = "compare_out0", "iothread": "iothread1" } } - -{"execute": "migrate-set-capabilities", "arguments":{ "capabilities": [ {"= capability": "x-colo", "state": true } ] } } -{"execute": "migrate", "arguments":{ "uri": "tcp:127.0.0.1:9998" } } - -=3D=3D TODO =3D=3D -1. Support shared storage. -2. Develop the heartbeat part. -3. Reduce checkpoint VM=E2=80=99s downtime while doing checkpoint. diff --git a/docs/system/index.rst b/docs/system/index.rst index 427b020483104f6589878bbf255a367ae114c61b..6268c41aea9c74dc3e59d896b5a= e082360bfbb1a 100644 --- a/docs/system/index.rst +++ b/docs/system/index.rst @@ -41,3 +41,4 @@ or Hypervisor.Framework. igvm vm-templating sriov + qemu-colo diff --git a/docs/system/qemu-colo.rst b/docs/system/qemu-colo.rst new file mode 100644 index 0000000000000000000000000000000000000000..4b5fbbf398f8a5c4ea6baad615b= de94b2b4678d2 --- /dev/null +++ b/docs/system/qemu-colo.rst @@ -0,0 +1,360 @@ +Qemu COLO Fault Tolerance +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D + +| Copyright (c) 2016 Intel Corporation +| Copyright (c) 2016 HUAWEI TECHNOLOGIES CO., LTD. +| Copyright (c) 2016 Fujitsu, Corp. + +This work is licensed under the terms of the GNU GPL, version 2 or later. +See the COPYING file in the top-level directory. + +This document gives an overview of COLO's design and how to use it. + +Background +---------- +Virtual machine (VM) replication is a well known technique for providing +application-agnostic software-implemented hardware fault tolerance, +also known as "non-stop service". + +COLO (COarse-grained LOck-stepping) is a high availability solution. +Both primary VM (PVM) and secondary VM (SVM) run in parallel. They receive= the +same request from client, and generate response in parallel too. +If the response packets from PVM and SVM are identical, they are released +immediately. Otherwise, a VM checkpoint (on demand) is conducted. + +Architecture +------------ +The architecture of COLO is shown in the diagram below. +It consists of a pair of networked physical nodes: +The primary node running the PVM, and the secondary node running the SVM +to maintain a valid replica of the PVM. +PVM and SVM execute in parallel and generate output of response packets for +client requests according to the application semantics. + +The incoming packets from the client or external network are received by t= he +primary node, and then forwarded to the secondary node, so that both the P= VM +and the SVM are stimulated with the same requests. + +COLO receives the outbound packets from both the PVM and SVM and compares = them +before allowing the output to be sent to clients. + +The SVM is qualified as a valid replica of the PVM, as long as it generates +identical responses to all client requests. Once the differences in the ou= tputs +are detected between the PVM and SVM, COLO withholds transmission of the +outbound packets until it has successfully synchronized the PVM state to t= he SVM. + +Overview:: + + Primary Node = Secondary Node + +------------+ +-----------------------+ +---------------------= ---+ +------------+ + | | | HeartBeat +<----->+ HeartBeat = | | | + | Primary VM | +-----------+-----------+ +-----------+---------= ---+ |Secondary VM| + | | | | = | | + | | +-----------|-----------+ +-----------|---------= ---+ | | + | | |QEMU +---v----+ | |QEMU +----v---+ = | | | + | | | |Failover| | | |Failover| = | | | + | | | +--------+ | | +--------+ = | | | + | | | +---------------+ | | +---------------+ = | | | + | | | | VM Checkpoint +-------------->+ VM Checkpoint | = | | | + | | | +---------------+ | | +---------------+ = | | | + |Requests<--------------------------\ /-----------------\ /-----------= ---------->Requests| + | | | ^ ^ | | | | = | | | + |Responses+---------------------\ /-|-|------------\ /----------------= ---------+Responses| + | | | | | | | | | | | | | = | | | + | | | +-----------+ | | | | | | | | | | +---------= -+ | | | + | | | | COLO disk | | | | | | | | | | | | COLO dis= k| | | | + | | | | Manager +---------------------------->| Manager = | | | | + | | | ++----------+ v v | | | | | v v | +---------= ++ | | | + | | | |+-----------+-+-+-++| | ++-+--+-+---------+ = | | | | + | | | || COLO Proxy || | | COLO Proxy | = | | | | + | | | || (compare packet || | |(adjust sequence | = | | | | + | | | ||and mirror packet)|| | | and ACK) | = | | | | + | | | |+------------+---+-+| | +-----------------+ = | | | | + +------------+ +-----------------------+ +---------------------= ---+ +------------+ + +------------+ | | | = | +------------+ + | VM Monitor | | | | = | | VM Monitor | + +------------+ | | | = | +------------+ + +---------------------------------------+ +---------------------= -------------------+ + | Kernel | | | | | Kernel = | | + +---------------------------------------+ +---------------------= -------------------+ + | | | | + +--------------v+ +---------v---+--+ +------------------+ += v-------------+ + | Storage | |External Network| | External Network | |= Storage | + +---------------+ +----------------+ +------------------+ += --------------+ + +Components introduction +^^^^^^^^^^^^^^^^^^^^^^^ +You can see there are several components in COLO's diagram of architecture. +Their functions are described below. + +HeartBeat +~~~~~~~~~ +Runs on both the primary and secondary nodes, to periodically check platfo= rm +availability. When the primary node suffers a hardware fail-stop failure, +the heartbeat stops responding, the secondary node will trigger a failover +as soon as it determines the absence. + +COLO disk Manager +~~~~~~~~~~~~~~~~~ +When primary VM writes data into image, the colo disk manager captures thi= s data +and sends it to secondary VM's which makes sure the context of secondary V= M's +image is consistent with the context of primary VM 's image. +For more details, please refer to docs/block-replication.txt. + +Checkpoint/Failover Controller +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Modifications of save/restore flow to realize continuous migration, +to make sure the state of VM in Secondary side is always consistent with V= M in +Primary side. + +COLO Proxy +~~~~~~~~~~ +Delivers packets to Primary and Secondary, and then compare the responses = from +both side. Then decide whether to start a checkpoint according to some rul= es. +Please refer to docs/colo-proxy.txt for more information. + +Note: +HeartBeat has not been implemented yet, so you need to trigger failover pr= ocess +by using 'x-colo-lost-heartbeat' command. + +COLO operation status +^^^^^^^^^^^^^^^^^^^^^ + +Overview:: + + +-----------------+ + | | + | Start COLO | + | | + +--------+--------+ + | + | Main qmp command: + | migrate-set-capabilities with x-colo + | migrate + | + v + +--------+--------+ + | | + | COLO running | + | | + +--------+--------+ + | + | Main qmp command: + | x-colo-lost-heartbeat + | or + | some error happened + v + +--------+--------+ + | | send qmp event: + | COLO failover | COLO_EXIT + | | + +-----------------+ + + +COLO use the qmp command to switch and report operation status. +The diagram just shows the main qmp command, you can get the detail +in test procedure. + +Test procedure +-------------- +Note: Here we are running both instances on the same host for testing, +change the IP Addresses if you want to run it on two hosts. Initially +``127.0.0.1`` is the Primary Host and ``127.0.0.2`` is the Secondary Host. + +Startup qemu +^^^^^^^^^^^^ +**1. Primary**: +Note: Initially, ``$imagefolder/primary.qcow2`` needs to be copied to all = hosts. +You don't need to change any IP's here, because ``0.0.0.0`` listens on any +interface. The chardev's with ``127.0.0.1`` IP's loopback to the local qemu +instance:: + + # imagefolder=3D"/mnt/vms/colo-test-primary" + + # qemu-system-x86_64 -enable-kvm -cpu qemu64,kvmclock=3Don -m 512 -smp= 1 -qmp stdio \ + -device piix3-usb-uhci -device usb-tablet -name primary \ + -netdev tap,id=3Dhn0,vhost=3Doff,helper=3D/usr/lib/qemu/qemu-bridge= -helper \ + -device rtl8139,id=3De0,netdev=3Dhn0 \ + -chardev socket,id=3Dmirror0,host=3D0.0.0.0,port=3D9003,server=3Don= ,wait=3Doff \ + -chardev socket,id=3Dcompare1,host=3D0.0.0.0,port=3D9004,server=3Do= n,wait=3Don \ + -chardev socket,id=3Dcompare0,host=3D127.0.0.1,port=3D9001,server= =3Don,wait=3Doff \ + -chardev socket,id=3Dcompare0-0,host=3D127.0.0.1,port=3D9001 \ + -chardev socket,id=3Dcompare_out,host=3D127.0.0.1,port=3D9005,serve= r=3Don,wait=3Doff \ + -chardev socket,id=3Dcompare_out0,host=3D127.0.0.1,port=3D9005 \ + -object filter-mirror,id=3Dm0,netdev=3Dhn0,queue=3Dtx,outdev=3Dmirr= or0 \ + -object filter-redirector,netdev=3Dhn0,id=3Dredire0,queue=3Drx,inde= v=3Dcompare_out \ + -object filter-redirector,netdev=3Dhn0,id=3Dredire1,queue=3Drx,outd= ev=3Dcompare0 \ + -object iothread,id=3Diothread1 \ + -object colo-compare,id=3Dcomp0,primary_in=3Dcompare0-0,secondary_i= n=3Dcompare1,\ + outdev=3Dcompare_out0,iothread=3Diothread1 \ + -drive if=3Dide,id=3Dcolo-disk0,driver=3Dquorum,read-pattern=3Dfifo= ,vote-threshold=3D1,\ + children.0.file.filename=3D$imagefolder/primary.qcow2,children.0.drive= r=3Dqcow2 -S + + +**2. Secondary**: +Note: Active and hidden images need to be created only once and the +size should be the same as ``primary.qcow2``. Again, you don't need to cha= nge +any IP's here, except for the ``$primary_ip`` variable:: + + # imagefolder=3D"/mnt/vms/colo-test-secondary" + # primary_ip=3D127.0.0.1 + + # qemu-img create -f qcow2 $imagefolder/secondary-active.qcow2 10G + + # qemu-img create -f qcow2 $imagefolder/secondary-hidden.qcow2 10G + + # qemu-system-x86_64 -enable-kvm -cpu qemu64,kvmclock=3Don -m 512 -smp= 1 -qmp stdio \ + -device piix3-usb-uhci -device usb-tablet -name secondary \ + -netdev tap,id=3Dhn0,vhost=3Doff,helper=3D/usr/lib/qemu/qemu-bridge= -helper \ + -device rtl8139,id=3De0,netdev=3Dhn0 \ + -chardev socket,id=3Dred0,host=3D$primary_ip,port=3D9003,reconnect-= ms=3D1000 \ + -chardev socket,id=3Dred1,host=3D$primary_ip,port=3D9004,reconnect-= ms=3D1000 \ + -object filter-redirector,id=3Df1,netdev=3Dhn0,queue=3Dtx,indev=3Dr= ed0 \ + -object filter-redirector,id=3Df2,netdev=3Dhn0,queue=3Drx,outdev=3D= red1 \ + -object filter-rewriter,id=3Drew0,netdev=3Dhn0,queue=3Dall \ + -drive if=3Dnone,id=3Dparent0,file.filename=3D$imagefolder/primary.= qcow2,driver=3Dqcow2 \ + -drive if=3Dnone,id=3Dchilds0,driver=3Dreplication,mode=3Dsecondary= ,file.driver=3Dqcow2,\ + top-id=3Dcolo-disk0,file.file.filename=3D$imagefolder/secondary-active= .qcow2,\ + file.backing.driver=3Dqcow2,file.backing.file.filename=3D$imagefolder/= secondary-hidden.qcow2,\ + file.backing.backing=3Dparent0 \ + -drive if=3Dide,id=3Dcolo-disk0,driver=3Dquorum,read-pattern=3Dfifo= ,vote-threshold=3D1,\ + children.0=3Dchilds0 \ + -incoming tcp:0.0.0.0:9998 + + +**3.** On Secondary VM's QEMU monitor, issue command:: + + {"execute":"qmp_capabilities"} + {"execute": "migrate-set-capabilities", "arguments": {"capabilities": = [ {"capability": "x-colo", "state": true } ] } } + {"execute": "nbd-server-start", "arguments": {"addr": {"type": "inet",= "data": {"host": "0.0.0.0", "port": "9999"} } } } + {"execute": "nbd-server-add", "arguments": {"device": "parent0", "writ= able": true } } + +Note: + a. The qmp command ``nbd-server-start`` and ``nbd-server-add`` must be r= un + before running the qmp command migrate on primary QEMU + b. Active disk, hidden disk and nbd target's length should be the + same. + c. It is better to put active disk and hidden disk in ramdisk. They + will be merged into the parent disk on failover. + +**4.** On Primary VM's QEMU monitor, issue command:: + + {"execute":"qmp_capabilities"} + {"execute": "human-monitor-command", "arguments": {"command-line": "dr= ive_add -n buddy driver=3Dreplication,mode=3Dprimary,file.driver=3Dnbd,file= .host=3D127.0.0.2,file.port=3D9999,file.export=3Dparent0,node-name=3Dreplic= ation0"}} + {"execute": "x-blockdev-change", "arguments":{"parent": "colo-disk0", = "node": "replication0" } } + {"execute": "migrate-set-capabilities", "arguments": {"capabilities": = [ {"capability": "x-colo", "state": true } ] } } + {"execute": "migrate", "arguments": {"uri": "tcp:127.0.0.2:9998" } } + +Note: + a. There should be only one NBD Client for each primary disk. + b. The qmp command line must be run after running qmp command line in + secondary qemu. + +**5.** After the above steps, you will see, whenever you make changes to P= VM, SVM will be synced. +You can issue command ``{ "execute": "migrate-set-parameters" , "arguments= ":{ "x-checkpoint-delay": 2000 } }`` +to change the idle checkpoint period time + +Failover test +^^^^^^^^^^^^^ +You can kill one of the VMs and Failover on the surviving VM: + +If you killed the Secondary, then follow "Primary Failover". +After that, if you want to resume the replication, follow "Primary resume = replication" + +If you killed the Primary, then follow "Secondary Failover". +After that, if you want to resume the replication, follow "Secondary resum= e replication" + +Primary Failover +~~~~~~~~~~~~~~~~ +The Secondary died, resume on the Primary:: + + {"execute": "x-blockdev-change", "arguments":{ "parent": "colo-disk0",= "child": "children.1"} } + {"execute": "human-monitor-command", "arguments":{ "command-line": "dr= ive_del replication0" } } + {"execute": "object-del", "arguments":{ "id": "comp0" } } + {"execute": "object-del", "arguments":{ "id": "iothread1" } } + {"execute": "object-del", "arguments":{ "id": "m0" } } + {"execute": "object-del", "arguments":{ "id": "redire0" } } + {"execute": "object-del", "arguments":{ "id": "redire1" } } + {"execute": "x-colo-lost-heartbeat" } + +Secondary Failover +~~~~~~~~~~~~~~~~~~ +The Primary died, resume on the Secondary and prepare to become the new Pr= imary:: + + {"execute": "nbd-server-stop"} + {"execute": "x-colo-lost-heartbeat"} + + {"execute": "object-del", "arguments":{ "id": "f2" } } + {"execute": "object-del", "arguments":{ "id": "f1" } } + {"execute": "chardev-remove", "arguments":{ "id": "red1" } } + {"execute": "chardev-remove", "arguments":{ "id": "red0" } } + + {"execute": "chardev-add", "arguments":{ "id": "mirror0", "backend": {= "type": "socket", "data": {"addr": { "type": "inet", "data": { "host": "0.0= .0.0", "port": "9003" } }, "server": true } } } } + {"execute": "chardev-add", "arguments":{ "id": "compare1", "backend": = {"type": "socket", "data": {"addr": { "type": "inet", "data": { "host": "0.= 0.0.0", "port": "9004" } }, "server": true } } } } + {"execute": "chardev-add", "arguments":{ "id": "compare0", "backend": = {"type": "socket", "data": {"addr": { "type": "inet", "data": { "host": "12= 7.0.0.1", "port": "9001" } }, "server": true } } } } + {"execute": "chardev-add", "arguments":{ "id": "compare0-0", "backend"= : {"type": "socket", "data": {"addr": { "type": "inet", "data": { "host": "= 127.0.0.1", "port": "9001" } }, "server": false } } } } + {"execute": "chardev-add", "arguments":{ "id": "compare_out", "backend= ": {"type": "socket", "data": {"addr": { "type": "inet", "data": { "host": = "127.0.0.1", "port": "9005" } }, "server": true } } } } + {"execute": "chardev-add", "arguments":{ "id": "compare_out0", "backen= d": {"type": "socket", "data": {"addr": { "type": "inet", "data": { "host":= "127.0.0.1", "port": "9005" } }, "server": false } } } } + +Primary resume replication +~~~~~~~~~~~~~~~~~~~~~~~~~~ +Resume replication after new Secondary is up. + +Start the new Secondary (Steps 2 and 3 above), then on the Primary:: + + {"execute": "drive-mirror", "arguments":{ "device": "colo-disk0", "job= -id": "resync", "target": "nbd://127.0.0.2:9999/parent0", "mode": "existing= ", "format": "raw", "sync": "full"} } + +Wait until disk is synced, then:: + + {"execute": "stop"} + {"execute": "block-job-cancel", "arguments":{ "device": "resync"} } + + {"execute": "human-monitor-command", "arguments":{ "command-line": "dr= ive_add -n buddy driver=3Dreplication,mode=3Dprimary,file.driver=3Dnbd,file= .host=3D127.0.0.2,file.port=3D9999,file.export=3Dparent0,node-name=3Dreplic= ation0"}} + {"execute": "x-blockdev-change", "arguments":{ "parent": "colo-disk0",= "node": "replication0" } } + + {"execute": "object-add", "arguments":{ "qom-type": "filter-mirror", "= id": "m0", "netdev": "hn0", "queue": "tx", "outdev": "mirror0" } } + {"execute": "object-add", "arguments":{ "qom-type": "filter-redirector= ", "id": "redire0", "netdev": "hn0", "queue": "rx", "indev": "compare_out" = } } + {"execute": "object-add", "arguments":{ "qom-type": "filter-redirector= ", "id": "redire1", "netdev": "hn0", "queue": "rx", "outdev": "compare0" } } + {"execute": "object-add", "arguments":{ "qom-type": "iothread", "id": = "iothread1" } } + {"execute": "object-add", "arguments":{ "qom-type": "colo-compare", "i= d": "comp0", "primary_in": "compare0-0", "secondary_in": "compare1", "outde= v": "compare_out0", "iothread": "iothread1" } } + + {"execute": "migrate-set-capabilities", "arguments":{ "capabilities": = [ {"capability": "x-colo", "state": true } ] } } + {"execute": "migrate", "arguments":{ "uri": "tcp:127.0.0.2:9998" } } + +Note: +If this Primary previously was a Secondary, then we need to insert the +filters before the filter-rewriter by using the +""insert": "before", "position": "id=3Drew0"" Options. See below. + +Secondary resume replication +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Become Primary and resume replication after new Secondary is up. Note +that now 127.0.0.1 is the Secondary and 127.0.0.2 is the Primary. + +Start the new Secondary (Steps 2 and 3 above, but with primary_ip=3D127.0.= 0.2), +then on the old Secondary:: + + {"execute": "drive-mirror", "arguments":{ "device": "colo-disk0", "job= -id": "resync", "target": "nbd://127.0.0.1:9999/parent0", "mode": "existing= ", "format": "raw", "sync": "full"} } + +Wait until disk is synced, then:: + + {"execute": "stop"} + {"execute": "block-job-cancel", "arguments":{ "device": "resync" } } + + {"execute": "human-monitor-command", "arguments":{ "command-line": "dr= ive_add -n buddy driver=3Dreplication,mode=3Dprimary,file.driver=3Dnbd,file= .host=3D127.0.0.1,file.port=3D9999,file.export=3Dparent0,node-name=3Dreplic= ation0"}} + {"execute": "x-blockdev-change", "arguments":{ "parent": "colo-disk0",= "node": "replication0" } } + + {"execute": "object-add", "arguments":{ "qom-type": "filter-mirror", "= id": "m0", "insert": "before", "position": "id=3Drew0", "netdev": "hn0", "q= ueue": "tx", "outdev": "mirror0" } } + {"execute": "object-add", "arguments":{ "qom-type": "filter-redirector= ", "id": "redire0", "insert": "before", "position": "id=3Drew0", "netdev": = "hn0", "queue": "rx", "indev": "compare_out" } } + {"execute": "object-add", "arguments":{ "qom-type": "filter-redirector= ", "id": "redire1", "insert": "before", "position": "id=3Drew0", "netdev": = "hn0", "queue": "rx", "outdev": "compare0" } } + {"execute": "object-add", "arguments":{ "qom-type": "iothread", "id": = "iothread1" } } + {"execute": "object-add", "arguments":{ "qom-type": "colo-compare", "i= d": "comp0", "primary_in": "compare0-0", "secondary_in": "compare1", "outde= v": "compare_out0", "iothread": "iothread1" } } + + {"execute": "migrate-set-capabilities", "arguments":{ "capabilities": = [ {"capability": "x-colo", "state": true } ] } } + {"execute": "migrate", "arguments":{ "uri": "tcp:127.0.0.1:9998" } } + +TODO +---- +1. Support shared storage. +2. Develop the heartbeat part. +3. Reduce checkpoint VM=E2=80=99s downtime while doing checkpoint. --=20 2.39.5 From nobody Sat Feb 28 00:53:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1771617228; cv=none; d=zohomail.com; s=zohoarc; b=mbHWMjmFHrRT2FI/SPeo4QT7bTT84Ua9ZW+ZTiV2jlcZaW4q92+1z4SK9FwTwDyWv63uTa+IfBnrdD++k1ouFRkRJaF11imUThmT3SQPquXcj5PtqJpMyYrzXgti6xDs2UcRwE1DPyRndf2DHDCKx98mBdqMrUnp0YVMvh5F4Fo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771617228; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7na/cU/5mF9ehdTeY4EL5tJl/nkO7neQy2zDMuNSRZI=; b=gHQWyy0IOVihPzCCKfj69xA1eeR4oUhxZs7DrfuXRmtvPasUWyH2Qog5ayknVmcN9lFf8gNeKcHUxmtqL0QM0cvBiL2sANmLHcQuXi5BBQqdk/qLo3XrqVp5KfPsqB2L1m1drgGicPIAPCQArTJPnscYXhjs5/CUTAMRcKvReT0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771617228542495.6830973156532; Fri, 20 Feb 2026 11:53:48 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vtWXs-0000Yf-VJ; Fri, 20 Feb 2026 14:52:13 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXh-0000Uf-UB for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:52:03 -0500 Received: from mout.web.de ([212.227.15.3]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXf-0001SU-59 for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:52:01 -0500 Received: from [127.0.1.1] ([84.133.37.84]) by smtp.web.de (mrweb005 [213.165.67.108]) with ESMTPSA (Nemesis) id 1N2jWK-1vjW9521CG-010Rb2; Fri, 20 Feb 2026 20:51:51 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1771617111; x=1772221911; i=lukasstraub2@web.de; bh=7na/cU/5mF9ehdTeY4EL5tJl/nkO7neQy2zDMuNSRZI=; h=X-UI-Sender-Class:From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:References:In-Reply-To:To:Cc: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=EaDKSK+CK0+etOQWh88jRvM9v+iraJHn8QJivwqX9lH+zrEJ8gKz4YSpm5SZSbK5 d+kIxCjnoqJv7uDU+mvLZjdBFq1huD9Ou56KACApfrLNXwjZsUZLWRSxvyYDSxcJO YbLF4z5N/qJVBWKvjoP4gE8Zy2Tm+zhPrqFpNi/WdicJSAAz9fL862DLTeFasGk+3 umdVYZrKNNlDJBHQkLWlpR/OJDG0BU5gr83iWMF8MP50f2yJ5jrXSrODt+2++c2Lk MLu8e8Bla+dluAgqYVII/JhANYvyusGAtZnc22uxI9tOJrfLVRs6FpaZxIBa3e66S 6mTycckzHrIkIWttww== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Fri, 20 Feb 2026 20:51:37 +0100 Subject: [PATCH v10 15/19] qemu-colo.rst: Miscellaneous changes MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260220-colo_unit_test_multifd-v10-15-bfe67d422ef1@web.de> References: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> In-Reply-To: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Zhang Chen , Hailiang Zhang , Markus Armbruster , Li Zhijian , "Dr. David Alan Gilbert" , Lukas Straub X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3240; i=lukasstraub2@web.de; h=from:subject:message-id; bh=xf4Mr+LNhtrRhluncnlq21hBJuEc0CRkqsQ5PC6uWik=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpmLtO1AjRXm/stKe4cXABxoTciUG/wdJg3BV09 meUUlA5LF2JAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaZi7TgAKCRA1qwsonF2y WHJ8EACm5S6gHM+AsWkpFWiCmTNFqeVkhe/y0FKylVKp+Yrw/ug2cUnbCLtDNsjxvVlvP4vY5kw 1fQ8mwi9XeJmSEL29EobZVnPOWd1+4OHPHEZOXhsCeFTUFgaiXwmBJ4Ua3Al3tjSu6Dho77Ku8c w/Ovg2N0Gdw2TqUXdJp76iVBTPQc9TGd43r/bxlemkbWd/szwLGK9udu84wWUsc2MrocOP/23b3 WXzvnpZgDmCBQGTv8R6SZWmCsofphwyibNiDFKOoBdYlO0SOrP6JdobPrzxTpP+xizUKHyqfglX pKzeA4liB2QNJxTdyOy3MS2MxYCZpsHhxsAfPbSWOK5gRL0jYz5hw3UtDCtIV/v9uJ7YQN/5ARS VEX7hqu43lNLQ11sSuyEKnw6stj0iJMLr54GIyfiZoODfy+u3z9V6QGgYWT+iELJPfsY7ssGhL3 fDibXl5T4WYyQJ7KDTeAT0wz3dloIALQC5EFTuJh+/Lk1l+CFHsNlQ30XOCj7kdEQACl9FmlXQ+ 55DXI37xx2udBFRIljZjeDgXJ+mEGfoL+1xazLjyeo5bB/+VtUBdVuC/HFxu8r9jOnHZb0mKCz6 VGSItWP4f7f1ZrVj8jgTMus2kEAd5TZ6MYBjiwDb8RdkzWAGVLfvsjWO5dPKpESgP1j+9VwF6R2 oU/iPNMYtvZWJPg== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:hnHbmstdL7oe3sNugFAGwNZov9cu98BsaOMaDAfUnPv5ohZY/LZ MMNqPFi0wpo2IbR0BhmXZQWNripXGU7H38Gd9anr7+JyZd2LY4/+MIA5hZq712w5SwAfTbL /3xppTl2spthqt6ctanpKetYHaucIBt69H53Pt3LKJdTpQBFxZomaGDsygs3CfhseZ+hxar inqc/by6tdkzJ7HzRSLeg== UI-OutboundReport: notjunk:1;M01:P0:CxubRbxVOl8=;ioz4Oxj6wsvHJ6WcrS49vpaiv1P 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 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.3; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity lukasstraub2@web.de) X-ZM-MESSAGEID: 1771617229502158500 Reviewed-by: Fabiano Rosas Reviewed-by: Zhang Chen Signed-off-by: Lukas Straub --- docs/system/qemu-colo.rst | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/docs/system/qemu-colo.rst b/docs/system/qemu-colo.rst index 4b5fbbf398f8a5c4ea6baad615bde94b2b4678d2..a70e61aa09391cda933031535fa= 982d27cf6654b 100644 --- a/docs/system/qemu-colo.rst +++ b/docs/system/qemu-colo.rst @@ -1,13 +1,6 @@ Qemu COLO Fault Tolerance =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D =20 -| Copyright (c) 2016 Intel Corporation -| Copyright (c) 2016 HUAWEI TECHNOLOGIES CO., LTD. -| Copyright (c) 2016 Fujitsu, Corp. - -This work is licensed under the terms of the GNU GPL, version 2 or later. -See the COPYING file in the top-level directory. - This document gives an overview of COLO's design and how to use it. =20 Background @@ -82,8 +75,8 @@ Overview:: | Storage | |External Network| | External Network | |= Storage | +---------------+ +----------------+ +------------------+ += --------------+ =20 -Components introduction -^^^^^^^^^^^^^^^^^^^^^^^ +Components +^^^^^^^^^^ You can see there are several components in COLO's diagram of architecture. Their functions are described below. =20 @@ -157,14 +150,21 @@ in test procedure. =20 Test procedure -------------- -Note: Here we are running both instances on the same host for testing, + +Setup +^^^^^ + +Here we are running both instances on the same host for testing, change the IP Addresses if you want to run it on two hosts. Initially ``127.0.0.1`` is the Primary Host and ``127.0.0.2`` is the Secondary Host. =20 +COLO uses double the guest ram size on the secondary side. The Qemu version +should be the same on both hosts. + Startup qemu ^^^^^^^^^^^^ **1. Primary**: -Note: Initially, ``$imagefolder/primary.qcow2`` needs to be copied to all = hosts. +Initially, ``$imagefolder/primary.qcow2`` needs to be copied to all hosts. You don't need to change any IP's here, because ``0.0.0.0`` listens on any interface. The chardev's with ``127.0.0.1`` IP's loopback to the local qemu instance:: @@ -192,7 +192,7 @@ instance:: =20 =20 **2. Secondary**: -Note: Active and hidden images need to be created only once and the +Active and hidden images need to be created only once and the size should be the same as ``primary.qcow2``. Again, you don't need to cha= nge any IP's here, except for the ``$primary_ip`` variable:: =20 @@ -353,8 +353,9 @@ Wait until disk is synced, then:: {"execute": "migrate-set-capabilities", "arguments":{ "capabilities": = [ {"capability": "x-colo", "state": true } ] } } {"execute": "migrate", "arguments":{ "uri": "tcp:127.0.0.1:9998" } } =20 -TODO ----- -1. Support shared storage. -2. Develop the heartbeat part. -3. Reduce checkpoint VM=E2=80=99s downtime while doing checkpoint. +| Copyright (c) 2016 Intel Corporation +| Copyright (c) 2016 HUAWEI TECHNOLOGIES CO., LTD. +| Copyright (c) 2016 Fujitsu, Corp. + +This work is licensed under the terms of the GNU GPL, version 2 or later. +See the COPYING file in the top-level directory. --=20 2.39.5 From nobody Sat Feb 28 00:53:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1771617190; cv=none; d=zohomail.com; s=zohoarc; b=A4jcT8IWfMGsate8NJu6H4EWRdGTgVhLrnQ22acibFDiHRunQKt77dbfFb6SWWIGVO0fKO0OmQvaeWaowdryzxMFarW0yWDMgv9camSRYalRHj55evKo+fw2Eut0wwF+xb2rjlHVoXw+zDjzq11ZnFF+3RRYNz3r/BLNcPCz4xI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771617190; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=M4oN3ce3lEdgtN7JBdV1BpBJqmDTcNHIBAHkYu1vDHI=; b=ijR2ztVg/bds9xOuqELttZCK6mPD/sYiBvg/yICqXg4LYd5eb93+4FGxx26jb/Tvh+FYiiWggnpBbocxooYVPADzhRAjnxXO5YHw9HXnETMT/7+w7k7AN09o7etxoSrrlEwlF9OY5TcN3fHM9v6v57EFPl47cEJSrSgH3Sh6EOU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771617190587881.1333639777041; Fri, 20 Feb 2026 11:53:10 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vtWXr-0000Xn-JK; Fri, 20 Feb 2026 14:52:11 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXh-0000Ue-UN for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:52:02 -0500 Received: from mout.web.de ([212.227.15.3]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXf-0001SZ-61 for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:52:01 -0500 Received: from [127.0.1.1] ([84.133.37.84]) by smtp.web.de (mrweb005 [213.165.67.108]) with ESMTPSA (Nemesis) id 1N7QUL-1vfNH83HO1-014YKL; Fri, 20 Feb 2026 20:51:51 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1771617111; x=1772221911; i=lukasstraub2@web.de; bh=M4oN3ce3lEdgtN7JBdV1BpBJqmDTcNHIBAHkYu1vDHI=; h=X-UI-Sender-Class:From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:References:In-Reply-To:To:Cc: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=YMQMP4965OdpVOfPyTh62Zv2rvPW8VMRY6Gg3gEA9qo6vng3iFVoScIU8hA3+QGH OC+UKRzggh2mGSGvN2/11i5kbXt+7R8raWEJnjsGCcFgJWnOREKKFprXtNJkAmAus QnW+U1ti7q6J1gpQslZplaKopK1Z6suxbbzDJQZo+ppERPwiaE7C2jHU76ogd8ydu m4uZ7wG6ODpQqIWVD9alQzs5nVnYMYjT00MClFOgnIFmZo6UVJGP37gW6+Dth9vpb 4Vvqp3L17h32DRkhTqfC9s6rusnvmB+M7MOtZY5rdW3Q2GZFeKuE+0GqxcsRATHwt 9PYN6UMGEtR73KluQA== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Fri, 20 Feb 2026 20:51:38 +0100 Subject: [PATCH v10 16/19] qemu-colo.rst: Add my copyright MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260220-colo_unit_test_multifd-v10-16-bfe67d422ef1@web.de> References: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> In-Reply-To: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Zhang Chen , Hailiang Zhang , Markus Armbruster , Li Zhijian , "Dr. David Alan Gilbert" , Lukas Straub X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=954; i=lukasstraub2@web.de; h=from:subject:message-id; bh=RBjsUyK419OI2tM2s9seVXuGPbNJkvd1FTM/9fBKVHA=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpmLtPE6f1UIGnURL2tN7CZum8L29UO5WG3q09S DYfxmdDTN6JAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaZi7TwAKCRA1qwsonF2y WBVpEACRvTwVGkOq2Zv67VxTZEQhGjNt29+q30MFPh1yp6uNfiPLkqu3vqoi46zsHrrR0aU4280 qieBtnjjWyLlAsOKxlUCcGTihMwhm2AP2ZpFPNahvshIOaLiwWHjIPR4/5aapeC4DdytaMESUMT Vh+RS1+DYtTDjI9FabNkIyKNoMvf6vRjCdQ0XTXzWx+8NU+PYweRlW6aNo1Q2BcCHiZljA4HiI/ Ugw4FL6en3ZCIOjzhLnkxo0pRJl8vi9RciAqvnL7NpQpjriYE8Y+FsKR3UxT0d2GDz7DRD7QzBm 0ydOkHI58gRnw7ZMzw/exgWyj6j+3BLFrzzh5ZxXJfSXTURuHXQ3/4ofMNr1bF6Yg6sJYI/pEQv bk/DE3hKC1ETjN5ibg4eGvMGP1JEFHoYMyeAhBkhD2TR0Oj2wS6NuHTTJ1WQAwLCkhb6d0gAo5R kMLC765JnhoDFoIfwvWjqzqYpIPA0D0dhWX6KavsaV2STS8vtqIXJDSz9np6jpBncalhs+n+TDj PIxUMEMzurBGlG7Hetx6y5l2QNHhPmfY7HuMT98IAOtuNbzQx64xubO8Pl4jW1Bjpa6fhS260w8 CH6BwxzxcOAw3vyB5In+i2X7REkv4HppbzSAJ16m8aVgY2X2+/6aTH+2+fgjRwxu/Q1qBUFwSlM trd/rsXhx0QcGvQ== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:BXqjFk2z+mIlofDGNJZWtNl0O6KWfSSSdtV/whoPbGm9PbNXSB2 xSHcRixNdiCjGgYrXlxHoV2P7uf+z4kg+SrVgPWtZvWPc8HHsVSC/clRLnEFi77uk38AJfx vQ98CpR69+BU4odUELFUDYhTc9/DhpF6kPCB0p52AfQ9AmNHXnh5ScEyVfu0MnvE48DPUp5 mcuKO7XWu0Iewx7SgRMOQ== UI-OutboundReport: notjunk:1;M01:P0:SSgaMUkJ+m4=;6PA03Gk948w6MGWLmMpqk7cx9lR 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 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.3; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity lukasstraub2@web.de) X-ZM-MESSAGEID: 1771617191984158500 I have so far contributed 61 commits to the colo project, waranting the addition of my copyright to this file. Reviewed-by: Zhang Chen Reviewed-by: Fabiano Rosas Signed-off-by: Lukas Straub --- docs/system/qemu-colo.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/system/qemu-colo.rst b/docs/system/qemu-colo.rst index a70e61aa09391cda933031535fa982d27cf6654b..75abbd80298df79223cb8e70064= a5dc83d70f4eb 100644 --- a/docs/system/qemu-colo.rst +++ b/docs/system/qemu-colo.rst @@ -356,6 +356,7 @@ Wait until disk is synced, then:: | Copyright (c) 2016 Intel Corporation | Copyright (c) 2016 HUAWEI TECHNOLOGIES CO., LTD. | Copyright (c) 2016 Fujitsu, Corp. +| Copyright (c) 2026 Lukas Straub =20 This work is licensed under the terms of the GNU GPL, version 2 or later. See the COPYING file in the top-level directory. --=20 2.39.5 From nobody Sat Feb 28 00:53:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1771617230; cv=none; d=zohomail.com; s=zohoarc; b=REm8Jj3uVh/9UyFRjyHIggrDWTUoRqelO31Ho4biRxIiGxHBIvfFNlsxe2ZXo3EIgLoZZmBAvT4sBw6N/Dwb8qWYexOIs5l4JAuXFiXe6aBub62W4MDC/DnVN+kiVVpGjgcv9m44TUnPPkAzAyYX2X9ZwbYJgF5FWV7n+y1cnxQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771617230; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=5DRNtylFaST6/JPH9QU2U4TO4NvWnISJBshbkAaedFI=; b=HuncTlwj7aFe33b1+uUE81HuB2t0IdSYP8AsLm182KHP4aoHg6EZAOq9KMWEXeqTAb7xb7VutVJViPGSo4NViWL0NhPg5w7uzg2Wysamy89vfxhHXXD4LzKx/VdLmfMANLYcAAyrnridCQ1wrpyJJtTYvNoeRovLeBqx+j5THYQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771617230874564.3543691870312; Fri, 20 Feb 2026 11:53:50 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vtWXp-0000WN-SQ; Fri, 20 Feb 2026 14:52:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXe-0000TG-1w for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:51:59 -0500 Received: from mout.web.de ([212.227.15.3]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXc-0001RH-9N for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:51:57 -0500 Received: from [127.0.1.1] ([84.133.37.84]) by smtp.web.de (mrweb005 [213.165.67.108]) with ESMTPSA (Nemesis) id 1Mmhjm-1vUbew0QkQ-00kZPK; Fri, 20 Feb 2026 20:51:52 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1771617112; x=1772221912; i=lukasstraub2@web.de; bh=5DRNtylFaST6/JPH9QU2U4TO4NvWnISJBshbkAaedFI=; h=X-UI-Sender-Class:From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:References:In-Reply-To:To:Cc: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=gWos05q+bpnXp+A5TT5sA5rCQzKS+FOh8dBmBbcuN00PkDhqrwrAWbcSs6gFIkm8 FHqxigxWRNHmG16OB/xpXxk7/Hl05QK+miiYxHgjEIx1OJhB180CVVi03TRu6EsyR R0y7yMAG0pKwtfqPPPGmRtLqT9C00qSE+wiydFJfr9wVaWLlKfNMxccFfbHid8pxp B+OkMejK660CCgnGhNJSEPeMvCbJySQr+0X3j5WTyetu6wy/z8VrKxApuV9iVB6I6 7lhqvKPYO7QTyhl+Z3t2jrApQbMW8XAD8XOP2rIeZaIOFUn3Njt44RI1RfObdk87o UQ7WOCoKV7GbHpiJHw== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Fri, 20 Feb 2026 20:51:39 +0100 Subject: [PATCH v10 17/19] qemu-colo.rst: Simplify the block replication setup MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260220-colo_unit_test_multifd-v10-17-bfe67d422ef1@web.de> References: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> In-Reply-To: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Zhang Chen , Hailiang Zhang , Markus Armbruster , Li Zhijian , "Dr. David Alan Gilbert" , Lukas Straub X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4393; i=lukasstraub2@web.de; h=from:subject:message-id; bh=TYU6TTLFHjrH9WpcMw6oVhFbPAVy0WPrt4oU9i8UKQI=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpmLtP9ZS3VTlz93dl9D1Rp3dNx3fdDd10mkWg4 +Cx9+RmPKeJAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaZi7TwAKCRA1qwsonF2y WOQLD/9g2/dAidy6ZkOhsgdQV8heiX89kISAmQWl/+o+zS/lgXcHIN2Y0EOX8RrDm8im4bwiUNK BZBjhCI4jkBritoQC1sa27Rfs8NZtzkWKK/L5iKYypUb2RDYRI/Pe1+jyqpMb6wDhs0CnS8Ep9w hxC+D0qvqSd2Q+Smm5E6ogxelTUoIL2fkEjJgsV1mhNEhbMQ+WB2u06gKCo6RE+662rshHjgdLR HU566AunYfMVlRra151xFlF7+ySfghrcney5v0Pk6gkh3HL0jscHe+tPmkMkmer9S4Whou5EW2S JPRAL3SdACcmGpuEkAiYfHCPsI0lnTg/S3s8btWjPb/zz56XXKcovjA7ivccUtT3vmfI/q7a4zd nLJWKksW7uRf8H/e7otOqjbeWdF85GT+YMAL5MrABSyRFc6UNfiIw7d11I7aoIzuwtGjW7Twi9/ mtS1LXL7w7PASl2fYjN0oZs6XfAExw0hzidYKV/Dti36eexxFLPUn1LdxoFKPB3iluJwKHaOye0 Q2DX5GkuvUt64TmgdQM9zOLTeLmddublIt+8bFQsuAkXNOa6fxGZ+x+lTPvWTRs/aIaMUa8A7De FNgZwrgspvNIYauH8X9LyZvmWGTqYpRjjUS3JAYWlFo3kocwTrgw+2dQif78Gu2ShAJVUgAtogG nHim2CTPZLF0/eA== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:2jF5b9hsYDCT+47pFqhGEEcz5/N+A+1OG2wVaKqxUIpzxJqbb+W HXZdy19wE3gRk+nHKsMD9xhw372P2dhsTSugpcUcb0ja4X5F1dMscLRMqiy/LlPPNev1bYS mv71AiBE0ehsYIccGbGh3ZLhUyW6W7mV4/0OeHXWu82IMTsTwHRSmLcKBI8gImCBonN+wxK iTihUcjsoRM4jb57Obh0w== UI-OutboundReport: notjunk:1;M01:P0:z2rcSeXRXDM=;H+WdYR5jylJtJVkQL8P4JPmAQ5i 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 H7xbcD7pRF/2EnYY5tSByrxJkRqEl Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.3; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity lukasstraub2@web.de) X-ZM-MESSAGEID: 1771617231806158500 On the primary side we don't actually need the replication block driver, since it only passes trough all IO. So simplify the setup and also use 'blockdev-add' instead of 'human-monitor-command'. This is how my clients use colo in production. Signed-off-by: Lukas Straub --- docs/system/qemu-colo.rst | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/system/qemu-colo.rst b/docs/system/qemu-colo.rst index 75abbd80298df79223cb8e70064a5dc83d70f4eb..f7d3b6439cf3401a58c41263423= 9d1a43999a10e 100644 --- a/docs/system/qemu-colo.rst +++ b/docs/system/qemu-colo.rst @@ -240,8 +240,8 @@ Note: **4.** On Primary VM's QEMU monitor, issue command:: =20 {"execute":"qmp_capabilities"} - {"execute": "human-monitor-command", "arguments": {"command-line": "dr= ive_add -n buddy driver=3Dreplication,mode=3Dprimary,file.driver=3Dnbd,file= .host=3D127.0.0.2,file.port=3D9999,file.export=3Dparent0,node-name=3Dreplic= ation0"}} - {"execute": "x-blockdev-change", "arguments":{"parent": "colo-disk0", = "node": "replication0" } } + {"execute": "blockdev-add", "arguments": {"driver": "nbd", "node-name"= : "nbd0", "server": {"type": "inet", "host": "127.0.0.2", "port": "9999"}, = "export": "parent0", "detect-zeroes": "on"} } + {"execute": "x-blockdev-change", "arguments":{"parent": "colo-disk0", = "node": "nbd0" } } {"execute": "migrate-set-capabilities", "arguments": {"capabilities": = [ {"capability": "x-colo", "state": true } ] } } {"execute": "migrate", "arguments": {"uri": "tcp:127.0.0.2:9998" } } =20 @@ -269,7 +269,7 @@ Primary Failover The Secondary died, resume on the Primary:: =20 {"execute": "x-blockdev-change", "arguments":{ "parent": "colo-disk0",= "child": "children.1"} } - {"execute": "human-monitor-command", "arguments":{ "command-line": "dr= ive_del replication0" } } + {"execute": "blockdev-del", "arguments": {"node-name": "nbd0"} } {"execute": "object-del", "arguments":{ "id": "comp0" } } {"execute": "object-del", "arguments":{ "id": "iothread1" } } {"execute": "object-del", "arguments":{ "id": "m0" } } @@ -309,8 +309,8 @@ Wait until disk is synced, then:: {"execute": "stop"} {"execute": "block-job-cancel", "arguments":{ "device": "resync"} } =20 - {"execute": "human-monitor-command", "arguments":{ "command-line": "dr= ive_add -n buddy driver=3Dreplication,mode=3Dprimary,file.driver=3Dnbd,file= .host=3D127.0.0.2,file.port=3D9999,file.export=3Dparent0,node-name=3Dreplic= ation0"}} - {"execute": "x-blockdev-change", "arguments":{ "parent": "colo-disk0",= "node": "replication0" } } + {"execute": "blockdev-add", "arguments": {"driver": "nbd", "node-name"= : "nbd0", "server": {"type": "inet", "host": "127.0.0.2", "port": "9999"}, = "export": "parent0", "detect-zeroes": "on"} } + {"execute": "x-blockdev-change", "arguments":{ "parent": "colo-disk0",= "node": "nbd0" } } =20 {"execute": "object-add", "arguments":{ "qom-type": "filter-mirror", "= id": "m0", "netdev": "hn0", "queue": "tx", "outdev": "mirror0" } } {"execute": "object-add", "arguments":{ "qom-type": "filter-redirector= ", "id": "redire0", "netdev": "hn0", "queue": "rx", "indev": "compare_out" = } } @@ -341,8 +341,8 @@ Wait until disk is synced, then:: {"execute": "stop"} {"execute": "block-job-cancel", "arguments":{ "device": "resync" } } =20 - {"execute": "human-monitor-command", "arguments":{ "command-line": "dr= ive_add -n buddy driver=3Dreplication,mode=3Dprimary,file.driver=3Dnbd,file= .host=3D127.0.0.1,file.port=3D9999,file.export=3Dparent0,node-name=3Dreplic= ation0"}} - {"execute": "x-blockdev-change", "arguments":{ "parent": "colo-disk0",= "node": "replication0" } } + {"execute": "blockdev-add", "arguments": {"driver": "nbd", "node-name"= : "nbd0", "server": {"type": "inet", "host": "127.0.0.1", "port": "9999"}, = "export": "parent0", "detect-zeroes": "on"} } + {"execute": "x-blockdev-change", "arguments":{ "parent": "colo-disk0",= "node": "nbd0" } } =20 {"execute": "object-add", "arguments":{ "qom-type": "filter-mirror", "= id": "m0", "insert": "before", "position": "id=3Drew0", "netdev": "hn0", "q= ueue": "tx", "outdev": "mirror0" } } {"execute": "object-add", "arguments":{ "qom-type": "filter-redirector= ", "id": "redire0", "insert": "before", "position": "id=3Drew0", "netdev": = "hn0", "queue": "rx", "indev": "compare_out" } } --=20 2.39.5 From nobody Sat Feb 28 00:53:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1771617224; cv=none; d=zohomail.com; s=zohoarc; b=azrXBQAGVUiXQEVVZVuGmpv9jrKYSOQjCS85RMTB8Rih1OjYV3dBrpn5ZDRPmYEKepmvFDytkprNY5vJow0Ilo/lIwimEAjtyY20ccdflkClIo4RyxmbpyQFHE6zpviTgj+3AMeNmrcF81TvmfQLqFRx05Q+2kVKqQ12RiwJg9M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771617224; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Cgrs5fJ3wLcY8dy2SlqIUK33R4liCUKYjQM41dJk8cc=; b=eQXtZwotGpDtIL4sE8RV9suScW99xMch7f3ErtfpHioTtLcuxIfp0ZTM3lCEQ3dN+jNfnNTqVSKp7DkfsbGaeV4F6pP0uEXBDX0f+JqkO1JYx3f4fgzPpojhY6jIk5Lp1Zj0sOj3pAu60kDc36uaUZEgUdpKod5Ebz4JEFGOhCw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771617224241110.0409795050125; Fri, 20 Feb 2026 11:53:44 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vtWXp-0000WH-9Q; Fri, 20 Feb 2026 14:52:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXd-0000Sk-30 for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:51:57 -0500 Received: from mout.web.de ([212.227.15.3]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXb-0001QJ-3P for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:51:56 -0500 Received: from [127.0.1.1] ([84.133.37.84]) by smtp.web.de (mrweb005 [213.165.67.108]) with ESMTPSA (Nemesis) id 1N14pS-1vixe61dUI-010zII; Fri, 20 Feb 2026 20:51:52 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1771617112; x=1772221912; i=lukasstraub2@web.de; bh=Cgrs5fJ3wLcY8dy2SlqIUK33R4liCUKYjQM41dJk8cc=; h=X-UI-Sender-Class:From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:References:In-Reply-To:To:Cc: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=JqZ//tyeedwZL+y84oUnlhu/qf8Pa8Wq1pWGRwnV2rAAT9e6hu9FRJ1L9iSu2GDS HzpihSzSHjb3clRTi11HMQPodC8MxcxjIpVxqvdsDBgXdjcGdxBm+ZgTBLMlEqHsB arEp6PLkxsw+L9G0p0NmzGSKz1RtE9azolNf5ERI5xHIHxZ6Ef6rWV9SruGzc+Af8 IHd9y8Ng+gDbY9Li0emvKG5zhVclyD0RfvN5TI542L25qIInTpCrHS66Qc3d6NHnH 4Iqh43/gWiZaP9NRKHaQPpA86d+Bp+FQ9gGYBFfiolvtkvdIsoCKBD4xgTt8nasGT gkwPEAEQisPjha311g== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Fri, 20 Feb 2026 20:51:40 +0100 Subject: [PATCH v10 18/19] multifd: Fix hang if send thread errors during sync MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260220-colo_unit_test_multifd-v10-18-bfe67d422ef1@web.de> References: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> In-Reply-To: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Zhang Chen , Hailiang Zhang , Markus Armbruster , Li Zhijian , "Dr. David Alan Gilbert" , Lukas Straub X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1388; i=lukasstraub2@web.de; h=from:subject:message-id; bh=Z+G5VSUmy777CSFznMpcXnI45p5UxHNR6BTVe96EOVQ=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpmLtPch3r0v0hPoaT1Y9riyzYUWEWy6wCP1o1N wsvI+rXJ2yJAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaZi7TwAKCRA1qwsonF2y WG1fEAC5CCRByMKqB3L+Z2RXe/qXblNCkBYMPO+mNay8SAPoEo9PJRJQJRQq3/tUQEooLEHNrXS gNvqn/t1Wz0WjO5gSbTbD65gP+iRmf0Fos7EadZjJ12qnX7NrHaF1XmlCqEGfStKRKXDocWBJ3w scybLQwhd7fzqr/6eqpuRbghR7/RVyTcXZjSkDbrtcEkbZPggyyTgEasK07s5kOtD+36nyFqRNR HTlv1h4Y9w/BNHuRiIVrBCpz3NRExrIc2pezsX2/NvkQoWl+U71FxLmhzGscn+k5n1cZ8fFFjBi UHKY7RPBBq2dxwHKjUjzpJvusHZBt2KnvTPwuJg2qOwAMQiqWSlwwdkbntnr5mde4e0ED6zIKlx NGP9eMfPXNWkStN2Iv/syCUkhP91gNiufiyMYYYClJQGmjvZg6aaBQWIq4wrWBNIm4g6yIJyR/v W5vhZnLyakELkoVSn3x1KLEKJ9h/+0HiBFNnAQww63tcIYlTGKlwxch64BQ/gKJ4HKz4tKgNTm0 A/sHe74PJ1oQUKhzfgTNbxFXKhRD5eZaHtxd7UFPQICojZuw0W+ELKZM7dG2VRN4ycaL6XNqsKR KzBQyQLEsjAFN89jLg13J148zjvy8AZmuB5s6fbYWpiVL+Xg/xcXDmt2FmDGC1vJui0MC8p/I5k bizdsNamWykNeMQ== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:TgwuXZiMyFYVIdaPNuIBQycOiR6aizy0cVRfrxqtpueIn3x7mQC LmtYH7ZxvjVgQ3BUxLbuXMmThhc+5rl96xCmadtVVF77lRlnP5PhEXvmhwbYjSGnr/K0NdP nQFwdduEqd5tNuEbfxJrvYGCXl3yXK027wbLd6ktCf8Sy/U4+pOJkg73mHfnxi1xyFJky02 JOp7qLNfngEwXXAJNLg8w== UI-OutboundReport: notjunk:1;M01:P0:BvI/WPJ963U=;ErArORZsednq0Yn5yMdc5fpTH8s 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 oVd6DKYu3r1ly0+S/YSzuG5SXI2N3 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.3; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity lukasstraub2@web.de) X-ZM-MESSAGEID: 1771617254389158500 When a send thread encounters an error (as is the case with yank), it sets multifd_send_state->exiting and the other threads exit too. This races with multifd_send_sync_main() which now hangs at qemu_sem_wait(&p->sem_sync) in multifd_send_sync_main() line 647 as it waits for threads that have exited. Fix this by kicking the semaphores when exiting the send threads. I encountered this hang when stress testing the colo unit test, though I was unable to write a migration test to reliably hit this. Signed-off-by: Lukas Straub --- migration/multifd.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/migration/multifd.c b/migration/multifd.c index 220ed8564960fdabc58e4baa069dd252c8ad293c..7762aab8e0702672d3730f27e9c= 9ee3b86500f0c 100644 --- a/migration/multifd.c +++ b/migration/multifd.c @@ -772,9 +772,14 @@ out: assert(local_err); trace_multifd_send_error(p->id); multifd_send_error_propagate(local_err); - multifd_send_kick_main(p); } =20 + /* + * Always kick the main thread: The main thread might wait on this thr= ead + * while another thread encounters an error and signals this thread to= exit. + */ + multifd_send_kick_main(p); + rcu_unregister_thread(); trace_multifd_send_thread_end(p->id, p->packets_sent); =20 --=20 2.39.5 From nobody Sat Feb 28 00:53:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1771617220; cv=none; d=zohomail.com; s=zohoarc; b=nf16OiYXpGtBnJTLPqdhD/0GY4cEIXLa/A/f09pUz5yKJXWaHcxCAfUto+4A+cWS2VNNJfINmtBQveiL6a9Z2jWBEZL8bU5RxeISbHgLkrgTk3RAS9IEx5U4a5QfyepDejVMTpouaVojZXYSF0g+fSM/BlK/MKHMx0GaOZ/Y0Cc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771617220; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=uZtEj7iogsvDfWdZSVpmpiuTSLNmWFEYLAlplQJqdVk=; b=kl3zJd//IvjeEBESLW773KQWymWnKlmUxkLjhVkEWNWzG3O+AwRQrEdKoAJv4rKsQTSK5Jq67RSd55ILIB8Nv93U5Vl+22BFABS8MdyvFBtVq0GhHj/nN1MOUO1+BSq6aFsCotvdJ7kfmS5gN1VKJ6ksJ9Ia8T1BNf/KzlAce3k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177161722078980.01304484486616; Fri, 20 Feb 2026 11:53:40 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vtWXo-0000WC-P1; Fri, 20 Feb 2026 14:52:08 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXc-0000S3-N5 for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:51:56 -0500 Received: from mout.web.de ([212.227.15.14]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtWXa-0001QF-HF for qemu-devel@nongnu.org; Fri, 20 Feb 2026 14:51:56 -0500 Received: from [127.0.1.1] ([84.133.37.84]) by smtp.web.de (mrweb005 [213.165.67.108]) with ESMTPSA (Nemesis) id 1McZnl-1vJMJB2r7N-00ZsHt; Fri, 20 Feb 2026 20:51:52 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1771617112; x=1772221912; i=lukasstraub2@web.de; bh=uZtEj7iogsvDfWdZSVpmpiuTSLNmWFEYLAlplQJqdVk=; h=X-UI-Sender-Class:From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:References:In-Reply-To:To:Cc: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=vUR+kaeeEdyvMDWKW/S//OyufV6FYKLQ/8+lnT7CNs2Prj5vpCBGezDCbYj5U74h EtTq8fO4QkBLuPjeobR1U3RwI/8d8coT0xK/x4+TFhQi5cAl6C5K4VTfupTPG1CFm 9wzKndxBE3/+91HXVEzV17Jyf1zLsRubagYIDkrmkn6tqY68HUVic+ilKns3cHwbW IEjR6IsNNR8vd+ya5+uGjWq2jgaglUhINzT7Nzu/PgCOkIp8tQFgnq4MnymqDtkY3 pmpCb/0gfjoroME2D6SRB7+qYjdDR1ZxgZeP4dkMhXIehkOjojpURMsOPzqnjI/hr pj72UE3gl5CePX3hbw== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Fri, 20 Feb 2026 20:51:41 +0100 Subject: [PATCH v10 19/19] migration: Always open s->rp_state.from_dst_file on the source MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260220-colo_unit_test_multifd-v10-19-bfe67d422ef1@web.de> References: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> In-Reply-To: <20260220-colo_unit_test_multifd-v10-0-bfe67d422ef1@web.de> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Zhang Chen , Hailiang Zhang , Markus Armbruster , Li Zhijian , "Dr. David Alan Gilbert" , Lukas Straub X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=8915; i=lukasstraub2@web.de; h=from:subject:message-id; bh=0QRIb5hyrRS7XuIg/Fb5rVgnPMcGW7UgecLa5q+td1A=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpmLtPqBeM0eGOmw3PxQTnfsT9Y/ewskHpzY2o/ M23cEY7ZiOJAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaZi7TwAKCRA1qwsonF2y WIJJEAChy7qjhVyb+hjeNrzqhFKf3EYAW7m2xdi8x+lBKroazHvEaTu58lultSkIIQw4yWMS6iy oon7Kd9GXaCrW8cZSfceFS6gndSrdzXcSFjFgqWZhfaqXd+EJ9eM3xLGcl7ORScyfvw0uFWdZ3f btepcSUrA9qMaaOijgktoVB3RG92UhLaRRDAtZDkKOlo1JrElwllwD19iEHIn5jLvmhu0QiJrUk T56eeSvm7fVGKBhVA/+Al3okFqKUvpVf4sgjyOuzELnfeYOnnDWVs5eLZkbDuvnw3tag9zJFBK9 pfYfW3AgrD74bRyNRhj1k0HHQKkNAgvG5YVHeRDNHqsPEvhPA24LW9UklLtT45j4CldaKiL/3ov e1v4TdqceskmaL5LYEv6QrMq+oPFs5nJ+jT8DZgJDDAjLO+J17O3hxp9tE3rETtBogYf5VQaSId +jp21eclr2y7HLWJtlBVjU1SCWDJBAgtUQysTyAl8hdMJXgKJGwcTkCIT+GCSeY1w1NMjqiTBHb ziSS3sH8K/tlPEzC40AdNEd4FFZkz3dNpIhIJCDrncmg3eLrN7hThZu8jfaC+kao5r1YTyMHyuU 10FrSyLrQ9bqEj8Z42YfVQT34ASsYRc6d2Stez9uvxdQt+0mBRR2oQUMBfKRxg0p8uEjih4H3Bm 0hrfbD3sJ+5HPnA== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:nABnO+LjBU8bpnGfzxgZ+EpHOYIlzI9nAp1LSCitY1x5HCC69wo YuD5QdZW3+j5FcUvSUvykXg/Bqruz5Wm+feyD+xkoNePMLGGAZi+DIffPbpQo9fdOwRGdY5 guK100g22OkyPLGer8b5fcOKEXmjzzzS1nJV+0j8H9kfGfgZsl92h6s+4ELIY6fXJ9YR22B M3NL5fLJbhZIyiYplOeiQ== UI-OutboundReport: notjunk:1;M01:P0:vB53VdT3Q9w=;hSOqSJMRaC2sjHp/RM3P0qf8igV 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 waaFueU0T/nmi7FbBAasFmeumw3EU Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.14; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity lukasstraub2@web.de) X-ZM-MESSAGEID: 1771617223666158500 qemu_file_get_return_path() can not fail (See also commit 3f9d6e77b) so always open the return path socket on the source. This allows us to reuse the return path in other parts like colo. Also take the proper locks in colo while we're at it. This fixes a crash due to a race between migrate_cancel() and the colo thread shutting down. Before, the rp socket is opened just before the rp thread is started and closed after it terminates and postcopy fast path is closed. Now it's the same, only the rp socket stays open until migration_cleanup(). If there is a rp thread, the rp socket is shut down at the end of migration, but the file is still open. COLO is not compatible with postcopy, so this is safe as no one else uses the rp socket after this point. Signed-off-by: Lukas Straub --- migration/colo.c | 29 ++++++------------- migration/migration.c | 77 ++++++++++++++++++++++++-----------------------= ---- 2 files changed, 44 insertions(+), 62 deletions(-) diff --git a/migration/colo.c b/migration/colo.c index ce02c71d8857d470be434bdf3a9cacad3baab0d5..0dee33f1145b81af276cf318e29= 84deae9ae0527 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -173,11 +173,13 @@ static void primary_vm_do_failover(void) * The s->rp_state.from_dst_file and s->to_dst_file may use the * same fd, but we still shutdown the fd for twice, it is harmless. */ - if (s->to_dst_file) { - qemu_file_shutdown(s->to_dst_file); - } - if (s->rp_state.from_dst_file) { - qemu_file_shutdown(s->rp_state.from_dst_file); + WITH_QEMU_LOCK_GUARD(&s->qemu_file_lock) { + if (s->to_dst_file) { + qemu_file_shutdown(s->to_dst_file); + } + if (s->rp_state.from_dst_file) { + qemu_file_shutdown(s->rp_state.from_dst_file); + } } =20 old_state =3D failover_set_state(FAILOVER_STATUS_ACTIVE, @@ -537,6 +539,7 @@ static void colo_process_checkpoint(MigrationState *s) Error *local_err =3D NULL; int ret; =20 + assert(s->rp_state.from_dst_file); if (get_colo_mode() !=3D COLO_MODE_PRIMARY) { error_report("COLO mode must be COLO_MODE_PRIMARY"); return; @@ -544,12 +547,6 @@ static void colo_process_checkpoint(MigrationState *s) =20 failover_init_state(); =20 - s->rp_state.from_dst_file =3D qemu_file_get_return_path(s->to_dst_file= ); - if (!s->rp_state.from_dst_file) { - error_report("Open QEMUFile from_dst_file failed"); - goto out; - } - packets_compare_notifier.notify =3D colo_compare_notify_checkpoint; colo_compare_register_notifier(&packets_compare_notifier); =20 @@ -634,16 +631,6 @@ out: colo_compare_unregister_notifier(&packets_compare_notifier); timer_free(s->colo_delay_timer); qemu_event_destroy(&s->colo_checkpoint_event); - - /* - * Must be called after failover BH is completed, - * Or the failover BH may shutdown the wrong fd that - * re-used by other threads after we release here. - */ - if (s->rp_state.from_dst_file) { - qemu_fclose(s->rp_state.from_dst_file); - s->rp_state.from_dst_file =3D NULL; - } } =20 void migrate_start_colo_process(MigrationState *s) diff --git a/migration/migration.c b/migration/migration.c index f36d42ef657bdf26d78ca642d77a9b76e1c0c174..8caa56940beef12de33a799695c= f486c8fbd471c 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -97,7 +97,7 @@ static GSList *migration_blockers[MIG_MODE__MAX]; =20 static bool migration_object_check(MigrationState *ms, Error **errp); static bool migration_switchover_start(MigrationState *s, Error **errp); -static bool close_return_path_on_source(MigrationState *s); +static bool stop_return_path_thread_on_source(MigrationState *s); static void migration_completion_end(MigrationState *s); =20 static void migration_downtime_start(MigrationState *s) @@ -1278,7 +1278,7 @@ static void migration_cleanup(MigrationState *s) cpr_state_close(); cpr_transfer_source_destroy(s); =20 - close_return_path_on_source(s); + stop_return_path_thread_on_source(s); =20 if (s->migration_thread_running) { bql_unlock(); @@ -1307,6 +1307,14 @@ static void migration_cleanup(MigrationState *s) qemu_fclose(tmp); } =20 + WITH_QEMU_LOCK_GUARD(&s->qemu_file_lock) { + tmp =3D s->rp_state.from_dst_file; + s->rp_state.from_dst_file =3D NULL; + } + if (tmp) { + qemu_fclose(tmp); + } + assert(!migration_is_active()); =20 if (s->state =3D=3D MIGRATION_STATUS_CANCELLING) { @@ -2187,38 +2195,6 @@ static bool migrate_handle_rp_resume_ack(MigrationSt= ate *s, return true; } =20 -/* - * Release ms->rp_state.from_dst_file (and postcopy_qemufile_src if - * existed) in a safe way. - */ -static void migration_release_dst_files(MigrationState *ms) -{ - QEMUFile *file =3D NULL; - - WITH_QEMU_LOCK_GUARD(&ms->qemu_file_lock) { - /* - * Reset the from_dst_file pointer first before releasing it, as we - * can't block within lock section - */ - file =3D ms->rp_state.from_dst_file; - ms->rp_state.from_dst_file =3D NULL; - } - - /* - * Do the same to postcopy fast path socket too if there is. No - * locking needed because this qemufile should only be managed by - * return path thread. - */ - if (ms->postcopy_qemufile_src) { - migration_ioc_unregister_yank_from_file(ms->postcopy_qemufile_src); - qemu_file_shutdown(ms->postcopy_qemufile_src); - qemu_fclose(ms->postcopy_qemufile_src); - ms->postcopy_qemufile_src =3D NULL; - } - - qemu_fclose(file); -} - /* * Handles messages sent on the return path towards the source VM * @@ -2388,9 +2364,9 @@ out: return NULL; } =20 -static void open_return_path_on_source(MigrationState *ms) +static void start_return_path_thread_on_source(MigrationState *ms) { - ms->rp_state.from_dst_file =3D qemu_file_get_return_path(ms->to_dst_fi= le); + assert(ms->rp_state.from_dst_file); =20 trace_open_return_path_on_source(); =20 @@ -2402,7 +2378,7 @@ static void open_return_path_on_source(MigrationState= *ms) } =20 /* Return true if error detected, or false otherwise */ -static bool close_return_path_on_source(MigrationState *ms) +static bool stop_return_path_thread_on_source(MigrationState *ms) { if (!ms->rp_state.rp_thread_created) { return false; @@ -2424,7 +2400,17 @@ static bool close_return_path_on_source(MigrationSta= te *ms) =20 qemu_thread_join(&ms->rp_state.rp_thread); ms->rp_state.rp_thread_created =3D false; - migration_release_dst_files(ms); + /* + * Close the postcopy fast path socket if there is one. + * No locking needed because this qemufile should only be managed by + * return path thread which we just stopped. + */ + if (ms->postcopy_qemufile_src) { + migration_ioc_unregister_yank_from_file(ms->postcopy_qemufile_src); + qemu_file_shutdown(ms->postcopy_qemufile_src); + qemu_fclose(ms->postcopy_qemufile_src); + ms->postcopy_qemufile_src =3D NULL; + } trace_migration_return_path_end_after(); =20 /* Return path will persist the error in MigrationState when quit */ @@ -2787,7 +2773,7 @@ static void migration_completion(MigrationState *s) goto fail; } =20 - if (close_return_path_on_source(s)) { + if (stop_return_path_thread_on_source(s)) { goto fail; } =20 @@ -2941,7 +2927,15 @@ static MigThrError postcopy_pause(MigrationState *s) * path and just wait for the thread to finish. It will be * re-created when we resume. */ - close_return_path_on_source(s); + stop_return_path_thread_on_source(s); + QEMUFile *rp_file; + WITH_QEMU_LOCK_GUARD(&s->qemu_file_lock) { + rp_file =3D s->rp_state.from_dst_file; + s->rp_state.from_dst_file =3D NULL; + } + if (rp_file) { + qemu_fclose(rp_file); + } =20 /* * Current channel is possibly broken. Release it. Note that this= is @@ -3758,6 +3752,7 @@ void migration_start_outgoing(MigrationState *s) if (!qemu_file_set_blocking(s->to_dst_file, true, &local_err)) { goto fail; } + s->rp_state.from_dst_file =3D qemu_file_get_return_path(s->to_dst_file= ); =20 /* * Open the return path. For postcopy, it is used exclusively. For @@ -3765,7 +3760,7 @@ void migration_start_outgoing(MigrationState *s) * QEMU uses the return path. */ if (migrate_postcopy_ram() || migrate_return_path()) { - open_return_path_on_source(s); + start_return_path_thread_on_source(s); } =20 /* --=20 2.39.5