From nobody Mon Feb 9 03:58:38 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=none dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1681984166; cv=none; d=zohomail.com; s=zohoarc; b=VCBCTVcBFWSeFGeisLqKIn/pWiEMH6WGsiXlSG+GtYgQjUcm1W+fmn9pIYnkptTml97n5opnb0TFy5eUQgVih0TaCccSvSFCz1sOwLujhja3X6xKrLT9rMTXtkPCaPRhCiAuzZTXh/Mq6jMlPXu3mtupou2m+J4Rgyhvkz/za5o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1681984166; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Jf6aHjZR6nCQkmCgrU8oHlG3K5sTsOu4L2TPx8qVq8w=; b=cmQA67xbLV8eb+gSG9aaPZiJY0ZG3mIH68MdrJf9kI9TygWjxIZ8LH0dlFoeSD2aEpHKJCQ98QOb7gCWZSMLQhzjP02iiuvL4jYM27nUj6EN6RCcq9Ns/ny3OJROvpghXj1jYSyH/yDB/50Qi1arallaZq5rPpFUlghzr+0QDMM= 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=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1681984166047800.8120071526532; Thu, 20 Apr 2023 02:49:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ppQtr-0007DA-PP; Thu, 20 Apr 2023 05:48:23 -0400 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 1ppQtj-0006oR-Vw for qemu-devel@nongnu.org; Thu, 20 Apr 2023 05:48:18 -0400 Received: from mout.web.de ([212.227.15.14]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ppQtY-0007zm-7S for qemu-devel@nongnu.org; Thu, 20 Apr 2023 05:48:15 -0400 Received: from gecko.fritz.box ([82.207.254.123]) by smtp.web.de (mrweb005 [213.165.67.108]) with ESMTPSA (Nemesis) id 1N7xeZ-1qKlMk3AzT-014zvl; Thu, 20 Apr 2023 11:47:57 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=s29768273; t=1681984077; i=lukasstraub2@web.de; bh=wrG1Hvb8UOtdOBIp/5UhtsTLxnaSXeUp/H7vp3+H4GU=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=vWOvzvKNDlOIahHUqC/YqPOvYFA1kNdgjlA6w2+QMSHY0iIwvUYd8kEFf0El1Lb7G EX9qXTH5t9GI7Ubaez5qKNTzNbmCdINRZXwHhbcGjGQS2zZIuaJwq4BPVzi/f21mzZ pdTdIgucdlM6gNppyjw0idz7qB7XePt4T6gFYPFuAyQ8NzwJCpAJk4FrnhZnTc6dhc bRHXTVEFLS6ywS/9FUSitCVJrDoW7/Sh/XeSHBmyPaGFK8DJfITDa5vhYUeq2eHIbI XNyTyd9D+H65ryUtUekkicoIauc/9bWKa9wV4OUZrTgzknYezJz2E4Bzx89TTVtoQJ wFsa84TQ1agoQ== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 Date: Thu, 20 Apr 2023 11:47:56 +0200 From: Lukas Straub To: qemu-devel Cc: Juan Quintela , Peter Xu , Thomas Huth , Laurent Vivier , Paolo Bonzini Subject: [PATCH v2 02/13] ram.c: Let the compress threads return a CompressResult enum Message-ID: <41cb2e3c0065b2c99948703a5a4f4bfe600ee64b.1681983401.git.lukasstraub2@web.de> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/9Z/1Tf9XhI..LO8Dbi1_WpC"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Provags-ID: V03:K1:0jncPqQGgxGYRqStLYFcGBCxGTHdQ/mCg/FR9NK2xxST215GGd9 Jshm/o6Px7sbgzX+HQSBsOBeCxkksCJRNrouQuyAdaMdBuUkKquJN2p5RB9DMooaB+Xy3Di VP4eOXFdL0i6dULo6KFjDzdvO3w+GVORIM+cGAQQlQTuk1wjasi0EG/JA2yR6D5h+ZPrh6e FNWOtoy1BDa+/4D/2NORA== UI-OutboundReport: notjunk:1;M01:P0:YudwZjfx/+o=;2lXwudv7jaQ8XICLhRdzlc3XSOT slAviGjfy67AlRrvHJ/xQijGxphMG7/JFEpCwmFxyDaE11VsHz5zXNsjKwfwMG39xPcTvTw5V 2fSh/6caUJgT3kr4DpmmyqY1MheF+Md2g1YtCPj4/cQrGPGYsjI8DrYD9SprJaEtg0LVBBE+k TkrIKVXw0yE5iio300o/soSS9kZr3Mt+nTieWaBPewVkCu53tdEUl8n1Q8qn0788lhAhqJZyH grwMNynpRa2jxM74acUnD0yBUDt4Hbj9HsNWR9bhcmiBdyM+wriyPurs5xFzNR7I1mSuZpExP jze17ZyFMkL1+8Q/N0qaWFczowIaMOqZNbRfNH712EyH5+jTH2ipWs07/d4ecFeHe5ZUkyxWA Gqp11Zo3Q7jqs4w5p5+p6RwRL0A+MVoqUVzpI1s5x684Bbqz1+N8bWsQmAhHvoyyCu2Zsz/yi Vs2gEknXsOuGqIJQH8e92lirbIHTtBYBd8KtfbKf1gfo3BuBtTcFhDXbP7DQeTOKrliN09gqL KuLw+5gc74HNpIUqvY7kI+zy9NGaKkEhYuOToxIf4VVQW2f+qR3Rah1BnYpSNWSgkiQFV6Vlx vF+EYXXHQUIFRDBt+B9F0KAPdkWrPEZbKdLWIzZ/IjJgmUzDLXwfPwvd9D24gUNDKh0473/ER CIDIOOYjoPeticcE4fqta2fF5qVhkzgIVk+optgoS/JtvjmtnHlsBhYNa9lLKweAyF/gvayT5 mr1jzLLRTF7Ez06NGlVv1IL80m3mZWkDpRNP61Exj6jJ0byjdysdjAOdSyEEbDN9NBFSkOY/d mu3c8qBNaM3WB/vn+C1DNbC9hbU/7SVxv0DtD3r8qM0leIcCdU+aIogmylVX9BaVa+/SboQfb sDzS/IPnoNXxaXcUqkgZoPKdwzHzHX8j6afoHuLsy4e0qMWXdiV3DIQk9Avy4Xa1f+TrhMk32 FFwvnvWEQG1SBffSHM6jjOGfsrE= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.14; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 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: 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-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: pass (identity lukasstraub2@web.de) X-ZM-MESSAGEID: 1681984167433100012 --Sig_/9Z/1Tf9XhI..LO8Dbi1_WpC Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This will be used in the next commits to move save_page_header() out of compress code. Signed-off-by: Lukas Straub Reviewed-by: Juan Quintela --- migration/ram.c | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/migration/ram.c b/migration/ram.c index 79d881f735..ade6638a96 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -493,10 +493,17 @@ MigrationOps *migration_ops; CompressionStats compression_counters; +enum CompressResult { + RES_NONE =3D 0, + RES_ZEROPAGE =3D 1, + RES_COMPRESS =3D 2 +}; +typedef enum CompressResult CompressResult; + struct CompressParam { bool done; bool quit; - bool zero_page; + CompressResult result; QEMUFile *file; QemuMutex mutex; QemuCond cond; @@ -538,8 +545,9 @@ static QemuCond decomp_done_cond; static int ram_save_host_page_urgent(PageSearchStatus *pss); -static bool do_compress_ram_page(QEMUFile *f, z_stream *stream, RAMBlock *= block, - ram_addr_t offset, uint8_t *source_buf); +static CompressResult do_compress_ram_page(QEMUFile *f, z_stream *stream, + RAMBlock *block, ram_addr_t off= set, + uint8_t *source_buf); /* NOTE: page is the PFN not real ram_addr_t. */ static void pss_init(PageSearchStatus *pss, RAMBlock *rb, ram_addr_t page) @@ -564,7 +572,7 @@ static void *do_data_compress(void *opaque) CompressParam *param =3D opaque; RAMBlock *block; ram_addr_t offset; - bool zero_page; + CompressResult result; qemu_mutex_lock(¶m->mutex); while (!param->quit) { @@ -574,12 +582,12 @@ static void *do_data_compress(void *opaque) param->block =3D NULL; qemu_mutex_unlock(¶m->mutex); - zero_page =3D do_compress_ram_page(param->file, ¶m->stream, - block, offset, param->originb= uf); + result =3D do_compress_ram_page(param->file, ¶m->stream, + block, offset, param->originbuf); qemu_mutex_lock(&comp_done_lock); param->done =3D true; - param->zero_page =3D zero_page; + param->result =3D result; qemu_cond_signal(&comp_done_cond); qemu_mutex_unlock(&comp_done_lock); @@ -1463,8 +1471,9 @@ static int ram_save_multifd_page(QEMUFile *file, RAMB= lock *block, return 1; } -static bool do_compress_ram_page(QEMUFile *f, z_stream *stream, RAMBlock *= block, - ram_addr_t offset, uint8_t *source_buf) +static CompressResult do_compress_ram_page(QEMUFile *f, z_stream *stream, + RAMBlock *block, ram_addr_t off= set, + uint8_t *source_buf) { RAMState *rs =3D ram_state; PageSearchStatus *pss =3D &rs->pss[RAM_CHANNEL_PRECOPY]; @@ -1472,7 +1481,7 @@ static bool do_compress_ram_page(QEMUFile *f, z_strea= m *stream, RAMBlock *block, int ret; if (save_zero_page_to_file(pss, f, block, offset)) { - return true; + return RES_ZEROPAGE; } save_page_header(pss, f, block, offset | RAM_SAVE_FLAG_COMPRESS_PAGE); @@ -1487,8 +1496,9 @@ static bool do_compress_ram_page(QEMUFile *f, z_strea= m *stream, RAMBlock *block, if (ret < 0) { qemu_file_set_error(migrate_get_current()->to_dst_file, ret); error_report("compressed data failed!"); + return RES_NONE; } - return false; + return RES_COMPRESS; } static void @@ -1496,7 +1506,7 @@ update_compress_thread_counts(const CompressParam *pa= ram, int bytes_xmit) { ram_transferred_add(bytes_xmit); - if (param->zero_page) { + if (param->result =3D=3D RES_ZEROPAGE) { stat64_add(&ram_atomic_counters.duplicate, 1); return; } -- 2.40.0 --Sig_/9Z/1Tf9XhI..LO8Dbi1_WpC Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAmRBCkwACgkQNasLKJxd sljXdw//b/hH1wupaYc/vOxhGJU612vq3jPNbBtLiANCXGK0IFxgWpA1aXrzSLnD 9pfGZsN1RxS6r/tQEWYehJinsnG1/QbPjNabKFjVVGjlVICQYqcwMrvWEzNRM/Q0 qvS+BHOh3/u1PhrlkqCG9Qa9/M2oo2vWa/cX3UJvNcazZCfrDrQbSAg1cPHMyJQx uqVEIivZ69RjxzVXJ9grF3Fmhx25LdAA5krVk5+1X2p1i+CH02Frz9gmnx5ocO/Z 5G1Wj2NYNoatEwF3qmpTTNTzsDFhayj68jFlrmHEisKJ9lH5xhZ72RE2DL0ORCzy C3QgU88kEVfAw4aX9RrLXDcHsPqEzLDS4qE6sDdfTt9Fq3RaGOC6sXPXX2LkR4aJ lFApO0qmNFbwvk942o84c19sQrQLdsB8Y/I7N2OP9PiDv2yRa/B5sApJlx3vOqk+ XiM+sXI62fKbvQLtI2zi+Xc3YjdlLYdF+zFujAJhqtObaC46r92xUaOxNqKeBXsu DgkxaL/eqFdZu8AOjjGZh05aQs1FXvITMudtx2ndiG5QjUvy+B60Fux1HjqTkZ5T wcZvLR0p9x4vvsp7eqdjUh2uWGYRz40SqKpfZQLDYowevMB6UxcVqNxSqJkCrDGh hGq8glCu8mmTqOuYxmBtwxV5nwitZDRfnTsspRPwqIZoYSBRFc4= =9Ain -----END PGP SIGNATURE----- --Sig_/9Z/1Tf9XhI..LO8Dbi1_WpC--