From nobody Sat Feb 7 05:52:27 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=1769373683; cv=none; d=zohomail.com; s=zohoarc; b=b7XehMronFHXfx0a5IkCk4qRb9dyvJDDtndNiQDnDOf61ZP5q5jbYc3KNZJqZ3py1pglps/UNlYr6g40sWeOeqNjGmtcYcgxXetVzElfY0gZwXAJEQ4Jj41uiHaqI5KdhGvgeOO8Q8s+vTvARsE3zB1cWRXdsGGW6HaJihZm0HI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1769373683; 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=FS55Ktqo/GPPNIi1dt6u52WzyIntGAB3iXYHvWklJJ0=; b=fJ6cxLFuehiBQcXvUPgn7fZztlpevn1yCThlxvXFHXZ1NTTO6rdjs/di9Yl9RH8K/zq0qP+Ph7sbl3F23zNcDw69SPx8SnslM5Qr9QeMN4AkvrFqpjwobt5t6UoZfSswV3yaJEn/xEJJFJzgeyJD7NrJZRwPIXODUjlJEel2G/o= 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 1769373683636858.9720489327622; Sun, 25 Jan 2026 12:41:23 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vk6uj-00075V-Nc; Sun, 25 Jan 2026 15:40:53 -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 1vk6uh-00070Z-Pk for qemu-devel@nongnu.org; Sun, 25 Jan 2026 15:40:51 -0500 Received: from mout.web.de ([217.72.192.78]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vk6ug-0006Dl-B4 for qemu-devel@nongnu.org; Sun, 25 Jan 2026 15:40:51 -0500 Received: from [127.0.1.1] ([217.247.97.172]) by smtp.web.de (mrweb106 [213.165.67.124]) with ESMTPSA (Nemesis) id 1MbCHy-1wLdWD3Mka-00kbwe; Sun, 25 Jan 2026 21:40:41 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1769373642; x=1769978442; i=lukasstraub2@web.de; bh=FS55Ktqo/GPPNIi1dt6u52WzyIntGAB3iXYHvWklJJ0=; 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=MDs/Ovh1ycGsxzJnd5av4EWsKpPAwDLjkZzvccMKzh2bc96kLyEMz+pw40R1SYdo fy19RPUkqXTVVjIK6EeITew980mLd0i5mNFCdabjRxYkZ019QVQ3rzPCFSCESRCdN AaXN7mmWpteSyNPgdIX08JSd1Xr6TuvjTuOrPJYS+wpEz0yv+0RU6/enNJrwVlgX/ v6StUcdojm5ZxfTI37becvKi4o4wgONPnwyRRoPMnR4CHyvI7vSpFq7z9nUGlVWJE 2uhr+dqsV0xQJ5WER0yk6KnS/cWxd0tC33APs9AjAYIpr8OABYStorSwcurkXpxT3 vDj3Z5OOUKdmID31fw== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Sun, 25 Jan 2026 21:40:06 +0100 Subject: [PATCH v3 01/10] 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: <20260125-colo_unit_test_multifd-v3-1-ae926ccd8eae@web.de> References: <20260125-colo_unit_test_multifd-v3-0-ae926ccd8eae@web.de> In-Reply-To: <20260125-colo_unit_test_multifd-v3-0-ae926ccd8eae@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=CaPOTfjUkigcqVlnftshkn+8clddI9wXrPrNEx+DluQ=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpdn/F5i+nAODDDTqSeqvhH3QHXxq6G2IxjA8Ig J0ryPr2waKJAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaXZ/xQAKCRA1qwsonF2y WL/7D/9WKjz0TAPI4t/82ODc+PkzbjwTfI+bek7iEWozZC0lOkMww2B8oKTIHeAxpg8mEP5DLb9 8dSFPzddKBQje24kqzJzUVu2080dAy4N2g3HR4+25GbuflhzacvLibRw2pMN3rEPk4m+6SO4oTp xl9SXyp9W8XFL6tHGpFxqTuChqKwCCoCCKUIkdCSMaHWLs6mdkr+0fqSNOrB8yIF1I1iqZkr5cU U08gLhb3IFZapLZGMiu7T3DlXiKQx3Xkup/7pGNpY2X5UPUrH/HtDNnhz6qWMRqftBvP2B63Yvt jgbWZTyKebmXf+UU8WCitucWnYndWX37pwMD0bEu2/9jYHfmBKUgxCWD3VV6OW9NAEz//7edSUE 2bdsQirAn9V3x0+Gz2edC2+W5HGl3aqn3blgLg8dreMgBBNv4etE5MFZqInnnlgnA2V1cItnFs9 SaVjfAU+5wjo33c+RMHU9aMMoNQ1Vnln4LuXyxxP7utv1/4doQycTaHUxW2yiZhnN0enSSfhz4p a7BrHlXTtiWeboZY6iUK4dmcPMWMRs3SM/N1NCPBePDmE5EXXMd3G6lhnny2O6CT5N2IOhIKrp9 SK4JhYsIianIegB1TKCL4VOIaHdQroQX2I+IjUEn6NJxmHjLBzs8QOrEO64MiLY+daQD//avHEj cS8aZQGRMoslWSg== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:qherZtGK0jmSNynn5G7n0jnycycB1tHgPgnMtSVDY7MHJ4suxGD SRWVHyMc8u2hTJWvP6o0o29b6GQ8hM4y9tGqX7i8/pT1Wpb0BzV+FLp8SeJjBCvtU+3Lu/K xuHtlzNlH2RHmk2iNSfS4gg9OtSFyp18A6iL9GDxRQxgOXFGLkOrltOh9Al9aEQjoBqLyO9 fLDJ1cR+VRwEjXyfWUAmw== UI-OutboundReport: notjunk:1;M01:P0:J3cERKNBK54=;N0UT3y8IAOL8I3uZhGDR+1BMkaE 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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=217.72.192.78; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 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.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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: 1769373690307158500 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 e23354235dc70a6224dd00ce92b0a049fbc8edfc..689d79b82d39ec8c2bb15dacb79= 28df5649756cd 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3851,6 +3851,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 7 05:52:27 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=1769373768; cv=none; d=zohomail.com; s=zohoarc; b=Gtw7HZX+R5406kuJe7g6Jw54e/LSbDt5Q7QZa4ijXSD2EdF73Tan6NcDPkvuq8J9Hl0xfYHFCzWOED3Oiz9rkdb9kW1El9Po2YKgLY+TuO+11wAjzQzMNl8xQpo6CaZSFUTztFieVXIMXREn1hZLgb1vNat3NbABQXpXRgSQU3c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1769373768; 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=C/CYeZCotevsdE8XEi46rLuLUe5boOkt18D4aIjbX1U=; b=dIoPRpZa5CcAn+ioPLplKEKyjfQrG8UGahPwZxkGQFJgD04rja1dAMtghcJ180oHTNRsyqJRf2eLLiyIe/drhwkgM6ZdYmOKqCH/t+S67YfLELsNMpeD5Lus6DE+iFpLzxpmN792kF06mYqavoa7GHh9nPBUy38iJMPHcgMEdPg= 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 176937376858131.663411247451563; Sun, 25 Jan 2026 12:42:48 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vk6un-000797-70; Sun, 25 Jan 2026 15:40:57 -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 1vk6ul-000781-MX for qemu-devel@nongnu.org; Sun, 25 Jan 2026 15:40:55 -0500 Received: from mout.web.de ([212.227.17.12]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vk6uk-0006Dz-3z for qemu-devel@nongnu.org; Sun, 25 Jan 2026 15:40:55 -0500 Received: from [127.0.1.1] ([217.247.97.172]) by smtp.web.de (mrweb106 [213.165.67.124]) with ESMTPSA (Nemesis) id 1MCGWe-1vaizY0fQo-000rsA; Sun, 25 Jan 2026 21:40:42 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1769373642; x=1769978442; i=lukasstraub2@web.de; bh=C/CYeZCotevsdE8XEi46rLuLUe5boOkt18D4aIjbX1U=; 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=lNelhG51SLNz/bSLfoTgVSmGK/B/lXdnWfNC7YAH0XAirpEXSx5voa1lXWcM89M+ QKU//OUmc/p3Bfr792VpZZVmNoY4VDlCMMkfKz8p+nDmAfPj/Mf1vgq5N93v+P6BG +RQBPjJjDKwwhA9zkTOfmJLE3r3oWdY7NThGKFpGMLUxJlpBYB5nABMdFgx6f3pON 6LlvwJ9xiTknexVc52zeFLclxtm69AKAt8SoN7ned1E1a7xv9jcXmiVjOGtaWbeYU Dob2yAwVw2Ov2YaPnhB5IHIsBn8bjHJyqmb2pTXz10oEAnY9ULuiTkjVf67pUE6Gj ejsIB01eh1bgM1J1/Q== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Sun, 25 Jan 2026 21:40:07 +0100 Subject: [PATCH v3 02/10] 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: <20260125-colo_unit_test_multifd-v3-2-ae926ccd8eae@web.de> References: <20260125-colo_unit_test_multifd-v3-0-ae926ccd8eae@web.de> In-Reply-To: <20260125-colo_unit_test_multifd-v3-0-ae926ccd8eae@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=7pYse0rrV+Cy2p7m+a+OC+e/bUhXDuYJa+mzuTARfc8=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpdn/FOwlGIUeyfPSeKoggfdHqcVY1hNOQf1+C1 6dP1T5+3yqJAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaXZ/xQAKCRA1qwsonF2y WMwFEACKjG2NimZ/6uh2l139frm2H9x55bV0DjIqnfDtyGfqx5q8HuNBA/ANYfYALz4Cz2qAush sAZD559UElB19WiTGNP55cGrqP8iMzXdRi7hOdVzMoysazKEe/OtepYN4vvB6w4Oqf1xnsmu3m5 Nh9wZSyYBzGI5E2/bf+z/Fxwbvz2hQTBRVgV/IirCM7FX2b3lQfOPQKRa0ClNGE8Lg4P9k93Vi+ g+LvylD3JJnt0aQuSCQPdSJFWrWBNBCmAJ7HYa+7NvxPXMxX3ExR4pSWtbR+ITTrhYgxZbCXZnV XLuvg9kp3l5276VsLZrvbuMFe4jtCT6wfvbxlKcnxZ+7EZOb5OUwTgSmi2Tr0Ih/jAnSNe06+C0 890BOtihObFhRzzjcoFygzjGL4S96vX4L4sZcsu72caybKGNHiejw8RwsD5k5AMvqqVbDU8tuC6 /3S2M0DQ1XuRGEMimmh7o4r8Av5jAAiJ2cZJr6PP4HPLPDHzs4RjNbpwXD/V1i+3zIBmepWJ10M 0xRiOQXtkbdghGBd9+/9HI/8GnwHUJ+Vv4yBjsqQT1NUsZFd7HOMSbZqA8magnNAC6rDMbeqBmg GMK2xdz0CvXPTMaOdfbSEQ8Vh6EjwZJM+x45WTQQDlaRR/2U6VRODetHGPqz8La8xI2RPMm6qMh OgiV7NjE1MBXt3A== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:PkWefO7bVrVVPWddpYOKiaKu28dVIbfjUWzCKUkmp2zk9i2ySM4 Xc19Uswtb+GojjrM6VrDXeNLqWq8tNND72nyufVVRKzGHhnEBRQSdj8yiRShcWi3scfrI5G UKwup3SErfcp/fklIsyhs+7MWVcVVaplMjVAhuTjTtWnLMiQMBeEMyYmhjOQz4ps5ZteQCZ r8M4Jpt2yBuzcBMVATtdg== UI-OutboundReport: notjunk:1;M01:P0:lGJCcmOWWBY=;ev+vw6OyVMoAgkHCIkX+6b7ZmOD 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 nfyxSLdP9c7S4zFCx3h/t2RfxEvbi 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.17.12; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 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.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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: 1769373770263154100 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 689d79b82d39ec8c2bb15dacb7928df5649756cd..1e9bdd87c3a2f84f3abfc56986c= d793976810fdd 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3850,7 +3850,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 7 05:52:27 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=1769373683; cv=none; d=zohomail.com; s=zohoarc; b=Dw5ePj0nGNcovVE5LenliILvVd/zHyRYOr59YpzHfqx53lfsseWICuGJjuuIf0fnTGQAP9q0eOxtEUNh1qhjj+IGJUsMmRSZIQJTJ6dZ0Ey/Za34Bx9u14K7cDIpVZ4cTKD4xLAjz9reFqq6ihqpYTXeDdT3XG2f4tS8dmk3bSs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1769373683; 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=vgLJ+U6K26CtwA9b5H7uaEOc9nYtSU8L1BmZbwpD9hc=; b=jm9H2WuVPrNsk+43N1RPPc6kvRMKgyuyVf1N7etpQJMQM8ZvVWRUyuq4qNaAmNLifSalgIJMPs9++vc3dfZ+48fCGJwKEi3cSQge9gyWcj8EdiozDuo44gutHSpTffHrhd05mNCKjaPpb4BYmHoMpadykqf7wt+8GEHKDYwf1AQ= 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 176937368334946.132755076030435; Sun, 25 Jan 2026 12:41:23 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vk6ue-0006y9-6P; Sun, 25 Jan 2026 15:40:48 -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 1vk6uc-0006x5-3z for qemu-devel@nongnu.org; Sun, 25 Jan 2026 15:40:46 -0500 Received: from mout.web.de ([217.72.192.78]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vk6ua-0006Cj-L3 for qemu-devel@nongnu.org; Sun, 25 Jan 2026 15:40:45 -0500 Received: from [127.0.1.1] ([217.247.97.172]) by smtp.web.de (mrweb106 [213.165.67.124]) with ESMTPSA (Nemesis) id 1N2BM4-1vtTjI21GQ-00vAK6; Sun, 25 Jan 2026 21:40:42 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1769373642; x=1769978442; i=lukasstraub2@web.de; bh=vgLJ+U6K26CtwA9b5H7uaEOc9nYtSU8L1BmZbwpD9hc=; 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=GsuzWvtqunLKFqDXj2TnHg7kRKd5pr5Q3a7xaxvF/Q6Ohzj/9EkthATCof1gVzoH 5CvqTdKkyi7twbAQmameLDs24kZU2KZNnhU4TmA4RDnc0BwDyX4tB4zAqyEmt0Oo2 QjjcGPuaiUMgPJLdpls4sLQNpNWxywRcGvtodqe8ThL1sW6weCjbuf0+ZO8664Rxi SRkvV7VFn86UZTVpEu/VIAs6pToSVABHwKRhYmT/dy/CVfHIi7oZpMNAOPB5yb0m9 g4WW2wI1XHbD+4KIBKDPW12iQR/K+vWV3DbiNCqMmBB06FDWIMdHs9iuScK00lU7J eoyXdXSJ16pnN6mcig== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Sun, 25 Jan 2026 21:40:08 +0100 Subject: [PATCH v3 03/10] 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: <20260125-colo_unit_test_multifd-v3-3-ae926ccd8eae@web.de> References: <20260125-colo_unit_test_multifd-v3-0-ae926ccd8eae@web.de> In-Reply-To: <20260125-colo_unit_test_multifd-v3-0-ae926ccd8eae@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=1258; i=lukasstraub2@web.de; h=from:subject:message-id; bh=dZIxj7jhzidArs1dqbg1/3LOr1jTSaOWyeY28DYEzI0=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpdn/FBzO4zrYb+wthobIr6ZN8k/8WDKeNVcfjJ ZE9/Mp7+iyJAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaXZ/xQAKCRA1qwsonF2y WGMiD/495bc2BhAh1I2YGmvuN2fhsrd1sx+220fd4Vrz3iNG34DQcekR2z9Yw6opt//4O0XfTX3 T4IJIinpzYhLAHBhcUyGIMRmuTsyrpK7Q/DK19RaqyrSN/+MYIspvxjru/26d09/XQkk0HIaXU5 TGbMVttGiMCG3ObM+yEnPvDiz/JQ2XRpOlWY4UfJKtMURgz6IOgJUPpW2w8m703yfg5FDwyX2Of 9WMopfJrrNk526e16YG54wPJcNmOCoDH+jSELPoprITr+Ki46XORFcjst/ehv8UGuK4i/HA5CrQ BICJf0KCu1a4ABUml5vZDXT8vvjkK0DMNLwnIZn1aNoRcToKuVKZ/C4AssvbOLYTgkIaEp3kBi+ MVpWarDgezoKw2XCy62t6jLdM++VwvntWEY6ngsM3SLSDj8lzg4kOsyaum9cZ//u0HmwAMqduVw rFLZSKcAeHujJNH/9mmWgch6r/q0HaFb6fGiahRC2nXE99EmzwUKO8C1WpAnbDWyNqrIvmSQ17s V/OcvuVxXNL6+BeXqR1tqB6Anwgnn4mX7Va9H+YccISoN7SymiO0y3uXdDQBe5NLm21ru7kDC4y 339mupR2h9FW1TkDX/HRtoAeP020IXo0DlFLbd3MtkLj45zLzBEIcvBaUHBaAnkdoTCZt09jelV gcNKV+N9jwrnocQ== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:4eyWSNmievxAbSUzoyoUYnjk0XoxcdQ/gVxEREB19uSSYqVy/FQ 039vJDfrY3QNBiL49Ih6pUiI5R1Q9pYADqyAZcTtBfc4nSHjW4ODz+hrAmsj2G5BFA/sKmA 8UHdAscRCG7ZCLzmpuBrVBhyR0wvJOa8q4TSgFEqGKW0sY1sbnp0rZQ0xoPte+07RHsKsuz t7kwUsAxaHL8RIDEX2y6A== UI-OutboundReport: notjunk:1;M01:P0:rHyk+5r9wEM=;mUj1FlV6yySIxnZd3DLcHkkT335 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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=217.72.192.78; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 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.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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: 1769373686473158500 This is in preparation for the next patch. Reviewed-by: Peter Xu Signed-off-by: Lukas Straub Reviewed-by: Fabiano Rosas --- 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 7 05:52:27 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=1769373683; cv=none; d=zohomail.com; s=zohoarc; b=FzpNMP2PRegsBQaz7zn5iipAmCWNr9TziCKaDWlkj9ecCMe4eaM+oPKHnQYtXMfkVhGhCsrBsoCZwYyy57k0JPSNloR8PY73Q0QtR8LO3Ntm7wS17olQPYpWfxhb5z5qTNmEh6I7+paktu8tlItjp2XiNVu3cV0RvO1dZxpNHfI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1769373683; 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=kLBhPBWYzaKoPwfLjTwQF5oYW9XXHp64YnaKAvCdyls=; b=P81Qt8HBPFTYjPImrbYeGyqvHyVE/aWy5/iOsIcHvBlylvPGLtTn4sHeIQl+Fxt8/uFHngcMpgDoA6/xuzaGrk4SmthDF7rTI4+jT8JZ7po/KOQ4yThoP49aKFmoGyvS5XJlDSHHzH6lXxUdSLqmrHwOWWhtJs80XRYzhrj4M9k= 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 1769373683518190.48090092353698; Sun, 25 Jan 2026 12:41:23 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vk6us-0007Bc-W1; Sun, 25 Jan 2026 15:41: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 1vk6ur-0007Az-CK for qemu-devel@nongnu.org; Sun, 25 Jan 2026 15:41:01 -0500 Received: from mout.web.de ([212.227.17.11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vk6up-0006ET-B2 for qemu-devel@nongnu.org; Sun, 25 Jan 2026 15:41:01 -0500 Received: from [127.0.1.1] ([217.247.97.172]) by smtp.web.de (mrweb106 [213.165.67.124]) with ESMTPSA (Nemesis) id 1N5UkC-1vqALY3Tq6-00yThi; Sun, 25 Jan 2026 21:40:42 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1769373643; x=1769978443; i=lukasstraub2@web.de; bh=kLBhPBWYzaKoPwfLjTwQF5oYW9XXHp64YnaKAvCdyls=; 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=vnbZC1HGya45FywiCPLRJnpM21FU0eK9mjsULPCUbUoyTm4K0WDwvwT5n4ESbSKT Rnu65IRX4aJT1xPu1Ee+F4azlSruD9nNLeb8JciYtPQ7UQemg9Gn0Yis1uhu/mjEL oimrn9Rh7S/OpnZx9O6Vvh6aRPWPrESCIU1B2DbGvH0Pnf/l+6vaaMKTEMIed0T+w YyuHXuz8Q+0flMBIyJgdi4UCubUIA1Q510v/kHO5ooS0qPGkf6NKeEhO6tupA1GoD PzMqXGudAygd3GJ/n0WdFlAalKTOiJ03ghuHTqHUKgCzUsMhY6xwwOCOp0MX4ChhG oUBj4Bz69wfa+lE1Hg== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Sun, 25 Jan 2026 21:40:09 +0100 Subject: [PATCH v3 04/10] multifd: Add COLO support MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260125-colo_unit_test_multifd-v3-4-ae926ccd8eae@web.de> References: <20260125-colo_unit_test_multifd-v3-0-ae926ccd8eae@web.de> In-Reply-To: <20260125-colo_unit_test_multifd-v3-0-ae926ccd8eae@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=7865; i=lukasstraub2@web.de; h=from:subject:message-id; bh=a605xyOmAua5AZKyFyjMddf8nm9ScheFryQcKTX5wqw=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpdn/FqLiSTjlu5QlwThYSb7FLIp6Y4yeyN5Sef Tt0LkrKHrWJAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaXZ/xQAKCRA1qwsonF2y WGsHD/0SXH4j0iXrN/l/r5uJb5yNAj8eQzbbMB3gf7E/QBXghhYYdL5E3D91VHwVlxpQjLAeegS Uu8cz4IDNQ85z9JqH20+Yf0cjl3KtS1Mrh12NTRP8xNEj/EY3XcRJX0gx4GpVocUjAayH0n6mPF 0jUDUueNIY14J9VQiprfHpTFWI+v+Qj4FQd06y06wFsyhEPR83t+m02uQGkfRcRkDApyzZYJydt N6PVjkmeEaO13OTOjAvSNjOQToazHleN2JDZWaBVLu0fdizy8CIfdKAOVflxPJF9xNporrdOu1N xUh+230h5SqBzBmPOy5uPSgWWEmem+WOWN480ttVtjn/Q73TcRllMUClH3DjMyXwl2bLdb1OQ1G wX/DOu7nHXGdjfWvPC5cul72POLKMqT1L/+PdV6z+koGoYPnwBNkjLgUHwyC8dTH68GiD51chPa cqk5wBB2s9UhcE6IGHVrV5fe7y9PsDMXjM7fWp7E56GYb02WWJBlizlmfZcZLx1rJ7odjEyFjfA 5WqEpbYWYLvG3JHQdkEkxRvkVC0icHcBpMFaJvk6WzdYmcP+S0Lrq3VfhkapJX7tsPX3xbqRtQ4 BOHLUNmojwoxjqPsXtvz1hWmBI/2d1Jq5WCVHG8Vzr7MtDCDLNNjcNsB3W9uCH3uYi342pUQT6c ohS9TNr4s5XAvbA== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:LB/MPAjG9esqO4COAlsMtWIjctYSrFo8e2lbFe2GSN2ilADPa5A J0gUwqAQGav/JgstInH8jDiLW5t0tragKEHCgRDHNmlCKClpqEfGru16qVtOosGiiicKRqj Sp0xmMObAID15H0ZORR52aIP6tgnAbQks/+Mk75Izl7pnNVqsqYmX6pvloXkwlMlxOwwUt4 RSeAn8oC/vLpWgfMQVeew== UI-OutboundReport: notjunk:1;M01:P0:JprofkRMUy8=;xvbcGOY0aUqHK0rAoSMgt6xnvCm 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 UlhHfg18GAo7e7/04mRD8v/uV8RU5 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.17.11; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 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.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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: 1769373687630154100 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 Signed-off-by: Lukas Straub --- MAINTAINERS | 1 + migration/meson.build | 2 +- migration/multifd-colo.c | 50 ++++++++++++++++++++++++++++++++++++++++++= ++++ migration/multifd-colo.h | 26 ++++++++++++++++++++++++ migration/multifd-nocomp.c | 10 +++++++++- migration/multifd.c | 8 ++++++++ migration/multifd.h | 5 ++++- 7 files changed, 99 insertions(+), 3 deletions(-) diff --git a/MAINTAINERS b/MAINTAINERS index 1e9bdd87c3a2f84f3abfc56986cd793976810fdd..883f0a8f4eb92d0bf0f89fcab46= 74ccc4aed1cc1 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3853,6 +3853,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..c47f5044663969e0c9af56da5ec= 34902d635810a --- /dev/null +++ b/migration/multifd-colo.c @@ -0,0 +1,50 @@ +/* + * 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 "exec/target_page.h" +#include "qemu/error-report.h" +#include "qapi/error.h" +#include "ram.h" +#include "multifd.h" +#include "options.h" +#include "io/channel-socket.h" +#include "migration/colo.h" +#include "multifd-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 7 05:52:27 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=1769373766; cv=none; d=zohomail.com; s=zohoarc; b=J38XFW2xqAcs6//NJkx2LDzHlfOg2SGnPLmAYCAxekb5HaBqM9imkfOfmpf1ot+/mieQmUvml/p88otqAa/+/e2nI8VLVFvZePy9Tuz9s8zMdw9OmVHPo4DUEeOn/Zgm4RzkKZRkApjhZPWUcI92LV7vikhJwDwOx05N8Vw8Vnc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1769373766; 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=le+nLiERzrnlm19tGPVw4LccaOtcc2jCGxhjGVm2kDI=; b=k7F8THSSw5a6raXrV61bbP5lytkuu5wTrBUhbikibZ5sLJj+UxK+W2+r7XDVRaFMmk02TBk8OaT89R8l42e8pGn40LIZp3X7uuP35BXr/Cdqn9InnbTrVq5sUcPrk3FplfhNtm8/Aekt7KpdgZvWs3jNNRzsdnA1Ou2A/4FOOJo= 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 1769373766729512.5630479148455; Sun, 25 Jan 2026 12:42:46 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vk6ue-0006yG-HO; Sun, 25 Jan 2026 15:40:48 -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 1vk6ud-0006xs-9w for qemu-devel@nongnu.org; Sun, 25 Jan 2026 15:40:47 -0500 Received: from mout.web.de ([212.227.17.11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vk6ub-0006Cn-Qx for qemu-devel@nongnu.org; Sun, 25 Jan 2026 15:40:47 -0500 Received: from [127.0.1.1] ([217.247.97.172]) by smtp.web.de (mrweb106 [213.165.67.124]) with ESMTPSA (Nemesis) id 1M7ux6-1vf8pt0e1q-00E38s; Sun, 25 Jan 2026 21:40:43 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1769373643; x=1769978443; i=lukasstraub2@web.de; bh=le+nLiERzrnlm19tGPVw4LccaOtcc2jCGxhjGVm2kDI=; 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=niE1Gs3ZZUC316b2iDiFi3HGsKhysopqBG22hQ0GMSvuR2LCtIWBY0/7RpGXHCgV oWBin8HPTPnlBWAzsA3FyTe0ANoX6E4IF23c/o2Ary6AjjfRvTKChTFqjWL8Dff9P xdmD2uQGYcHCagyzQOtqjrSv86BJxpRptZwJ55TuS/OAIofWEPBPuoqRRvshBYGzB XZqAzPbmqp8KF8qegXXA89HcG3TWbj1evBoPHzgYsXvhmisCGurilhEIVHTDKQNWe SAejoDJMvC1sVbU9tQVw8s7bBOEzqJXSZ36dUVI3WabObsbvvsU6TaMW7c4AU/3TA q0jtsrpMPfkq2XpgrQ== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Sun, 25 Jan 2026 21:40:10 +0100 Subject: [PATCH v3 05/10] 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: <20260125-colo_unit_test_multifd-v3-5-ae926ccd8eae@web.de> References: <20260125-colo_unit_test_multifd-v3-0-ae926ccd8eae@web.de> In-Reply-To: <20260125-colo_unit_test_multifd-v3-0-ae926ccd8eae@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=867; i=lukasstraub2@web.de; h=from:subject:message-id; bh=zWjKFO5Ycx7AzQX5X33F44lkl1z+MO7MkWEZu8sryXs=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpdn/F4YV4P63fSgHzeKK63BXPnYVzdxTUwrhDe 0QVmWuOVpKJAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaXZ/xQAKCRA1qwsonF2y WNfgD/sGCrU7h6S8w1bIa3JIT2/fM2oWUvVdI8My3XW/Ea7UJhmgWrsztADcB5CAxTJUDM1M1D3 beXkN96gft0rf1EaXfeG1mpa7nvtwxNfuETzwqzvOsg4UevlJVXS8CQFA/HIGv/kjCTYOlp2Q3u P/E50be9IPJWv5liGzPx7iStckj7w6fyJRSN8ob0kD+Ltk7+tNHVS/Opyl6PNsI5/54boGLs0q+ xU23RFdJNKCrk5kfVsRKZH7howXTqE26QDP58F0GnEiP4uS3dU+adRB+rGqr6+FSR1FiOCcrgvJ bBoCugGrUy0v5tgktS3wNFmWrGq0jqXfuiiTi27A4tMl9rlSGV0pxRZKKfxBZkDNUgxWHly1bre FzPkVx6vgQ4FoslgU6p9EiqgRjS9qXKuP66bDmuN9ezhbiV0wahZMiwpm/ldxTLW2na0LlxXPdS TzaARl0EscHjWrKJzFTMQp7juw+VZxOSYGORIlaWFFmhflCOK3cfEdMU6kTyLx98TrzwZGyITAx 5qKU0qM4W9LsCsC9Daa9Ak752wWZtZAtMbht5QIYcevd3zdVQ1XI0G6xUj5csu0XYCA6tj3wiak /IMUFJ1+HTU6wATuOcL+ZvzZsL1Z0oqecnLp5v7IVgWLGO8KjzPdVSJjzqvI+003HQJWgUsAN3P bgBwghNr1YCCk3w== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:BsfnpUIO+Sks9HKwP6Cpg+/493WqXXkvHATuZD9UA/bZQNY+kD+ bN7mo6A267lQnIDWCIfB2/5rs2muPy6XVFVGNAOFWEna0TfuPPzzBuGw8o/s0ILMA7MYguG XKsS+Kp0luVZrQ57z/4PyfOnX3KTwq7qVunQ5WVTM8Ve+FhU4ZjMB/rdd1kffp7twy76mwY 5c+Nh4+LaF2d5LlbECMhw== UI-OutboundReport: notjunk:1;M01:P0:m8TcFpZ/l9I=;iYSc0rktE9EJVrqBQWrHIuj+O8c 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 n4Vh26087ocM5/gWBwso 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.17.11; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 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.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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: 1769373768270154100 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. Signed-off-by: Lukas Straub Reviewed-by: Peter Xu --- migration/colo.c | 1 + 1 file changed, 1 insertion(+) diff --git a/migration/colo.c b/migration/colo.c index db783f6fa77500386d923dd97e522883027e71d8..627b3706687036554eda3909b41= 94116a7640493 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -727,6 +727,7 @@ static void colo_incoming_process_checkpoint(MigrationI= ncomingState *mis, =20 bql_lock(); vmstate_loading =3D true; + 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 7 05:52:27 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=1769373776; cv=none; d=zohomail.com; s=zohoarc; b=X6SkDD+E7s3gt5ujBQyHNiVkehzXnExNhJLlmd/E2DrOIeA5F/4CTA4yikYupq6492eIApv6Zf2ImB/zoVGLXbLQ3cgBh5Wx/tXDST82m16QEAYzo4HMixlMtQE0adVjhnOF9e7hgIzb8qIi02XMC6kJBOf5+C2QhC4URu0ASDM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1769373776; 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=01CcrAFGfBqse/z0OudZxVv0Ve7zwFAcaH+poEHtbSo=; b=H2LJ/ZbybY5HQvpUZKYA7wltdR1k1QjuZsGotRE/bxmFhOHMmmz4LD6Z/P9Qa/RisgnT3jPVPOwYtc+azaxJSZQXqI8YAF0Geg6iZ8UZzuj5JubGbpGLfpF4I4dKySvwXOjni0Ea87uXC0AQkLegoTpP2u8rE8KkoUwXfY69PRg= 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 1769373776869686.2665871748133; Sun, 25 Jan 2026 12:42:56 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vk6uq-0007Ab-7b; Sun, 25 Jan 2026 15:41: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 1vk6un-00079S-Vp for qemu-devel@nongnu.org; Sun, 25 Jan 2026 15:40:58 -0500 Received: from mout.web.de ([217.72.192.78]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vk6ul-0006E7-Vj for qemu-devel@nongnu.org; Sun, 25 Jan 2026 15:40:57 -0500 Received: from [127.0.1.1] ([217.247.97.172]) by smtp.web.de (mrweb106 [213.165.67.124]) with ESMTPSA (Nemesis) id 1M8TBS-1vfh4F2aAa-00DVB2; Sun, 25 Jan 2026 21:40:43 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1769373643; x=1769978443; i=lukasstraub2@web.de; bh=01CcrAFGfBqse/z0OudZxVv0Ve7zwFAcaH+poEHtbSo=; 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=XQgLhcj3AZN4tCsdiP7nydF3en4lOggIevtUHFc/1+e/odNgyqYcFRQlFalk3vZ8 jdIbl43xCn2vVw+YxsKFrEf4+MZdNz+ZB/gkqkc55/DAJ0eI3aJmazrpOw1SroWRj nNh0d+sUwuRQgZ4xhUfD97MDkn2JJLqRdxGU+pFBj4O4jz0I4t1ngEk1dWNSF5W7M USj19VqjwM+yKsJUMbTJivSFMW8cFFDMKEx9rpe8ePLMeuM/Keaat/avpvG1tEq8x 7UHmSHRUtQEjCScN9pQbM2yh4HptJT1r544OlgKqZZLJp/kDIKR20KU5U79lcLveU mLzxXP5nV4ptEhfjEw== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Sun, 25 Jan 2026 21:40:11 +0100 Subject: [PATCH v3 06/10] 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: <20260125-colo_unit_test_multifd-v3-6-ae926ccd8eae@web.de> References: <20260125-colo_unit_test_multifd-v3-0-ae926ccd8eae@web.de> In-Reply-To: <20260125-colo_unit_test_multifd-v3-0-ae926ccd8eae@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=10523; i=lukasstraub2@web.de; h=from:subject:message-id; bh=xlNofuIt0xRZiXUiQCZ0X6/8WuKwBOF8U9/GK22VqXI=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpdn/F6bmcoCTnFluvfFqmN5kgSAV0/2EAPEn6M JD4h/mtvHSJAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaXZ/xQAKCRA1qwsonF2y WCnlD/9AAlLCZit7JYQAOc0FdJmte2HnOkwiXsOifxkmBpVazvlRNIiXqIVK16GNsHSRpNEum1g +OncSGrsTNVLllCDCFzkF7SqSED+DYTbiV35VzNMiaAoq20iPNRsDIs57VShyMdQ4Ul4BYC7dIj SrC3gO4TOXlpAF9T5QVRkvcaNMHa5gE5zmHOK0QKbPgHbvFQ78Hmb4R01EYployKjB7yKzH21+v cHR+5UY1VtksCKbjWb+++blcp81pz4z1xfhb5XKb45z4TBISCCO0UJaHqE18SNq0ugnMjqg5hYY wovHNBvcSHUGRDqMEXmi/fjAKk0XeYZM6BAo1lszuROwyfuJeiimABwGSMJlMM4H/HVxVDtyRdx zjnI092zNevuIBet/L2hdmHPeNnVzu/ruF3ayu8AJP0rZ6z1sPXzzoZE3z1hMzQYSFYcRHrWbUR udR8zGDbiumPcu1x93udqKhDVZaD4HTWAMjr4qW6ATjdnxW5t2zqjopCg1xqOPIIGeOZnZzYc+l BRjbtcOXMD6GFaFZ1K2C2I/QyoFt1m/hrA34NuN+IdgoFjpJF9twXOfFJh1N7urTpcyrSMHJpd7 /MFKUc0zKsHouLxddgvD1ML8dcVLHCderfRbVGXUd4Snn051SeJowmWCTPj3N4UplFDwh0Yh7Zg dLlXIubmm+YgrAQ== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:N4oVqgoTWY1nXbGl3z31gENPWOx+mmMHapHQ76ZyP7C4wvm0pCr 8bknjysTM01Q8lHkWeB4K8KEGmB0vxFsiNOURC4Zo26jYYOm1Dasml8vRT2nTsgMFGzltOo mVHH8Lw1lbRtCrAbmToGxXVm2kq4PKh5jeGbpPnbOnMPs7wAk157ajb9maBHW2cnJbe4joX 83Z7omOxfo2MTP3TRAaLA== UI-OutboundReport: notjunk:1;M01:P0:94bCvwT1EPU=;WOQkhUngtmPusUu3qSMha2B5n6j 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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=217.72.192.78; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 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.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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: 1769373778611158500 Add a COLO migration test for COLO migration and failover. Signed-off-by: Lukas Straub Reviewed-by: Fabiano Rosas Tested-by: Fabiano Rosas --- MAINTAINERS | 1 + tests/qtest/meson.build | 7 +- tests/qtest/migration-test.c | 1 + tests/qtest/migration/colo-tests.c | 199 +++++++++++++++++++++++++++++++++= ++++ tests/qtest/migration/framework.h | 5 + 5 files changed, 212 insertions(+), 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS index 883f0a8f4eb92d0bf0f89fcab4674ccc4aed1cc1..2a8b9b2d051883c1b7adce9c1af= ec80d16a317f8 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3856,6 +3856,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 dfb83650c643d884daad53a66034ab7aa8c45509..624f7744ec9bd81c8823075b966= bc95f7750a667 100644 --- a/tests/qtest/meson.build +++ b/tests/qtest/meson.build @@ -371,6 +371,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'), @@ -382,7 +387,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..0586970e206f01ed6e7aa342932= 1aefc1de7be37 --- /dev/null +++ b/tests/qtest/migration/colo-tests.c @@ -0,0 +1,199 @@ +/* + * 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; + + 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->has_kvm) { + g_test_skip("COLO requires KVM accelerator"); + return; + } + + 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 7 05:52:27 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=1769373684; cv=none; d=zohomail.com; s=zohoarc; b=Swih6laPAAK/bc2orxDQbAPUXF/ykcoUwDCjg7LuPn7pFosLVUpCVBM57CsOlZrR4Q6U5ASKn1snHdQBrx1ofyvSC/o+rMD2rg/QaPVd9HH1oDWfrFIv+zrdvSCoLMgpbOFAMkSfD//+FbClyX0UwDAjAVZZSa3qPozOZwW8q+U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1769373684; 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=AWJLb1DGgkSXoEIH7BTnjP7hX7IzYbbOJ6yS6ExWv5s=; b=R9dO5ZBsFQ+IjPYCgvxnG3gEGWSFHoNEEK/IUUF1UB6i4xY2rdMWdItYh0unv7pTkL3VErSiZblucrkdBvDO1vNg0x6yCNAmJgFmuntXB71BlcIWjQ4MI8NUtoIRGXXcX7gAdZ8avtNM1dO/CKaoxCH+62kw0AEhR0MyQhaAsec= 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 1769373684320120.39726397681409; Sun, 25 Jan 2026 12:41:24 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vk6up-0007AL-NZ; Sun, 25 Jan 2026 15:40:59 -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 1vk6un-00079Q-Tb for qemu-devel@nongnu.org; Sun, 25 Jan 2026 15:40:57 -0500 Received: from mout.web.de ([212.227.17.11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vk6uk-0006E1-3v for qemu-devel@nongnu.org; Sun, 25 Jan 2026 15:40:57 -0500 Received: from [127.0.1.1] ([217.247.97.172]) by smtp.web.de (mrweb106 [213.165.67.124]) with ESMTPSA (Nemesis) id 1Melax-1wIcBS3x2r-00jFZ7; Sun, 25 Jan 2026 21:40:44 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1769373644; x=1769978444; i=lukasstraub2@web.de; bh=AWJLb1DGgkSXoEIH7BTnjP7hX7IzYbbOJ6yS6ExWv5s=; 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=SwO2QnTrEcIdzzXOh9hhyprJ7Rxh4XC+fR3eHxrSqWWC/eZmgM9WJnmVVNivbpKP fzq7iCsRcqTIM/zwz6EOKOUYCdf/YpHdjyXHpLWnp/ukfpf2HRDOWVxAsLBElD8Tm VcdoEfwBrL9Nj3Cq4Fp7t7fwmev6J5wAfVYhFr6duuCHKpv6C9ERFyQIJ/8ZFktfS GPUiGZR7Lu5oRjiILJN5QrI1rzWIIhb1+fYqLNdxhMCUxFwSUboL265mEajHhDCJI HOx1luuXX8wVuBLC+UQ7QYRenwCIoZnLWvjZzlPo4gW6PVxr32eIYFxlh0OCZFnJl tJQ9yUQTmRu3LdXhRA== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Sun, 25 Jan 2026 21:40:12 +0100 Subject: [PATCH v3 07/10] Convert colo main documentation to restructuredText MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260125-colo_unit_test_multifd-v3-7-ae926ccd8eae@web.de> References: <20260125-colo_unit_test_multifd-v3-0-ae926ccd8eae@web.de> In-Reply-To: <20260125-colo_unit_test_multifd-v3-0-ae926ccd8eae@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=41438; i=lukasstraub2@web.de; h=from:subject:message-id; bh=kIoJCZebt9A7/7l/DChCaD5V1JhR6NIl2ZdhG7SPOHA=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpdn/F6D7tx2XeYYU54b04nby6BUqJe/XJp5Fsg 6Eabo+6fOuJAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaXZ/xQAKCRA1qwsonF2y WIlID/90pzfb3dob92ahekjVy4znkRywiKiBpKuhthkF77SMKTQzaGkJ5eGa2oDz3sW+MTWoxqX kT/6uPXvizy6VbPutJDiokxWQichr8Ty4MfAUFsCxrGM46c9oS4uTj92TiEyPySUU8H0l+FriW4 ghwE2jxqeXBDmrSVqGo4ZoDd+GgsMBFa99bwHaAF4WDqakkARyK2KOmJoWBNsGd0EOf//xwiabA 1uh/V52nWOGOsWXhrsJhjq/mbM1bSeGi+7I2btVaNW5XXsW99NyT16Qrjfc2TYxALJTDQOQPFXj u/15PfYZImhIY5hgh/C7b8zkxyOynZLo/bAYS/37yknqJA2TS5ZUgoFG7rA+lnN3xsQWNYr1t+2 IRKOA1B9QF6i4PLZMyGZ3rWU6pnv6UAXpLEW0/L6zElkvh7uhNYVgj1O4ODRAqs3jtY+ZrIDm0g Vqq3yrjz2C231vzLgV30xGRbbWTIaeUqjm6JJfr6r7Bvv84pIkSp6GS1rqJDwe/xLnn1XjcWAG4 75aX2UjDovBQKBRnTnjGI76FXeEodN6uEMoPCvSQuHOHcmhcYw/MkNtGnxamlCS2GdpFvXQwaGj lXzYb1S3oSB99W4BLLdxpx6CEhw8MhiIg1yPJPcob+xeSbrmWLMmNE7uqNfX+d6+h+/n6KE/IVt 0excQlfMuiC/Gdg== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:ErnP5wCQ5Gs0jFrG+kqGICldmZd+2rvewYsnKNPuA8KuRHQKJZP tZaj2wKv7g42S0uraGJA5t+r4Wcjv0UjYRMbsRjv5tPy0lwojcMjzRxyeqKLV0poh6OzYy2 ad7I1EKIhaA2ZyzyWanCPl5Vw19yaBXnblPR/wWz8Oq0ixb5Ys6+LuFLki/gITRy2zink/A Fqu5iwbviAs0uN1q5y65Q== UI-OutboundReport: notjunk:1;M01:P0:IK+DQ7vxbYc=;Yov3iaSH067lc4eHkxKX8TYFmao 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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.17.11; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 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.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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: 1769373686596158500 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 2a8b9b2d051883c1b7adce9c1afec80d16a317f8..7d396183cef0f5e2064e016cf47= 9765b97820b71 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3857,7 +3857,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 7 05:52:27 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=1769373683; cv=none; d=zohomail.com; s=zohoarc; b=MQKkN6x//bkyQPZEwvCmCIBiAxETDKZq3PJrTlk8r5HJGx6KmcBvB4it08bVt93+RCz89buGI/D7EsbHM4GnirnP7n6NY4l9qZjxQKvo8cAWd3vYeCgtyT01XCiCyGfXRYkrCj/iEpVF7UjA/7y8FJ6GiByLj0hLF/gP+YhqzmE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1769373683; 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=G158C2Fa8nrbB9ID8An2zgaBGN+nt7yzulw+cALwfxo=; b=KbFsJFThK3byqlnTIrC5Ptv3zE2GqieIwtKCq70nkSWj/4KI6vOUdvhXpkjLPMQS3fsXZfD1RbCnvbAtRQkA4EUPoyQF9JKwAPoT8gI2LOaEbujtD2nHtbS7WUod3OAa9LSOjpUO7Uoi0a6cJteqd85wW9cZoYEbx/JoIa/G2mI= 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 1769373683045229.3496099720735; Sun, 25 Jan 2026 12:41:23 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vk6uf-0006zZ-PI; Sun, 25 Jan 2026 15:40:49 -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 1vk6ue-0006yH-Gs for qemu-devel@nongnu.org; Sun, 25 Jan 2026 15:40:48 -0500 Received: from mout.web.de ([212.227.17.11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vk6uc-0006Cw-A8 for qemu-devel@nongnu.org; Sun, 25 Jan 2026 15:40:48 -0500 Received: from [127.0.1.1] ([217.247.97.172]) by smtp.web.de (mrweb106 [213.165.67.124]) with ESMTPSA (Nemesis) id 1Mt8gF-1w4F5p1Edd-0120L3; Sun, 25 Jan 2026 21:40:44 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1769373644; x=1769978444; i=lukasstraub2@web.de; bh=G158C2Fa8nrbB9ID8An2zgaBGN+nt7yzulw+cALwfxo=; 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=WeTJEP6hOIBnUlUQYaMT4yiHMJLdtcGH5RQiaC5wp5kdQbsJZwGEiiwUlJVnrZQT P/UvJpRv7IrTxB8VF4v1i858t73ajSAsbq7mTV+ifUZFpfP2lJviHIRc8Ua6mqakz TG9QJ+TmoppRXXeVoY7HQ22Ap82SG+2Of46BpWfN3NRman5GGxmxgAkf8Hp1vkS5v ABFllYnDOhYoJqSHYsAE/+hegSMnCb9wAGpoIyPgGzCc3hIfiReROW74H/vWvtkMC BGK5gAUBwr+AmIf9JJBVKEkvtghzIbV8MkFtQmXMpZX8NnSmJBnvqTJB48iUPZMkX ElE48qcqKdLm/+KI1g== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Sun, 25 Jan 2026 21:40:13 +0100 Subject: [PATCH v3 08/10] qemu-colo.rst: Miscellaneous changes MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260125-colo_unit_test_multifd-v3-8-ae926ccd8eae@web.de> References: <20260125-colo_unit_test_multifd-v3-0-ae926ccd8eae@web.de> In-Reply-To: <20260125-colo_unit_test_multifd-v3-0-ae926ccd8eae@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=3147; i=lukasstraub2@web.de; h=from:subject:message-id; bh=HjRkk3PLsLjQtpMcn7YOFBq4HgSWnQadmFyAlnP7/W8=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpdn/F2KWxRicPyn1OZ/ayiDNSfFEud0IDnFCFV RZ92izIieiJAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaXZ/xQAKCRA1qwsonF2y WIJ9EACLFcsWMglrab18HGHWaWvpPYQZ7lD8A7OJht1A8YO8cF6coydHEHuy258+RkYlRRfjVL2 oXUYkoDrEMj/BCmd+OprogrceYkH/dSu+KNYpiw0KbUndGP9nbdOrOrSmQeRiNlHlYAfIITzfKw Qs4NA6l9XiRKv+W6O8g4Isjhdjt0KXTHy9GCwk8DrbmKK4wOzz92GZwn733NERQ/9CVq6kYJ5vB uLZJVtEEtI5sqaoKtt2kTvNk01+VoT0jfVc34m1nhT72g91qbeLzB3JTyBVNSVFdKP4cpGkdeWh jzEd5RkR6uYdHGu3i0qgFguDiaWwOC/BQrxnHypFA23R+NU0zHiX8kcAKpGz2MZze32yA8Apr2B t2I9oRDlxcZNrhf9N/6MFRWvj6yGf5OGwM8nctlyJVLzfHYBqx+/JOfkPk+4ZZAIQzCxJgY5mmb daT4027cXS8izcsLjHW7M2TQh+BK57XtmoPje1ynoE293JHBDy2Ntf4B4o67y68cz9EQj0VT6nr m8nqvpJzFAaACpsdi4/ZX4cTbE6kezyCZ5DLZUCpJd+E+3uDr1L3SwrUwXONg7decN5xh4bZHsL 8HNIRSq0AIOli6J4WsWl6kEwZjM7I7RhWHg4GSWQMUGkMAjhCbrF6pmpk7L6HnBsSQ1Ve43kLwo mltz7g8u0YdvzhA== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:wTpczBnRaWeXWYEuibW4jNYqZJk1/HOc5J5S7l45RV6PlSldSwx 0hgn78IaawDvan7y0F2Zl78sBeSqhLFo03GDBBEehw4pKsvOysav7wc2c4ZyOP5D/sfZh7p zKZUsbiynd97YSh6fAa9t5fzf+t484Rc4DfjB6o6Dr7InNwlbMpmzVdtbOZzqfnbsLY11fw giJGNIcPjeWmO7bXZaFtw== UI-OutboundReport: notjunk:1;M01:P0:BAh4oNcfV1k=;+9UTV5J0dBqa+4ee4dIcykDRGqB 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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.17.11; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 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.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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: 1769373690385158500 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 7 05:52:27 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=1769373723; cv=none; d=zohomail.com; s=zohoarc; b=Hbcre16aZq4fslgrvU8oQX2wDJug4q31CwjAZ769Cy0uT3M6Oxu6/Trj7yB4zdNhdUtQBNaM2symtIPkn1M7G7Q7FqCTOBT+fAxPGIMfNqpbuyrvPcXtlgMKTANL/hraOv5dvAajZ6krV+21fSIdOjKzE6WFMFjzzWXsqPGWukU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1769373723; 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=aOvpBKvuQu7w4pl2aOeHOdeK2Xv4HGosQpxJEOLDGSU=; b=cXiR2QQtpJbPdOnT+PJxyWLcuNB8XNGwVVJBnDsDG14gZHhpCDxbVEudg35FtaMluizqy3H3ifT2ucv2jkrYP0piEF5DZP6SHDJgE7qdXgQwn37+h6f75KGtxhlZO+uuW9T5yG+3DFk2ZkTPeOp/i1kBuKzxmFAtJMRCE+UQOn0= 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 1769373723190250.55787764653098; Sun, 25 Jan 2026 12:42:03 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vk6ue-0006yz-VB; Sun, 25 Jan 2026 15:40:48 -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 1vk6ud-0006y5-U5 for qemu-devel@nongnu.org; Sun, 25 Jan 2026 15:40:47 -0500 Received: from mout.web.de ([212.227.17.12]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vk6uc-0006Cv-9x for qemu-devel@nongnu.org; Sun, 25 Jan 2026 15:40:47 -0500 Received: from [127.0.1.1] ([217.247.97.172]) by smtp.web.de (mrweb106 [213.165.67.124]) with ESMTPSA (Nemesis) id 1MYu1C-1vFByG2anI-00MP7w; Sun, 25 Jan 2026 21:40:44 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1769373644; x=1769978444; i=lukasstraub2@web.de; bh=aOvpBKvuQu7w4pl2aOeHOdeK2Xv4HGosQpxJEOLDGSU=; 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=KWH6rgvJr2cYFeifhWiOHM6DYi5SycG87Cfs8bWPTSS3OPe39Y9aAQJYHDA3zsHg b758WsivezQGZflIrASSNW5vsnJliaOsSiNxCOmW2fH/N4Rpw8XJZukv70FrkjxHc iWdLojuFhhnwJAu8fFgGFm3EhE6HmLxX4G6JGmo14gXUs4pA9qZrBqodUABSySuyy GN/T/RBSqH3B9P13WFhvzadgMwk5o71B10Vwi6NPkDmcbH1JD2KwUegovkNEYVau/ 0ijxVCuM+0SU2fdV6/hFemrFg3HgzM0h9yIh3RVy5Rn+4RyuI9/tfz2iOqV4AEeYk kMt2O0or+BCg1EWtiQ== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Sun, 25 Jan 2026 21:40:14 +0100 Subject: [PATCH v3 09/10] qemu-colo.rst: Add my copyright MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260125-colo_unit_test_multifd-v3-9-ae926ccd8eae@web.de> References: <20260125-colo_unit_test_multifd-v3-0-ae926ccd8eae@web.de> In-Reply-To: <20260125-colo_unit_test_multifd-v3-0-ae926ccd8eae@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=861; i=lukasstraub2@web.de; h=from:subject:message-id; bh=T71DG3fEVTcTLwOHOcb6Prrz95/6+WhpFwEqvfzYkdU=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpdn/GRDTFfO3tMp2NeWaKhe+Hjb5hcMeOslQ9N NJGOGvk86+JAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaXZ/xgAKCRA1qwsonF2y WK6iEACM3rwzqUVmcxaD9t//vttjuK05pA6uSkIj5aUAxj+pac8SA4M91QYeqDeRs/iIhgqZUWU bDXjNNHLLdufZ8MSXvcv/jK1rMHPXjFc6IbrZnoD6J6/crpjQBlEd4pcPj+l4TrByIxDCq3QzOL BVhex2w1u7afvT6VD/yS49KmYwKVH33UvMYgRjnMZ1Fl+l0lemGlmhenZtLOTdcQmshOF3cEN2h TCg+gFu/EAADV2clZg0EKdLFr+GlhOoU3U6dbTf4ONBJRosBwBVhY53AvfUTMw5zX1HVq+LacYU g2WoVGLGM1GUkWmhN/IrZdhdhV8fD6mXjGZiwkt2c7RPll2MiWNnM+9XXrpEgn3XPkyCa1XTskd /NUoxNxtufexq0t3yXRKWIc/cIBxeE2SMaDBa8hMmkjKag/LQzuiwOdoAPJc7SleKgnpNdUe5fX 21ERUpcezGX3f3bqiE3QDM6xPzfvR7OIM2ve1JBV+LkVN/yk/4grW/yOSDb1xYKduSv+XtaPGtg ECbXN45IbePta88lwHE2kAVUlJ+fl1+7sTQ9EVh0y9N+P6YtAnEvqE5SfZYsAgJjOkZCYT4NuPY CTMq+W7o6CXfb9a4BVSTkA8d8wdf9ZdtrVV4IzTQvHu3fQvAmvmQvU+jBzsY/kfCEcuTGeS2TRt tpMLRoOuB4tggIQ== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:6vVKJ63Fp9ZXVagD4J4ToHYwOgmDit91qBL5h2w1AzxfRI8Vdxa jHAQRPJPHZCmTo16TbrrLxpcpij8qicAoFGGAfnmvuCDIRUesL4J3tM6OEEQ+PDy2RZaTkh I2DlOQj+JCDWqrVnCURNGnGtg2xP+iHeTapePsXN/3eYpwOOqtF6+NHMopw0UpVNTKLxOl1 FSm3+hUlUPYCQxD2eg/BQ== UI-OutboundReport: notjunk:1;M01:P0:u4wlhnTfur0=;9Tgw5NBwHC3sgM81fTSMkNg2hub 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 UfQM+7WIxwFnZa62gBa8ZBb24CBVWBm0WQTeoH 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.17.12; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 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.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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: 1769373724510158500 I have so far contributed 61 commits to the colo project, waranting the addition of my copyright to this file. Signed-off-by: Lukas Straub Reviewed-by: Zhang Chen --- 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 7 05:52:27 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=1769373707; cv=none; d=zohomail.com; s=zohoarc; b=B/cXf8Q8blzTaeazg3qBOJB3isQsTYV6DzTRW+sQE61yluGW5PKvdaRHsl9f3pwI6j0kzloPG0FLLf5xp5qCnIMpXkqrdwI9KgA5L0tqkFFfMBPZzFaefQ1RVMH2HKA9a+BANXl5lBsV5ECO0UPXSpbKc5+cahRPJeO6JaHLBIA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1769373707; 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=V2wl7+xKW2VUs5IlZ39gvgGSN6Swz3GT8YAOMgvY2Y0=; b=F778Yk+lYk6oiLk7F+3GXv6BVTDb+Xkgsijk35YqnBe+gLlAF2Se4r3q1FMw7iDlpBXOJwThmwBcWFU57REWlQfPN9MKmNhyf5wUrzoZH0aegdaijV/0gMy4WvIUUVKS+fXgOn1aA9sKux2U1T+IMT2wj8N1Gir2P3PZKEoTScU= 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 176937370709748.977011732671485; Sun, 25 Jan 2026 12:41:47 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vk6ug-0006zf-7Y; Sun, 25 Jan 2026 15:40:50 -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 1vk6ue-0006yW-Oy for qemu-devel@nongnu.org; Sun, 25 Jan 2026 15:40:48 -0500 Received: from mout.web.de ([212.227.17.12]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vk6uc-0006Cy-Af for qemu-devel@nongnu.org; Sun, 25 Jan 2026 15:40:48 -0500 Received: from [127.0.1.1] ([217.247.97.172]) by smtp.web.de (mrweb106 [213.165.67.124]) with ESMTPSA (Nemesis) id 1MHVal-1vX8MX3w9p-004Sll; Sun, 25 Jan 2026 21:40:45 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1769373645; x=1769978445; i=lukasstraub2@web.de; bh=V2wl7+xKW2VUs5IlZ39gvgGSN6Swz3GT8YAOMgvY2Y0=; 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=mMlEMBuWRgpLc1jJXUVyaRZ+pTE+TW1HGdiztYZ8jh55GNdaD+1D51GK6ubHTsdC 82B4Rw3PdVSVHtxFbdy3GyjkAp0Iqaak/u/aBMltrpJSjgkst/gRlaaYkoLZzUrAG F+CP+iRzJejajLSubNWaujOBMFZJz8p1DdLmPF+/CLW7RgZtY9bUNfSM+dxsGV1Qj bSCKj/XaWC45pVqgi2XJI+swtsMGMxUUrr6+Tp3Cj2Ccvs98CmFmd2H2gK8zEhYS0 1gr68Clfp1HL7w3YWHoyh/MVGj5wQcqP95hCNdBj2jZZ6rDHc0p+h/d6WLFY1R/aV SzrBLKwrLZBMhjOgag== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 From: Lukas Straub Date: Sun, 25 Jan 2026 21:40:15 +0100 Subject: [PATCH v3 10/10] 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: <20260125-colo_unit_test_multifd-v3-10-ae926ccd8eae@web.de> References: <20260125-colo_unit_test_multifd-v3-0-ae926ccd8eae@web.de> In-Reply-To: <20260125-colo_unit_test_multifd-v3-0-ae926ccd8eae@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=4343; i=lukasstraub2@web.de; h=from:subject:message-id; bh=Vq0uip/eSPkRlYDXg+iQ5EdKb/P2Q7zchodJcpyMdqs=; b=owEBbQKS/ZANAwAKATWrCyicXbJYAcsmYgBpdn/Grx+ZbqNGH100D4woVAlYxTtwnH6K5bypk +8f55hNPDSJAjMEAAEKAB0WIQSD+rFYoNm4+3Jij6Q1qwsonF2yWAUCaXZ/xgAKCRA1qwsonF2y WEY+D/0SDOGyX+ugjqU+Usw69SBWzTz3XdgmKtSEXsn6P3nVQiyZPQDXWi1UOINLO1qAeYmUrYo 2QWMVJ9r7NrZB0OvjFYh05QDg5JOSf5GmIdNqQZzpO+zBImzZg54MwonWTajhq8hKMlkSiRHkED AcIL6XFHetVSonNvCVUMvZaNU2t3c/c0iTffxKbEkZiNOYmNMNqu3t9N2Tm8RWp4FI+MrcRzWZx 1haF2l0QHpPWGSGqC7bANd//acJSAostArSHdwrgsgQyHMGjaxUXF+vpAzUnciAYp7EY3S+SDy6 +bZNC6upDGAfDl/nNUJwe04PbL3vuXrDsQ2fuy1PrcL36gjPPEaUsc1iQftffxXb6OnxVydd73k Iedz/jc9M8Ac64gKOK5eQwOIvJy8ParEx4elEzrwhuHlTMVdoAgYwhq9Obskuev08daAYEDQgLq aDSJbWPEIiMxemcao3K1c9SfM2VLcA11n9ANY3ROcc+LSt6FJPQksejOhuJTUaA5orrfVLLiDR0 GBNqqaWuxZJKgxOnNx/oiD7yrXhsjqpucDeRAGuuwb1natbKEIAygVFvCBI3scKLHsu/vpGkwvN U0lF5ZSniFKRSlIdkh2C4FGjJUb4yo0qdFdBsUsE1pkFkMMOgST4kFqQPSx7lUFw0xIbuCeH76E AnCTD9rJLqnnroQ== X-Developer-Key: i=lukasstraub2@web.de; a=openpgp; fpr=83FAB158A0D9B8FB72628FA435AB0B289C5DB258 X-Provags-ID: V03:K1:+Otzk+ddWmecq07m4P/YnuJCryHvhxSyKStnhuNz2DoK4n5IY5u zZAGwR/BP4dmp1sBibazRga3C0uoC8R6/fWjcqQXVDst2+75uBbrHg5iV+MFDZwLi6WXDtO j0VFZy1IVngK7FQ8K1J9g7qj7PWsfYYzUsvYT1J+f8SbG2FJ3Yeo7xjNMkikrmKqL3qAJwV wSzKtfMC1tFKuqsiK5/3g== UI-OutboundReport: notjunk:1;M01:P0:WaqLuQ9VoOU=;jtVijc6FU2N6ap0wUoSA6Y6oe9s +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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.17.12; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 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.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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: 1769373709470154100 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'. 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