From nobody Fri Nov 14 18:10:27 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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 ARC-Seal: i=1; a=rsa-sha256; t=1589541340; cv=none; d=zohomail.com; s=zohoarc; b=V4wm9Ur0PnQk5jJOGMqdIDAvmP68up3xHn/YqLDhVrvAuE7pyFdvNSj001qcHMTniMqe9heirAKtG1MH9o4NRm96weeHYOf6JzpUQG7XQ3NLDuIG8T49lrW7DcZlheW7hMM/2TnhvVE3TEre6dwhZye5wJ7Yux9Ja3oK5EGSjyU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589541340; 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=xAMoi5qkd9u66V6Sr1HGg3q0Gap8481QRFn/ie3s36Q=; b=iHz8J8eSI+2X9fDd3OrThuOavZXmVKsf+kLnF3jtu5nei642aGLJ2WHpxlTpLjGmcEHFSZKRPjgRNU2rtR1JHBU21B8xtvsEVPho/YHbeeR7drp3I0fpgqfHp8UDJ36Pu6DefsNy29caRLHpxOXweotWHdN6elkd3Wr0m7LLv9Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1589541340793415.5593946033073; Fri, 15 May 2020 04:15:40 -0700 (PDT) Received: from localhost ([::1]:47846 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jZYJX-0004pD-A9 for importer@patchew.org; Fri, 15 May 2020 07:15:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55842) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jZYFx-0001k0-Ug for qemu-devel@nongnu.org; Fri, 15 May 2020 07:11:57 -0400 Received: from mout.web.de ([212.227.17.12]:45535) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jZYFw-0008EZ-TU for qemu-devel@nongnu.org; Fri, 15 May 2020 07:11:57 -0400 Received: from luklap ([94.134.180.164]) by smtp.web.de (mrweb105 [213.165.67.124]) with ESMTPSA (Nemesis) id 1M59jC-1jYSK73Nqe-001DJe; Fri, 15 May 2020 13:11:39 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1589541100; bh=V8Ro8PCn+awct1ifQ7K17SdfEaWVDnw4fl1+hJCAEU0=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=brbWciR+gwN+EtGsRqLvfv+KYpyupVDNlJAn5fWby/RuZwefC1ciUiZ1YfF26mf93 NPl72WGnnOgJS+4pVGMyksdSw5/q5fLHjP5gc1WZnWu/15AYNTcEjtiC+mABREG4kt 2lpWyiLelLJSzfozjQI8xAElmtq024voOMKpvy/0= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Fri, 15 May 2020 13:11:38 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v5 1/6] net/colo-compare.c: Create event_bh with the right AioContext Message-ID: In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/0VZdIhnMt.95UK.BCFwRk63"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:UaxdX+O290qLgsa8UWIDFt/lMcbTzHlpvbL0edd/IFhzpw4v/1d SORb9A9UL/KTQ6rxE6Go7XXpKFjtk1aOm/oxsQN/jP89JkqzETx9/OwOaq7WJwlxhQ8IEQZ Lmh59fHCpzjijH/dUet0pKhVyOB7JVduIA5/A/NrbdlyGy8zhwnusKh0AQ7NP7+VZ+jKmpt dUxQ8Ks1l/YnEuTyHtfVg== X-UI-Out-Filterresults: notjunk:1;V03:K0:TAbGL+UbG44=:OtnPRtzapNhuLA15sfnaxC /O3tv15JhxB8Rb5pVnthvS22YQH8fmzkNGSwTphdq2TCRn257NwMkhdpSDrm8FQP27mGrj3sL PV02w0novpyyyb9qLixgmYQYemZHf/W0GavCLIc1IZKb/oC0uoYX3MB4KeyJYkrWn5zjtDDKW 32++zTAPHBaaqDPXFYqZTMrK2f2MvpaV89wEPa4DAl2IF9nnbqteIZgf1p0JKIQH7KLRyFpSh 4zPuAVrHVw6WcyHyFXLyiP/vGsqFNSRGSjU3aA7/RjGv7XwzXzB7U/49UzCrnPCiOJjlTcFDx F1FQgTZHzwJWq6u/RZvc07V+pLEA4lR8bGSShUu6qoE9HMh/h1mBNJMsHE2y0S8W/elgrW6Rq 4vmgF4qx7Wafh2rCdybT7c3FCQ7Gpg5VV/DkK2vx8R4/9uZ8njGqVcu+JPCuageJTvEE5nQnG T2+qjVumFT20RywgsJAt9QzsY2ZE6A6taB/ELc/CV8scRBcSqDKIzdfVEQxBRxiWczCjXHmgc vm/mxScoqF0WLsNcsic2e289EfpAYCEcTzLu+fUvfstBo9bTKZU6e1ezzh8bCEindQbo+nAps O1qrU5KLJXPaA3MTM7du3/YAIHqJvKT1yJhdtDlTKEUDn2uHNEeb52h9Mcyykyo8NXjHQXgfn mzJd5mWjIY540ycJlHt43op4KgiXYhRhrKUcRlbILAjk6JJzAoKdG/EyPW2/VIS/JRfai/fS6 0hh1wWun0oK1w7KOZzNA4oaC4z8qw7/1ctEwxdDNMqY1wu2TSvC/O/mTkGAN4kakaKFphX8Bh qjZscL+TXC+pxAq/3j5CWBPF2P2kybFghu4VC0z9uJuUJ9puXcCFlmkXGdd4UkTg1joD2sPnI BD5n8fS+u/XI5zhjxo4+WnRDKKL23EbWb3Eo9PAHQujBJs0wTK41RideqYFPuTLu6jY6jeCzn 6GEi60ALhcIh62pO7Eol5vQQCnyIqLCqa8aS8Ciqupxpk9EKn/4+AR0oa+gEKlx3iguaHp60o ZUvcnEQP1jVsBTY/MoI921S7IInBvltqrX/3hSmWGhuhS9Zqi0z5tvm1Vz8uo4Lf0FOzAESdz HD5Tu9iUckEvpmu3IPPlEEq5LmuuX60GJ8OKxNaBmVNUMndaXlYTpya08oYh6e898oW33YNct R3RAu76TXYawB6FHbIRreUk9T5BLlqNtgsqyRZRvIoMzFyI7GVLr564w0VD9oJnd7nINhQoHn f42cL/CLZyyttMVIf 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-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/15 07:11:55 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Zhang Chen , Jason Wang , Paolo Bonzini , Li Zhijian , =?UTF-8?B?TWFyYy1BbmRyw6k=?= Lureau Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: fail (Header signature does not verify) --Sig_/0VZdIhnMt.95UK.BCFwRk63 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" qemu_bh_new will set the bh to be executed in the main loop. This causes crashes as colo_compare_handle_event assumes that it has exclusive access the queues, which are also concurrently accessed in the iothread. Create the bh with the AioContext of the iothread to fulfill these assumptions and fix the crashes. This is safe, because the bh already takes the appropriate locks. Signed-off-by: Lukas Straub Reviewed-by: Zhang Chen Reviewed-by: Derek Su Tested-by: Derek Su --- net/colo-compare.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/colo-compare.c b/net/colo-compare.c index 10c0239f9d..1de4220fe2 100644 --- a/net/colo-compare.c +++ b/net/colo-compare.c @@ -890,6 +890,7 @@ static void colo_compare_handle_event(void *opaque) =20 static void colo_compare_iothread(CompareState *s) { + AioContext *ctx =3D iothread_get_aio_context(s->iothread); object_ref(OBJECT(s->iothread)); s->worker_context =3D iothread_get_g_main_context(s->iothread); =20 @@ -906,7 +907,7 @@ static void colo_compare_iothread(CompareState *s) } =20 colo_compare_timer_init(s); - s->event_bh =3D qemu_bh_new(colo_compare_handle_event, s); + s->event_bh =3D aio_bh_new(ctx, colo_compare_handle_event, s); } =20 static char *compare_get_pri_indev(Object *obj, Error **errp) --=20 2.20.1 --Sig_/0VZdIhnMt.95UK.BCFwRk63 Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAl6+eOoACgkQNasLKJxd slgFKw/+LM70aV3IsdsopQgCnEbEVoeE0BwDRLBOwCs6u2JiQLo81KDQcc6cxWgS LSQD3SSDis9YpSwgAdtpmMykFuuDgfXfonNbHdX2G3F4NScnaozORCmHBj8eoc9N 0xgNgwm306hx3AUtv8mdupyDqcNLWng1mO3oNiUs3042xyCNpzXPIFjRkmWJmE2S WfalMeLGl124Vi//cifPpyJwbqq3X5SUoJXLt68ICh8VAvDLQG1xeS4vhIGQfTOW /H+UwLXci7bY675hZXJbiowZyvjxXX8d0VRra+0P8z5QlbV1QtxbOQ6yDTVo0cdv BMYd8F2Rdokqzqc4CjZJr0Zu0LT3NmEZ4qaZost2y0g2DfFYzq/eyGGgS+7I1P7R PAsE8LkRD39xx7OaWgvDTItK7ZStquvhOJ2KMaAST2VVfp9rlylFrJgUJdGs5YeI IptpgwiNilk78WCLx/fJkBizNbCKc39cMPHShLNo0JricbnPKeiUj2oS900334Qa oB6BRnv00ar1PuUpmkno5fT7FY0vOQt0RoNwMUNC1ofRmeEYNWrfPFR0gKeI76hF AhXMaWiwHBCrkUqqaVZbeNoLKEABWOUBbXQZxkhrG4KZuoSBNC1N9Z6mfFBCbCnt Lqxqp6JhIZprLjVusGaZrJ0x3N0waPECKGqqhb+WwxA0cusXZE8= =OwRi -----END PGP SIGNATURE----- --Sig_/0VZdIhnMt.95UK.BCFwRk63-- From nobody Fri Nov 14 18:10:27 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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 ARC-Seal: i=1; a=rsa-sha256; t=1589541338; cv=none; d=zohomail.com; s=zohoarc; b=TmYnMxsAErzHcXsEQ2TwLnw0VT6Kwmp+G6yXO2UyS9ow5eh/ihervoIHx03NBrk8W94Ur+C9bFh4VEIkxjTAqJXKdPoBQHNA9UimzMPkpvmIBw1dacjd9nrBO3J7HmHiBPLergb3iifyPlr+5xJQ9dChuvG2autYRpzIOmIWMio= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589541338; 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=DdMixoKtr83VZdMkc073UDX3g/OkLCdDULZWz0Pxvxw=; b=WalP0Uq0suS7g5QuFhVDLF892YGiNPK7BTCEksYFOB47LI49N1yeAv7lEsgGcclhw9UM8jfEW4v910Sh0DxqF1mtVLK0K/SmLW1GL1xbs3aGAdaKZOoJB7sy1UQsCONMMA7QA53ouIOpHXy8M/yNjRzRczbzG45HbtqqxJ9C+0M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1589541338651385.6713176537256; Fri, 15 May 2020 04:15:38 -0700 (PDT) Received: from localhost ([::1]:47800 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jZYJV-0004o0-8Y for importer@patchew.org; Fri, 15 May 2020 07:15:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55838) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jZYFx-0001jn-Lv for qemu-devel@nongnu.org; Fri, 15 May 2020 07:11:57 -0400 Received: from mout.web.de ([212.227.15.3]:51545) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jZYFw-0008ES-2F for qemu-devel@nongnu.org; Fri, 15 May 2020 07:11:57 -0400 Received: from luklap ([94.134.180.164]) by smtp.web.de (mrweb004 [213.165.67.108]) with ESMTPSA (Nemesis) id 0LqoAk-1ivWft3RkQ-00eJUM; Fri, 15 May 2020 13:11:43 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1589541104; bh=pWY/L7DWs+7R8NUfCp6QCm9+JZ2p1vUInbQcNyL3ZCA=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=irTauzjl8FVe6d7AuecgybIhvkC1i8tY78hm0lvrZipusXvW31Q2ZApWTHNEq8B// nBNMQcoHxCUXiGAsWm36mS1VkcwhzqvzfdCuXXYOj3YY+Ig+sZrjg1oIyaIMDzNNC3 XWk706uekyjZuJBJSvMnYjDnvvtVwtL2UTUAWlDA= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Fri, 15 May 2020 13:11:41 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v5 2/6] chardev/char.c: Use qemu_co_sleep_ns if in coroutine Message-ID: <4a0a27a167669dec734a37f0d3d3826ac131db4d.1589540787.git.lukasstraub2@web.de> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/__QCEQPc=wBcBl+1KmXIssA"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:McYHL0e9SZlZmB06/zuVSjXLkTIiftNtRSumu5NPSErgCBw3gJI fczeYLPlCkvsjDwhyY4Dls0LjCzW/6RQixmhbHCfcgmEiUKxgN9pdqVuDfyiIGqh+19REUx wPyyH602ih2qHdIde6s7WkAwsl+kWYz8eqQU5d2qX+XD0MAJ/RX0BVTqpfgGxa1BSh1Sj61 w0GWJwvcY4enG92hwoDbw== X-UI-Out-Filterresults: notjunk:1;V03:K0:sFo7pLeLXTw=:SkVirIzxt4fIfb/e+CKxa+ Nij9uXxeUVlDiZnLlj55C37lLcl/DDboPTNJH3gN/gJjSBhKhLbf8/IPIcbl/t1LsJfJPWf1G 2VkH1gDzq+XBobKlSadYMmaD0CBFiThhFTKTsGxm9o1bwseU5d/rLWsKUojzZffsgUFDrXvyf dRNeQKBmkxHso/VTu674qY5VGpG0BXVMMfCa4CbeTHInXPGi3Lv1TglyVQx1BkzEe6SSwag9F sz8yWL4XvORsKdU1A7dJrVCCufeaVSyC5OoJz7RzUDcgCSl/99+Dl46WSzKnF26ZfBvjFpV3p g8qTqBkxTteeymeP1i+/LSUD1V0GJlTS5jtEBfk45Q39gHhrtjNwPGRI26V0iS9NS0fkgIDkQ 6DnepMdyuFOdd16nJiOFM3UrqZkvUAZotRsf8+7raVpww3i3T2E1heZqTP2B46tVNuE8ZNhLU 7DVB9kyvMaI8MLO25wH66vrt8WfAfOb+BeOXU1rkIYGrN21Ge/OV4sALjDYB8h56AHTbkxrKG PxUjpDaTqWqM3f9GrO44brK00Av/ykcoKwW14Z1tFcwJP/lVp50rROsYjVDA5gM0YbzAsMMDY LLPToR3IyWTtHWub3re8zUFMBlIms8wWSS7KZBVbjdhDIljnyOStFcp/vlILQGKFIApqq0T8c B4rP6Aej2pmBZ/NKDjrBKlRJQKohKXFMfshNIp607g4aXcRWHlPeinHhbEoYDOggTJQC9n5iN x8V9bTk2uj+yyGs0FDKF7Q8IxpRWfbu+ZJ9BNCVfXTRIKlR2M3ComeiCeXDHO9/8JY+QpAOCF /Lcgowv3PbZOEvyIL3IhBk+LrFmRS6qa7cKRQ5quLzSuo8j/eBZYxFF2ntRTPDP8uEN28046/ jk1AliSurfp6ycTU3JH0VpbSYkgkbLDl5B/VMlghtBu6D5C274BWRnnRsYcUqeFa5nQbNqw9n 7IAeTnNjtM+31weC0aYAh/UojbPlfJV5bdvBY7N4pVhc2O8JH7wYl5bl3ek4VE+q5k9V8EmpN YswrDv0qbJ9H58WbKNHlPEsjxMKILQIrS6dKDVoaNuFAEF/keU8k5iQHfVqzFEwyQpOSMSxpt hJQtoGMmI5aAunHoYGLz8IK3gVYHCT5sZrifew/GURJvHfc7gE6lQP/g1W7k6y4HajeZhroNe 62PTiMGOIdmspiHpUkrhN4U9bd9JgE0NL2vU88QSr+UALoxBYfA0DWIJKjj68Kh13hqfHE2qz GCkXa8HhaZIufMQjc Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.3; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/15 05:48:32 X-ACL-Warn: Detected OS = Linux 3.11 and newer X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Zhang Chen , Jason Wang , Paolo Bonzini , Li Zhijian , =?UTF-8?B?TWFyYy1BbmRyw6k=?= Lureau Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: fail (Header signature does not verify) --Sig_/__QCEQPc=wBcBl+1KmXIssA Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This will be needed in the next patch. Signed-off-by: Lukas Straub Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Zhang Chen --- chardev/char.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/chardev/char.c b/chardev/char.c index e77564060d..5c8014199f 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -38,6 +38,7 @@ #include "qemu/module.h" #include "qemu/option.h" #include "qemu/id.h" +#include "qemu/coroutine.h" =20 #include "chardev/char-mux.h" =20 @@ -119,7 +120,11 @@ static int qemu_chr_write_buffer(Chardev *s, retry: res =3D cc->chr_write(s, buf + *offset, len - *offset); if (res < 0 && errno =3D=3D EAGAIN && write_all) { - g_usleep(100); + if (qemu_in_coroutine()) { + qemu_co_sleep_ns(QEMU_CLOCK_REALTIME, 100000); + } else { + g_usleep(100); + } goto retry; } =20 --=20 2.20.1 --Sig_/__QCEQPc=wBcBl+1KmXIssA Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAl6+eO0ACgkQNasLKJxd slg/Tg//dfMTVBTxNvTDUtKBHLIBSwGfkXZkV6wnEsIHYT0wLDv2zPrEaMfk7NqK PWbDnqi0S+zLe5C+QtD50eDPbMAupTXYCr3aqZjnntdZIzgW0gLwcow4Q5FIrRmL nOmiByJ5cQTQ9cK1acPBNX/DKhlpJlC8Eyak5fRGvos7BoFneeLhCwx2LP5GnSYg ZujYLgdHwYo8npgK2vTVBDrFrIWVARXUyXXwpX0Xq/RJf1hpME38ELw5cMfzJw6K OMZgkq04DpwUQKPzhcMPgn9dqn7uikoM1IytUzZ1JIzFcVLe7g0iViLQnA8iGk1m o8BG+skPq7wsxuURmujx2fvNcG2er19fL2FCiaihQma8Ozu1idf3c+8VHqmOZW9T VsAv5fNIsDlQWKbj7p62q5woK+0TgfGQOTxaExhtuff/uyTIzzNCeeB6Ke1cHxwg uawoN8Wkqepr0tX3xJP9LGjK8Hn1UQrR2uH6fTtJaJW5LvEmpQGP3e8knyTpF6po 9JGt3rIWvATfHxVRD43iX1ZG9ysiFZZhCLiwtbqpPCeJq/of2MrBO7j4SFTuYWJK c8hHvB6Shsq2E4Kgi7OhJj9is90E2dDcajL2XvA3HtKppR/WcfXe1at0FAwrYli+ W3CvaQ4ullbHsZdeLD3O8c3JPmFVQ29bnEriXyFbF6yjHOVZDTM= =r4qb -----END PGP SIGNATURE----- --Sig_/__QCEQPc=wBcBl+1KmXIssA-- From nobody Fri Nov 14 18:10:27 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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 ARC-Seal: i=1; a=rsa-sha256; t=1589541710; cv=none; d=zohomail.com; s=zohoarc; b=n/d3lTi5L0PnU12yTETCTb/LMsM355U4MLGAY7MCDyRufpw48UV9rIui7J0EqY3D0B8UG60eptqDPLLObpGTpCqX8RNr6NZDhBtMdChI7jotx07vmi16pF9QCJWpzGpluRg7CjG6XUSSv5xI5e7kIGC6MNPn9NY5cbsPqVpgTJQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589541710; 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=4/Mf5LaRGcPlz17AQSVKPqi2iZ04XGAryHGpRG1lE6g=; b=Pl/F0Z/qEfPMv1zaj4Y8sIhqrYvUutvIvHW0MjUL3w6/sHFDzAXnlSGmTlmVM+FcfdcVbVD0eZtM7oTXw43L1Q9GDRomuhMULSJVCtlmnb3ZAnZRTxXYXnEXiYwB4dLT+vibzqb6yLVuH+jiyCa0kRxtcuA5uZXYqQy/dpLACoU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1589541710018818.4218179732311; Fri, 15 May 2020 04:21:50 -0700 (PDT) Received: from localhost ([::1]:58574 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jZYPU-00021I-CS for importer@patchew.org; Fri, 15 May 2020 07:21:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55852) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jZYG0-0001lR-8a for qemu-devel@nongnu.org; Fri, 15 May 2020 07:12:00 -0400 Received: from mout.web.de ([212.227.17.12]:46255) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jZYFy-0008Ej-Q5 for qemu-devel@nongnu.org; Fri, 15 May 2020 07:11:59 -0400 Received: from luklap ([94.134.180.164]) by smtp.web.de (mrweb101 [213.165.67.124]) with ESMTPSA (Nemesis) id 0MZUJt-1jo3Mv0OSb-00LJHO; Fri, 15 May 2020 13:11:48 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1589541108; bh=h6IpceFVsmiO3dN/N26P3SqX+10w29Rm94J4RmiFVIY=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=BK5HWRWDTl4f8wwdSCnWZK32nGdaMxUhWqznKR3lWW5Il+Sg/6NWV3t1VGgF16iu+ kaFlVWWzFKHPhoxN8DdwXxT0tfspRJj3knUq0Tjphy/5pn4LcCH+fCyGJNBXlHPT4z 2QtBNs68B9fmMcYs01AdBhv7Lc5JZ9rZUrMQk23Q= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Fri, 15 May 2020 13:11:46 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v5 3/6] net/colo-compare.c: Fix deadlock in compare_chr_send Message-ID: <41051a5d0fcba1e2abe19a5d860b3cd984101db6.1589540787.git.lukasstraub2@web.de> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/jf1UHXSeiwMszPkhIHOqgs."; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:mo5nJpRzt8GpmD+xL7ROUa2+6QZELEEGEzkEWobNLHa370lS+tX Oxs9DETs1DXf2ZTZxLOMshVIMxPWaPGSppoXXeSQ+mZfbMdz4EA7qy0QpXzDNOmPPnypyb4 25CkNYUAlkX3gz0De2c4iWd1tu2PA8gn36RkNEddCpWiybcgVbsmYA33Gkb6eGDupi6VrQP mGS1X9M4pstp36xl2thKg== X-UI-Out-Filterresults: notjunk:1;V03:K0:lznnTldY390=:gbzc4FIw6xh5rA9lD0gi69 3j/b4cwAuRkZRVcbNOJgHhNqF+s69IDEZ4Ij8CRoQY0IMcmeWAwhQpRk5Y9joYXM/AX0JgWRy MGyetWMOLJj8cUj18iD49C72+FdnIhAf32CQ/6xRyX7BayCgizzSnx9rOYXIFMDDzH8ardN3h JgwfmSvKUfGYiEdObYvPWlm+JjxzdBBT5uPyDhEGd/oWHGyD4vb3GDYaQERCp2GAQjc+yKcIW 1PSGVaofhD1RZU7kcwMXefau0HgJ88zGVyxRl3dOdj4gCGF6QfGMakMjgPBm5vYU6FJVMM8c9 bkZ9YG8bPmTHxntMU8O/oGQyiGtsrw/8z0v0Wjd4y6yZaUyjMGeUyVLKtSPjOXgKo37mpF+dU d+bHPWfzAbq4AuqsqvpuPoka74FyrrpNscE3wEPt8Vy9Y870znEhQl07n2nAGydJ2qP2mnJ9g EQZyRRmKIBMfEzzqE9jrKkunaSK4X5TWCB2F4I/jyQx7iKZ3syb0RaUJHL5jOQkK7RDf0i72i /PXEL35cT+WZz3VhFf4riFJmV3dyoIjy01tZdQFA6Jz47wFM/cfiE8WXi7ttoxO865w6kjofJ KDrHRd/o8UOtUFvvJq3OwW9VTJndq8FzeLr4Qn5r31ufUEMILEa+Cyg2zqgNa+qgVrg0sXO6e oUWh9UIcMdyOw7vwG/CpX0Uk6ODKVBKPclLnrxYiCCz195odYJhHMRSNSXD7t9xp3eEBXl21S zqDakHOFBPc+igz2ZDEO42N2rACoUUiX5fCZUgN/OOst/zUNnvTf74BKxULdzVgGcKzN7ZNav KlEC3jrOVhGJYEvpXMnEqfsDktOQDRnYLJnHVUx22I3pueH7QcCkChJTvTpvhBwKBs8d/3OSS i+lsFoG+8DEwGea2zkY5U91K75/gp0RhLsYZ0IC/EaINaBxewJST0IYzEsEoHszCWeuN/2byT avSLIBrlnE4eb+Fu6e+tTMXU6X7IF2NXbTTiF8rY1zKBR1JM6DAnuIr1jKHO8cFfEzoCVShgN Yo0efx6s7SBPFJLjSeJyQNWtG7eHAohX4Z4TI79brCEvExyKbpPJQc6odjpQpNveS0MS5RDBJ nrnxUb4X2FPYBApIU+urJRdcCFeBQSvbsa7eSg5t6CZ0pjnulrMaK1o0Eey0uDzszZYd44Qk6 KRB47NG0S8Qrfdiqe6Tw2XZaSNFhizD/8uxzLsSSqaKuCmPce0FBCs1STqTuw+YT7aLkYerx7 IvcfHQ9e5pwJNe5ho 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-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/15 07:11:55 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Zhang Chen , Jason Wang , Paolo Bonzini , Li Zhijian , =?UTF-8?B?TWFyYy1BbmRyw6k=?= Lureau Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: fail (Header signature does not verify) --Sig_/jf1UHXSeiwMszPkhIHOqgs. Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The chr_out chardev is connected to a filter-redirector running in the main loop. qemu_chr_fe_write_all might block here in compare_chr_send if the (socket-)buffer is full. If another filter-redirector in the main loop want's to send data to chr_pri_in it might also block if the buffer is full. This leads to a deadlock because both event loops get blocked. Fix this by converting compare_chr_send to a coroutine and putting the packets in a send queue. Signed-off-by: Lukas Straub Reviewed-by: Zhang Chen Tested-by: Zhang Chen --- net/colo-compare.c | 193 ++++++++++++++++++++++++++++++++++----------- net/colo.c | 7 ++ net/colo.h | 1 + 3 files changed, 156 insertions(+), 45 deletions(-) diff --git a/net/colo-compare.c b/net/colo-compare.c index 1de4220fe2..e47c8c6049 100644 --- a/net/colo-compare.c +++ b/net/colo-compare.c @@ -32,6 +32,9 @@ #include "migration/migration.h" #include "util.h" =20 +#include "block/aio-wait.h" +#include "qemu/coroutine.h" + #define TYPE_COLO_COMPARE "colo-compare" #define COLO_COMPARE(obj) \ OBJECT_CHECK(CompareState, (obj), TYPE_COLO_COMPARE) @@ -77,6 +80,23 @@ static int event_unhandled_count; * |packet | |packet + |packet | |packet + * +--------+ +--------+ +--------+ +--------+ */ + +typedef struct SendCo { + Coroutine *co; + struct CompareState *s; + CharBackend *chr; + GQueue send_list; + bool notify_remote_frame; + bool done; + int ret; +} SendCo; + +typedef struct SendEntry { + uint32_t size; + uint32_t vnet_hdr_len; + uint8_t *buf; +} SendEntry; + typedef struct CompareState { Object parent; =20 @@ -91,6 +111,8 @@ typedef struct CompareState { SocketReadState pri_rs; SocketReadState sec_rs; SocketReadState notify_rs; + SendCo out_sendco; + SendCo notify_sendco; bool vnet_hdr; uint32_t compare_timeout; uint32_t expired_scan_cycle; @@ -124,10 +146,11 @@ enum { =20 =20 static int compare_chr_send(CompareState *s, - const uint8_t *buf, + uint8_t *buf, uint32_t size, uint32_t vnet_hdr_len, - bool notify_remote_frame); + bool notify_remote_frame, + bool zero_copy); =20 static bool packet_matches_str(const char *str, const uint8_t *buf, @@ -145,7 +168,7 @@ static void notify_remote_frame(CompareState *s) char msg[] =3D "DO_CHECKPOINT"; int ret =3D 0; =20 - ret =3D compare_chr_send(s, (uint8_t *)msg, strlen(msg), 0, true); + ret =3D compare_chr_send(s, (uint8_t *)msg, strlen(msg), 0, true, fals= e); if (ret < 0) { error_report("Notify Xen COLO-frame failed"); } @@ -272,12 +295,13 @@ static void colo_release_primary_pkt(CompareState *s,= Packet *pkt) pkt->data, pkt->size, pkt->vnet_hdr_len, - false); + false, + true); if (ret < 0) { error_report("colo send primary packet failed"); } trace_colo_compare_main("packet same and release packet"); - packet_destroy(pkt, NULL); + packet_destroy_partial(pkt, NULL); } =20 /* @@ -699,65 +723,115 @@ static void colo_compare_connection(void *opaque, vo= id *user_data) } } =20 -static int compare_chr_send(CompareState *s, - const uint8_t *buf, - uint32_t size, - uint32_t vnet_hdr_len, - bool notify_remote_frame) +static void coroutine_fn _compare_chr_send(void *opaque) { + SendCo *sendco =3D opaque; + CompareState *s =3D sendco->s; int ret =3D 0; - uint32_t len =3D htonl(size); =20 - if (!size) { - return 0; - } + while (!g_queue_is_empty(&sendco->send_list)) { + SendEntry *entry =3D g_queue_pop_tail(&sendco->send_list); + uint32_t len =3D htonl(entry->size); =20 - if (notify_remote_frame) { - ret =3D qemu_chr_fe_write_all(&s->chr_notify_dev, - (uint8_t *)&len, - sizeof(len)); - } else { - ret =3D qemu_chr_fe_write_all(&s->chr_out, (uint8_t *)&len, sizeof= (len)); - } + ret =3D qemu_chr_fe_write_all(sendco->chr, (uint8_t *)&len, sizeof= (len)); =20 - if (ret !=3D sizeof(len)) { - goto err; - } + if (ret !=3D sizeof(len)) { + g_free(entry->buf); + g_slice_free(SendEntry, entry); + goto err; + } =20 - if (s->vnet_hdr) { - /* - * We send vnet header len make other module(like filter-redirecto= r) - * know how to parse net packet correctly. - */ - len =3D htonl(vnet_hdr_len); + if (!sendco->notify_remote_frame && s->vnet_hdr) { + /* + * We send vnet header len make other module(like filter-redir= ector) + * know how to parse net packet correctly. + */ + len =3D htonl(entry->vnet_hdr_len); =20 - if (!notify_remote_frame) { - ret =3D qemu_chr_fe_write_all(&s->chr_out, + ret =3D qemu_chr_fe_write_all(sendco->chr, (uint8_t *)&len, sizeof(len)); + + if (ret !=3D sizeof(len)) { + g_free(entry->buf); + g_slice_free(SendEntry, entry); + goto err; + } } =20 - if (ret !=3D sizeof(len)) { + ret =3D qemu_chr_fe_write_all(sendco->chr, + (uint8_t *)entry->buf, + entry->size); + + if (ret !=3D entry->size) { + g_free(entry->buf); + g_slice_free(SendEntry, entry); goto err; } + + g_free(entry->buf); + g_slice_free(SendEntry, entry); } =20 + sendco->ret =3D 0; + goto out; + +err: + while (!g_queue_is_empty(&sendco->send_list)) { + SendEntry *entry =3D g_queue_pop_tail(&sendco->send_list); + g_free(entry->buf); + g_slice_free(SendEntry, entry); + } + sendco->ret =3D ret < 0 ? ret : -EIO; +out: + sendco->co =3D NULL; + sendco->done =3D true; + aio_wait_kick(); +} + +static int compare_chr_send(CompareState *s, + uint8_t *buf, + uint32_t size, + uint32_t vnet_hdr_len, + bool notify_remote_frame, + bool zero_copy) +{ + SendCo *sendco; + SendEntry *entry; + if (notify_remote_frame) { - ret =3D qemu_chr_fe_write_all(&s->chr_notify_dev, - (uint8_t *)buf, - size); + sendco =3D &s->notify_sendco; } else { - ret =3D qemu_chr_fe_write_all(&s->chr_out, (uint8_t *)buf, size); + sendco =3D &s->out_sendco; } =20 - if (ret !=3D size) { - goto err; + if (!size) { + return 0; } =20 - return 0; + entry =3D g_slice_new(SendEntry); + entry->size =3D size; + entry->vnet_hdr_len =3D vnet_hdr_len; + if (zero_copy) { + entry->buf =3D buf; + } else { + entry->buf =3D g_malloc(size); + memcpy(entry->buf, buf, size); + } + g_queue_push_head(&sendco->send_list, entry); + + if (sendco->done) { + sendco->co =3D qemu_coroutine_create(_compare_chr_send, sendco); + sendco->done =3D false; + qemu_coroutine_enter(sendco->co); + if (sendco->done) { + /* report early errors */ + return sendco->ret; + } + } =20 -err: - return ret < 0 ? ret : -EIO; + /* assume success */ + return 0; } =20 static int compare_chr_can_read(void *opaque) @@ -1063,6 +1137,7 @@ static void compare_pri_rs_finalize(SocketReadState *= pri_rs) pri_rs->buf, pri_rs->packet_len, pri_rs->vnet_hdr_len, + false, false); } else { /* compare packet in the specified connection */ @@ -1093,7 +1168,7 @@ static void compare_notify_rs_finalize(SocketReadStat= e *notify_rs) if (packet_matches_str("COLO_USERSPACE_PROXY_INIT", notify_rs->buf, notify_rs->packet_len)) { - ret =3D compare_chr_send(s, (uint8_t *)msg, strlen(msg), 0, true); + ret =3D compare_chr_send(s, (uint8_t *)msg, strlen(msg), 0, true, = false); if (ret < 0) { error_report("Notify Xen COLO-frame INIT failed"); } @@ -1199,6 +1274,20 @@ static void colo_compare_complete(UserCreatable *uc,= Error **errp) =20 QTAILQ_INSERT_TAIL(&net_compares, s, next); =20 + s->out_sendco.s =3D s; + s->out_sendco.chr =3D &s->chr_out; + s->out_sendco.notify_remote_frame =3D false; + s->out_sendco.done =3D true; + g_queue_init(&s->out_sendco.send_list); + + if (s->notify_dev) { + s->notify_sendco.s =3D s; + s->notify_sendco.chr =3D &s->chr_notify_dev; + s->notify_sendco.notify_remote_frame =3D true; + s->notify_sendco.done =3D true; + g_queue_init(&s->notify_sendco.send_list); + } + g_queue_init(&s->conn_list); =20 qemu_mutex_init(&event_mtx); @@ -1225,8 +1314,9 @@ static void colo_flush_packets(void *opaque, void *us= er_data) pkt->data, pkt->size, pkt->vnet_hdr_len, - false); - packet_destroy(pkt, NULL); + false, + true); + packet_destroy_partial(pkt, NULL); } while (!g_queue_is_empty(&conn->secondary_list)) { pkt =3D g_queue_pop_head(&conn->secondary_list); @@ -1301,10 +1391,23 @@ static void colo_compare_finalize(Object *obj) } } =20 + AioContext *ctx =3D iothread_get_aio_context(s->iothread); + aio_context_acquire(ctx); + AIO_WAIT_WHILE(ctx, !s->out_sendco.done); + if (s->notify_dev) { + AIO_WAIT_WHILE(ctx, !s->notify_sendco.done); + } + aio_context_release(ctx); + /* Release all unhandled packets after compare thead exited */ g_queue_foreach(&s->conn_list, colo_flush_packets, s); + AIO_WAIT_WHILE(NULL, !s->out_sendco.done); =20 g_queue_clear(&s->conn_list); + g_queue_clear(&s->out_sendco.send_list); + if (s->notify_dev) { + g_queue_clear(&s->notify_sendco.send_list); + } =20 if (s->connection_track_table) { g_hash_table_destroy(s->connection_track_table); diff --git a/net/colo.c b/net/colo.c index 8196b35837..a6c66d829a 100644 --- a/net/colo.c +++ b/net/colo.c @@ -185,6 +185,13 @@ void packet_destroy(void *opaque, void *user_data) g_slice_free(Packet, pkt); } =20 +void packet_destroy_partial(void *opaque, void *user_data) +{ + Packet *pkt =3D opaque; + + g_slice_free(Packet, pkt); +} + /* * Clear hashtable, stop this hash growing really huge */ diff --git a/net/colo.h b/net/colo.h index 679314b1ca..573ab91785 100644 --- a/net/colo.h +++ b/net/colo.h @@ -102,5 +102,6 @@ bool connection_has_tracked(GHashTable *connection_trac= k_table, void connection_hashtable_reset(GHashTable *connection_track_table); Packet *packet_new(const void *data, int size, int vnet_hdr_len); void packet_destroy(void *opaque, void *user_data); +void packet_destroy_partial(void *opaque, void *user_data); =20 #endif /* NET_COLO_H */ --=20 2.20.1 --Sig_/jf1UHXSeiwMszPkhIHOqgs. Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAl6+ePIACgkQNasLKJxd sliT2xAAnX1xAe5eZr/f6plDkNd7VKmrnIx1pGekjzBbfBVN8d0hlUrK+WVARoIF Gd0fzdho33TNuIpM4B7mnX6eIDUcb3fP2HexJLhKr6X8x4kl5aKxv3vYwvil7lAg rxtlH38AKy3xCiXEXJN618YWLzDVyPvEfF7/tEWxEDebPdLihroLisgxHGkRDmUb R8YWB0u8Mw40s6FtUUIYDek1dBNU4bkDJ+1+jPsa5+eeUJebaSbBaad4kZwF9YW4 xgJarf8Xh75wrKat/aWSEMgMzb7LxaJWtmPSkIISzZImsvWPpmpUJMvmHst7d8rW hhICc8P+tPQCglQL+HzwLean5uCPXa5GnMCRlpQ2wGmLiVH5oLPMJly8CXdKu00G IC6zdLKtrWU40sggG0Is9zRS41IGeNAkInjeS4y+X2rx9fSScGqklNMRTilR6uJr JBIawvc9kcVF36nrpFtuooLMdZIIdQQZGQfyBM4e4Lf3OUWEgrIvcP3iEGhzg1DR Tsyh6tMs+wcNC6bUluPB4FzhnOXAkEgD4tm07TsymaVeNsXkrpwYCMoKwMBynybs 2M3NAX45ZgbVapVHcZrIhYNMI0RSiaQDIcnKJHxtQbLmmWPbBj93s+MmxybvvmFu iEN0GAeEZ5cMEIMd9X+Gaqczm7shEnsQUfH4P0B3U8t8tnLRxOU= =rnSv -----END PGP SIGNATURE----- --Sig_/jf1UHXSeiwMszPkhIHOqgs.-- From nobody Fri Nov 14 18:10:27 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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 ARC-Seal: i=1; a=rsa-sha256; t=1589542325; cv=none; d=zohomail.com; s=zohoarc; b=R+1+eGt4DepSa50SoNaIr67m5sw2DcuTZP3LSoWDNb1ceP2sFgpAldPzaCkMJc8BARruQdq4In57TCE33v0GREdCH17Lel/JXR6rKLPzcZof6ikUAN4ZmbbnZIAwGkqV/ut5R+Nj70ove9ZKW8HWyD/x94XCywjGxcs2AmBZpcE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589542325; 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=CU2y34SKlBC1F/KF3iH7yZWlCr5GYBiIoG/8oiswbTM=; b=m4ECkz1THK3KFdSI7/vqFD8lTRLMQHboYbeYJmIwK1RwzaZ2t3amSGrS7RKGOoBfE9LOGd1VJrnHUOkoMb3dtyP+fH0NX0ZqmhH+3x4h95O/RdgMMVvBFj5ZyXvk3QgIK1TEcFSiH4DrnbqPCdw2dvpMoaF+jbKnX3sqsXymwKk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 158954232584039.64933607037267; Fri, 15 May 2020 04:32:05 -0700 (PDT) Received: from localhost ([::1]:50214 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jZYZQ-0004aJ-2A for importer@patchew.org; Fri, 15 May 2020 07:32:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55866) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jZYG7-0001qB-0I for qemu-devel@nongnu.org; Fri, 15 May 2020 07:12:07 -0400 Received: from mout.web.de ([212.227.15.3]:35033) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jZYG4-0008FF-Pj for qemu-devel@nongnu.org; Fri, 15 May 2020 07:12:06 -0400 Received: from luklap ([94.134.180.164]) by smtp.web.de (mrweb002 [213.165.67.108]) with ESMTPSA (Nemesis) id 0MA5ZB-1jOmkA0Lij-00BNbd; Fri, 15 May 2020 13:11:51 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1589541111; bh=wBcV0KTNVjkOjzoVc/HnBrcbobfirSONvjAmAMH59EA=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=DcnakZf5DL8FyC+me7a4HLEm8v9TAYVFm9k4gsdPVqW9fmfpoZu95K3LxG+2Zl3Wu Ku7ozF/vHJwNp4GX4jlsrBKM9PKULZ94l8u/3soyrPATs7SlSjDtWUQ6nnskboMpFd vHyZJKH1EP7x292ji5VV7gFBcPrkYnQePSAlZpSE= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Fri, 15 May 2020 13:11:50 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v5 4/6] net/colo-compare.c: Only hexdump packets if tracing is enabled Message-ID: <5876e4047ee97f19616694130fb9c0cb3bb51a67.1589540787.git.lukasstraub2@web.de> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/6Pgl9T6NHLJYUfIRhIOlcCw"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:nQ9gPbioOUCQGxCE4LRKcFuYrDdyqDN3Y16hO75KoEsOGsKfsZv SOENOFlXjwQ1JhTz4PIlni0iqXT/g8+ZJMgUGrGqq4nRsM709LFbCVkpSWw/Vfl71yDTqxo QJ0YEwZQrRXvt/HzFV7EcXKxMLxb5dwOhVH/hMscEAsca06rAjleDtNeAGRQjRsYo9C/n+z NqmY5DrlsRAh5jfKUJE0Q== X-UI-Out-Filterresults: notjunk:1;V03:K0:7ZVpVjwH3XA=:lhJcCHSaYrS9tSflBYEqlV rrxW+zDCiEwoBl8aSUtZjJ+vZBhoUQv7PYZpBAJHaEZHKPXNJCSn311+Tlb1tdeUd2uC3o12z LgVn4u7/oyunwn/HDcwEg7yuDHiV05Ii6UHDav6mSG5+hJfhinVLn4USw/R3RQw74FwpmBQqz +fVuMshbe0iJyZHoovoFfIqe3z1j+Rd6EuNcW/oG5UeODNX/ZxK0zpjd0YKfRNprmaWpqqGqP HqqRxjjNGf9EfAMAIqS8lW5PfIC9v06If41QgO0PqFL87BdYlpPb+4exW9T1dVcebAsBxvxQc R9pZx/e31MwG8XlWhQQoRYtEIexmJLJM/9JRN7HtDle5aNCRBqd/z4F7BSPkfGzskmHYr5VNI FeIy/bwvNK1rVELzS28pFp4pZEadI019VJNGVGUysuAJYGa6QGXQejmaZRAw3qA3tPk8zrtoM zaZSbeAywrVV0EXGEiDXxl6ZAw/oWuU0ggowZAZe55aWhNCn/0jg2tJ0KGLI7riIY1crCRzXx Sbjls9PmNU4jNMto1WEZ58tgGTRNn4OrGB/VR28X267Nk2tzUh63f1uW5LwHUR1izx8Z1ynJr xLCbroJpNLK5qkzJQcDo8iWFkrJ2fc3nR/bSrIM0KAQdUNk7beMT9TH9L6QXuquvk8ZnLOBc2 yfvqVILh4iGUI2tC2As6STwKy6jnwPyST5BRXPhM/QiL4Cigj8coquwTx+4GzzgPTIOWsQnLz DgUCHkVi0bgyws91Ql9Vuu+28eGAWUFaZN6nkMPKi2RfHyz6zDjcdPeSuwORuAJ9t6L7Ep5Py idbnEYsiBbylDI8zWjQASgcbWdgj2QkPcqKf+RG0NN0DcosiJvWz4kH9ljFVWhntdo5H6yu3+ ITaElRyvJnNvCgkqOSTJDZ2fj0F3FEk9EXdALuGJj4xjROsA9ThQ7F+R+AD/W2FzyktEX7sG0 t1J6T9Bd9LshzPhx07a1QCtGINQpRMmow/QAXFQqO+ceclm8n0nhupSxRw+4FRIj0IY+jx5mi Uqz0dOcnrobv2xQOIqyhQHzb6fmfGaOFS2RcBTeTu0vIUPlnX3b4VzdZ6x3OkWj5JBInxb1Zl uB4id1g1QUJqux2IjtVyaFa0/i6v8h+wFx0gCwBNBOcUlha0R7Kfn/zwtADvn6Ne+z6gvdXQj DtN0ReNE/VOoo+fFMhlnu2V0vUEei2gcOIFCu+u8oWAgB1fUuePKLj6IvigbiKoHnkdWAmYpC BAiixvd2CMOadsKVc Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.3; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/15 05:48:32 X-ACL-Warn: Detected OS = Linux 3.11 and newer X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Zhang Chen , Jason Wang , Paolo Bonzini , Li Zhijian , =?UTF-8?B?TWFyYy1BbmRyw6k=?= Lureau Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: fail (Header signature does not verify) --Sig_/6Pgl9T6NHLJYUfIRhIOlcCw Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Else the log will be flooded if there is a lot of network traffic. Signed-off-by: Lukas Straub Reviewed-by: Zhang Chen Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Philippe Mathieu-Daud=C3=A9 --- net/colo-compare.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/net/colo-compare.c b/net/colo-compare.c index e47c8c6049..7886444cdf 100644 --- a/net/colo-compare.c +++ b/net/colo-compare.c @@ -483,10 +483,12 @@ sec: g_queue_push_head(&conn->primary_list, ppkt); g_queue_push_head(&conn->secondary_list, spkt); =20 - qemu_hexdump((char *)ppkt->data, stderr, - "colo-compare ppkt", ppkt->size); - qemu_hexdump((char *)spkt->data, stderr, - "colo-compare spkt", spkt->size); + if (trace_event_get_state_backends(TRACE_COLO_COMPARE_MISCOMPARE))= { + qemu_hexdump((char *)ppkt->data, stderr, + "colo-compare ppkt", ppkt->size); + qemu_hexdump((char *)spkt->data, stderr, + "colo-compare spkt", spkt->size); + } =20 colo_compare_inconsistency_notify(s); } --=20 2.20.1 --Sig_/6Pgl9T6NHLJYUfIRhIOlcCw Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAl6+ePYACgkQNasLKJxd slhI8w/+P+dP3TcNEpW/8HJzJvZhM3Xyl/41c8+rfjWbBej/0axYbsof7dNXlKn2 vsj6kK/lE3WgDsISmDXSlVJt6ZtStMXeF3LyU5ez9vAgMPObhRXEdBPRSsk26lnp SAMOZIbyziK1cQln/2DTA1u3Nv7wYt9DjZu1IBpJS86FB2oPRvj4qfjkHnAKJFmV m5YOOFtqwALvgbbRW1QlvPmIzkfKgLCs5wav+3aiDHwp9xPioDmEZoTeO5YfkKCY oojUiuDdjFBBz0b3w/cg7xLQ95nmGkxiVhpt4BB9NC6+dEPNDMGUca61rZo7/8PI gj8VVFWYy1Mg+aYgDpITn23Ou+kyWBSj8pYElJ/+fECzAJgqhtlAYRL4G9w4HhAE y8ifhxiera/zfC3vKwkSoDkjf8CFe3hOtQ8dchaJQfrtz9tzupZDWXIYnYP+b7JU bLyceasT1EBN8LBBf/jlfTEg/uQ9N539CBPLU/cBpvuU8EMIUroHiigWZ4UBfYAS N6bQ1jp3Hqf8qBUQB0OMdq8p4e9BrsTX5vOvlVVd3BBDJF7c8Y3R/s96+A/13cTD HkiLgy6N8nrXZcz1n+F7UqzLVuHyJ0/IjtkypZuo2DybeO4OyDOaTGdXVYXqJwKc 7dXUgvEYpS+yS+WkLxjihxVL6ykmS+tsXxgmI4NkRVBCFen4sTw= =Cgzl -----END PGP SIGNATURE----- --Sig_/6Pgl9T6NHLJYUfIRhIOlcCw-- From nobody Fri Nov 14 18:10:27 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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 ARC-Seal: i=1; a=rsa-sha256; t=1589542015; cv=none; d=zohomail.com; s=zohoarc; b=OrAS/VCrEcjW+wbk8iEWzkhDg0RUUJPD3iNOI8lhielJ/4XF7whrQdZVv/qMNBHNlGVxZOD0DT6TB2woXkhEHVA3lSTIAVQIfM/XmKp3PB/aQt95Defoki4SL+g2MA1rpV9WX+tilv3xq60j2DbJo2gYATDPsh/YNfdn4/SXmwY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589542015; 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=Bewrbhl16+zvE0A4CBumHwbQJUJad3VaE+xK71m0KX8=; b=MGRlOV+Llbfmz42oyulurXd8QtkDsnXOyTF7djbvKMYKYICWczD8IwnVIFBHXFA0iXfObzec6ep1mD7S/rRbmjRsJwEzV91zfAPYcxOB1FQq4oWYYFNjtvYn0ym1lBKBeqb4u8rNE8jjaD+4uKvHG2bgWtDU8+GYCclRlQPnBI4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1589542015479184.22148269090235; Fri, 15 May 2020 04:26:55 -0700 (PDT) Received: from localhost ([::1]:40898 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jZYUQ-0008AZ-4t for importer@patchew.org; Fri, 15 May 2020 07:26:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55864) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jZYG6-0001pl-Fk for qemu-devel@nongnu.org; Fri, 15 May 2020 07:12:06 -0400 Received: from mout.web.de ([212.227.17.12]:58527) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jZYG4-0008FH-Tq for qemu-devel@nongnu.org; Fri, 15 May 2020 07:12:06 -0400 Received: from luklap ([94.134.180.164]) by smtp.web.de (mrweb102 [213.165.67.124]) with ESMTPSA (Nemesis) id 0LshWf-1j7Fp40H2f-012EZZ; Fri, 15 May 2020 13:11:55 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1589541115; bh=/BRR383xwz8e/cdtXOCGs/9bda64NE7CUbfcKKkSXtM=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=K6fFhFN8Asw3AJuU03sGHKyPqYXhFBF54uqC8Y33To6BJQW9aKfVITX7ri9z7/6TJ bZL3NGl+cdZcaswtBkMb37Jux3jZIJIncGcReB5boOlI7Dn+QNIVHomILfrBRMNtvi vtFDu8oX0v6AJUAfi6J0KbgGkxgfMhni2C2XIJS8= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Fri, 15 May 2020 13:11:53 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v5 5/6] net/colo-compare.c, softmmu/vl.c: Check that colo-compare is active Message-ID: In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/tB//jzM3d.+_QoiJo3NznNz"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:zisGVcRHWVRf/jgsmBo3phHB4561wcsKRzPvPIek1z4aZ/W5q5G c+2lVHWMTMyaKNoa8sO3n3re/tYlnTH2EPvvc4Zp9vOS104+arD1ZEhPLWXbnN+zrpf5V6g vQIDHn5eQtBpJ1F3AAIy8vkQ2WCd2tayD31KOTLP6eRqfg53wi3swlruJpG6OtKi+Ovm2ef NMOGwN3EMb27LzydTtFMQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:eBXHk8LzAHI=:4RuLsRscCmhekSUyogFh1o MduYPqZp/yd1PpDwN6P+Kmv4MAEGtbuE4nPL/LSh7z/ZlBZRzRoHvNLpl7r26slYjJHDQT/o0 ZCcj6jToD17pUbjxHBH2uP6ITLkdgskStElI2oSIqu8+IdX9UNnPvs/AntW/4AxFZRZI1HlyX k+z8VyyTPvRu87I53caNwIAITGas8k5CDVFASSsKTcJwytd4g7hoKvct5wHvgWy/8QUc45UVV 9j4U3uEmkw7yO2tjK6hMUGsZQLc3lVtBRmFFEVIuFxC6KEzJ6QbQ39Rxxa+YZwR1HROSyFZix 61GVYzOibSoq77wbtVcVXY0cuurwllqYN8bsSQxiDw1ZCpSG75Q5c0gS/hdAFPPmWieyypbM0 rUvEa9+greVAEQChp+vYfGlmbIuOYI7FNqzwUxtsPOgb7MABZPmBjxSERwWgvkQWW0D/QLhej DTRxj9u7l5/WmE44dkLMBtdyNg821tiU5eJTpxQIkqoXo4ZFj5i1pA/pI6o7dJr64jihESMbC +nZqVptIxz9LqAhUwGRFJHLIdPGfWHdMZYPUDYqysb2vXsyV1HKwBXrrS+w/iYR0Gg2cfsCMZ 9c/YJJU0Z2XJnjnjmQikIKCuJtJb69wIOHDBqWUz//lk5ZGHf4d3pm/AVeVG85VVzVwiDa28p 0ZwdvDsYfaUSEwTJa6JeZUKFxePw43aT1svvrOQyJZFLuRX2agQx2eOmoEsN/hxFK8+UTPxJB cPdNxSPggWDSvthSZ0x1Q4tfoWxiUvZiygK6wVBtKknyNI+VswCuq6Dgq79A+tXiypKfMf5ZF JIMFrkfJ4WHNRPwlZ3FokHmrfoRYnfSGJxkwPPyR3Nej3P3kOQ05xYoq1cGWGcprpBaioI42H 7S0qLZw/VXc88MpD85y/sx3rftTQ5iKr4ZL5sIe3IW4iVILHA8b9AMKOZNBShZ9wgPDs0wgAy nGzSj23KBS81TZCakUZ8dZcPQZ/jLVZn1aZjaGjWQgB2iG7wuMe7oGIqmc/FD9pSc6C8QHYCw cp6IKKcqTWIpqbKHuLV3bucqCWhJMab1z9KqEkCenovKTIU+v0qQYF/wjVyIzL2eRSF85P7iW ZZOTIXZ8vKV8arXQRYMDrds3oN6eWSU5EhedoKT/vTWSJ+7ljEvSOrWQqUC6heZpYzqAwVXUV GxwU//i7Fo9m0ovzHmJC0fZ7FOcChlVWAHIvgheneMjamqf/oAWqYx/PpBRVcPGGXFF9gtTqS /Js65jfKOm4a54yur 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-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/15 07:11:55 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Zhang Chen , Jason Wang , Paolo Bonzini , Li Zhijian , =?UTF-8?B?TWFyYy1BbmRyw6k=?= Lureau Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: fail (Header signature does not verify) --Sig_/tB//jzM3d.+_QoiJo3NznNz Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" If the colo-compare object is removed before failover and a checkpoint happens, qemu crashes because it tries to lock the destroyed event_mtx in colo_notify_compares_event. Fix this by checking if everything is initialized by introducing a new variable colo_compare_active which is protected by a new mutex colo_compare_mutex. The new mutex also protects against concurrent access of the net_compares list and makes sure that colo_notify_compares_event isn't active while we destroy event_mtx and event_complete_cond. With this it also is again possible to use colo without colo-compare (periodic mode) and to use multiple colo-compare for multiple network interfaces. Signed-off-by: Lukas Straub --- net/colo-compare.c | 35 +++++++++++++++++++++++++++++------ net/colo-compare.h | 1 + softmmu/vl.c | 2 ++ 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/net/colo-compare.c b/net/colo-compare.c index 7886444cdf..7205fdac29 100644 --- a/net/colo-compare.c +++ b/net/colo-compare.c @@ -54,6 +54,8 @@ static NotifierList colo_compare_notifiers =3D #define REGULAR_PACKET_CHECK_MS 3000 #define DEFAULT_TIME_OUT_MS 3000 =20 +static QemuMutex colo_compare_mutex; +static bool colo_compare_active; static QemuMutex event_mtx; static QemuCond event_complete_cond; static int event_unhandled_count; @@ -906,6 +908,12 @@ static void check_old_packet_regular(void *opaque) void colo_notify_compares_event(void *opaque, int event, Error **errp) { CompareState *s; + qemu_mutex_lock(&colo_compare_mutex); + + if (!colo_compare_active) { + qemu_mutex_unlock(&colo_compare_mutex); + return; + } =20 qemu_mutex_lock(&event_mtx); QTAILQ_FOREACH(s, &net_compares, next) { @@ -919,6 +927,7 @@ void colo_notify_compares_event(void *opaque, int event= , Error **errp) } =20 qemu_mutex_unlock(&event_mtx); + qemu_mutex_unlock(&colo_compare_mutex); } =20 static void colo_compare_timer_init(CompareState *s) @@ -1274,7 +1283,14 @@ static void colo_compare_complete(UserCreatable *uc,= Error **errp) s->vnet_hdr); } =20 + qemu_mutex_lock(&colo_compare_mutex); + if (!colo_compare_active) { + qemu_mutex_init(&event_mtx); + qemu_cond_init(&event_complete_cond); + colo_compare_active =3D true; + } QTAILQ_INSERT_TAIL(&net_compares, s, next); + qemu_mutex_unlock(&colo_compare_mutex); =20 s->out_sendco.s =3D s; s->out_sendco.chr =3D &s->chr_out; @@ -1292,9 +1308,6 @@ static void colo_compare_complete(UserCreatable *uc, = Error **errp) =20 g_queue_init(&s->conn_list); =20 - qemu_mutex_init(&event_mtx); - qemu_cond_init(&event_complete_cond); - s->connection_track_table =3D g_hash_table_new_full(connection_key_has= h, connection_key_equal, g_free, @@ -1386,12 +1399,19 @@ static void colo_compare_finalize(Object *obj) =20 qemu_bh_delete(s->event_bh); =20 + qemu_mutex_lock(&colo_compare_mutex); QTAILQ_FOREACH(tmp, &net_compares, next) { if (tmp =3D=3D s) { QTAILQ_REMOVE(&net_compares, s, next); break; } } + if (QTAILQ_EMPTY(&net_compares)) { + colo_compare_active =3D false; + qemu_mutex_destroy(&event_mtx); + qemu_cond_destroy(&event_complete_cond); + } + qemu_mutex_unlock(&colo_compare_mutex); =20 AioContext *ctx =3D iothread_get_aio_context(s->iothread); aio_context_acquire(ctx); @@ -1419,15 +1439,18 @@ static void colo_compare_finalize(Object *obj) object_unref(OBJECT(s->iothread)); } =20 - qemu_mutex_destroy(&event_mtx); - qemu_cond_destroy(&event_complete_cond); - g_free(s->pri_indev); g_free(s->sec_indev); g_free(s->outdev); g_free(s->notify_dev); } =20 +void colo_compare_init_globals(void) +{ + colo_compare_active =3D false; + qemu_mutex_init(&colo_compare_mutex); +} + static const TypeInfo colo_compare_info =3D { .name =3D TYPE_COLO_COMPARE, .parent =3D TYPE_OBJECT, diff --git a/net/colo-compare.h b/net/colo-compare.h index 22ddd512e2..eb483ac586 100644 --- a/net/colo-compare.h +++ b/net/colo-compare.h @@ -17,6 +17,7 @@ #ifndef QEMU_COLO_COMPARE_H #define QEMU_COLO_COMPARE_H =20 +void colo_compare_init_globals(void); void colo_notify_compares_event(void *opaque, int event, Error **errp); void colo_compare_register_notifier(Notifier *notify); void colo_compare_unregister_notifier(Notifier *notify); diff --git a/softmmu/vl.c b/softmmu/vl.c index 32c0047889..a913ed5469 100644 --- a/softmmu/vl.c +++ b/softmmu/vl.c @@ -112,6 +112,7 @@ #include "qapi/qmp/qerror.h" #include "sysemu/iothread.h" #include "qemu/guest-random.h" +#include "net/colo-compare.h" =20 #define MAX_VIRTIO_CONSOLES 1 =20 @@ -2906,6 +2907,7 @@ void qemu_init(int argc, char **argv, char **envp) precopy_infrastructure_init(); postcopy_infrastructure_init(); monitor_init_globals(); + colo_compare_init_globals(); =20 if (qcrypto_init(&err) < 0) { error_reportf_err(err, "cannot initialize crypto: "); --=20 2.20.1 --Sig_/tB//jzM3d.+_QoiJo3NznNz Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAl6+ePkACgkQNasLKJxd sljUdw/+J7KTnaCsuC0tjkud4CdBFu3EbLmarorsCYP1OFkgu5fM6bdxTNxiJPas K6IQMP4PZGYSgHfygkpP1fZjUsgkMVwwOLhqe4JT/A+3rB7NAE5+ll6pe/cf/D9l vIHRPBJU+8AgIQACBcLlNTFuE/vc6cmb5yrBGtQilrE/2HNSjEujziQ+bz49UyvU dea+Ie+3bByYuIE4PiZlJxMUlKmX+C191D6V0ocUb7tqJdbQ94Gx5S7d3An079TE B5WcjHLzDh9atqyXrEQBn0D7d7Mz5WFQLEJgByMIqpTNOhnqH7gMsk5DOpFo4NL/ b1qEJjkph4J4DYFBztijHclsP++cdrgKpgmo+ycdA9KrYNFIyzv6Q3ZrlpAZDlVu /mWMnIwovEBBQ13fBZmFeb3VTQc5mBEFblOMhwCbdFagFTL57ED03XAAUwIchZdm QrlP1UIU7rhR5atiu9Z0H9f4psukYF2vQ2Oge7QHUxIrXwwOujrhCWGHlCnVBvvv /xv7dZ4KhG85hN0qV/3ReYc7gftaQuyNuXY9g8rd9W/SBXBWvx7dvYLQAQdUjJ4H 01yk8bukQJdvHT+XCz3i1RChh5OyypnKbRJG0LuxYGt6oANRGrioMuZeluFDBmf3 YFBNRasgkeq0H5FlJmu7Jiw+HNlG174t7Rh/SpZ6LBdCi88kyQU= =YtT/ -----END PGP SIGNATURE----- --Sig_/tB//jzM3d.+_QoiJo3NznNz-- From nobody Fri Nov 14 18:10:27 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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 ARC-Seal: i=1; a=rsa-sha256; t=1589541717; cv=none; d=zohomail.com; s=zohoarc; b=O+54ptwmI2iRPyJEJjOMtWvS2tArrOnH4XSBEM1sJVkyIvzR2LqZwjVSjuKbj73np1t5orqtvZheUob9QCppRD0YtmqVw0y3c3WVxByWSyGHTYyEIKBuCy9Nd5Pu0Jik+XQjB+AvyKh7uWVSAOtMm4JFCuSIfH+VTrch/WqdlxA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589541717; 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=+VJ4+o3vnkV40eeSvHZrLSORFDnCwJlNexOaBfqU0FY=; b=BBPjAGP6rv4lWz5/ipn81SQQ1FLAFQ8kEP9D9X6NlmrfVSL4QZuh0M6ebX7+g9fQKxn7UbbGe8QVHus26smQS/FSl4CzrReEnCZ+7iiFIMrjASLI2xX1guDxY2LvSXljxtG+RP1hriFBjzlgd/5xAP2H1GanZPWEadHZEZPw+LI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1589541717749938.7198816335724; Fri, 15 May 2020 04:21:57 -0700 (PDT) Received: from localhost ([::1]:58994 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jZYPc-0002MS-6o for importer@patchew.org; Fri, 15 May 2020 07:21:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55912) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jZYGH-0001yb-HD for qemu-devel@nongnu.org; Fri, 15 May 2020 07:12:17 -0400 Received: from mout.web.de ([212.227.15.4]:36617) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jZYGG-0008IY-IV for qemu-devel@nongnu.org; Fri, 15 May 2020 07:12:17 -0400 Received: from luklap ([94.134.180.164]) by smtp.web.de (mrweb001 [213.165.67.108]) with ESMTPSA (Nemesis) id 0M2Mq4-1jGvPO1gLE-00s2PJ; Fri, 15 May 2020 13:11:58 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1589541118; bh=BYrK+knR+D/cawytbYf3E0l4+H25EAb667xb1e3Ktog=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=eZ6lwOBvZ0B7ozoEWD1Hqx58pzQR3T/YD6T1xK62WBauU9E5tN0xLnXlXZ+rc6oI8 gXA72p+xwr2O5hCuNlglzNuDupt3hsys2G/JI65ZkIF943Qm6SiSqF8q9BC4wXRY9d CTEBMzWnxrP4W9H+2N6puJhQLVDZfWMMxDZVM5DA= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Fri, 15 May 2020 13:11:57 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v5 6/6] net/colo-compare.c: Correct ordering in complete and finalize Message-ID: In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/VpVauuQZ4vDdG6L7i8E8bHp"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:FQ+36GBUVENmTy3GC2bdyjjbghZ/xJ5un8p2CYuUY3xrySLu9H2 JLOUgXryGD/XOIZUEC/7ILqEllRgo2FEXd/QM+hB/TSECLrf/l3FbiEPDfkCIBZ2kuG8zNn FkMy9IyQu6DCrulXhvUNeNn8Uo6IsjlSZJflBJEP8urkvtvxEyQwMvn4XNX7P7ru5/XL0y5 a4tXTEY1xSbiAVTTz355w== X-UI-Out-Filterresults: notjunk:1;V03:K0:zBsY1PSxvXE=:SSvs3vrwi/ycdYa0uaDrUy jncR8wC7jB6acd+w0iWbPQH1ukeI+HdkqRviAd1sLTHCA3maQHHhw9FDyRbFPa5hAGrK8BhH7 KeD0TrdS7gvG9Y1KSwHp8S7jk26TZghv3U34k13++SdRVCaeLx6NhTICp8M0VSzzGPW/e6LDH Byovfv0ckgMWcMikyruyryjbs7lJy6F9LA76m7R8/I+zWn2BSh3V9a3LHX8+ntP77NkYezTXS uw+whDYw7dwhLomN4q5rSy1u7esVhhRo+lE/PuNwIYDgonTe3Qjey+2oYwOc9WkkXyVKmEuwW 3+BDkGWNhuTcAUezfNYjH6lWf9LGHYNRSatZoslMNWQMsr99JNB3NYfqzsPdN1DEj8zrcCGy6 NIYHg849d2woV+UKuVdQ0ZL1p8MfBOW905qLLOWDMgit0JteGai1qfEyshw8KXROTAByfFhPY qj+Q0nPqwNla/AzDF9sOLIY5c6DkHS6SnRy0LlD1obGb7fY23DsivMcBvUaqlyqKOMa2OzQpU n3/fRCRE6usTySyKwWfhhrwugEaa8NkzE4rRvLpcoxHnKB+pteE9CXiCQRSZrdejCp2RxONt2 gKuQg8qQuDnYA0pW3jjp67Ilkans03o5JdQ7/4yE1i3jdcfl2xDl+rSDqDHAK3zbYTjdnO4n1 FUMeIHlGYQWhtVY0cqXYsKPmmeyrjivrwEtfkJxJhWNZttBnFv7mkA7ZlDrtikdx76mwYnzGi zrPu7A3bKbs16ZyBrfY8WriHifeV0LKGeVxb3VpUPssDykKzoP2LRodQ4CcsKyKmy3nZPfC0g i+4P4Zn49GVlrIXV9Ybgde5q4wQVGM7Eq7+7R3R2Rr1I/yOYow6DdatcMBKFKuD81gVN+WRcR MkRP5XB7rZzeEWUbYM3MQ9xUIysHS5tLaLJNP+nMrlvtpy81h0AozSLhJtlAcKUyT0NtTsn7e immjGDdatlV93FUkRTpRtrWk3Yr2kvdQgK9+zBk3MeArCare78tiRwb+4mPCcC3Is8ilT6bX2 RpRSpOjubCn2P/tYwSRcYh0PaUhiMP3Mb/u87RJBq/iC8ukZ3abRlPG2FLyQnEvm+iL2BJnA2 HnfhwR7L/8wUk7byrK2p+AxucqSAxflBrDw8IIni5CFL1YUdkfnTKnZIiiguOg6x5a0Li0mV9 hRGTQF90xLMU3Hi0IZXrsVTuM/EeNn63hXl1K6VbYkG19tCxV0W10I92Ufg5E7RusOMnG3DSa FKHXS4UaAOmhN+ueA Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.4; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/15 07:12:15 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Zhang Chen , Jason Wang , Paolo Bonzini , Li Zhijian , =?UTF-8?B?TWFyYy1BbmRyw6k=?= Lureau Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: fail (Header signature does not verify) --Sig_/VpVauuQZ4vDdG6L7i8E8bHp Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" In colo_compare_complete, insert CompareState into net_compares only after everything has been initialized. In colo_compare_finalize, remove CompareState from net_compares before anything is deinitialized. Signed-off-by: Lukas Straub Reviewed-by: Zhang Chen --- net/colo-compare.c | 45 +++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/net/colo-compare.c b/net/colo-compare.c index 7205fdac29..fddc955229 100644 --- a/net/colo-compare.c +++ b/net/colo-compare.c @@ -1283,15 +1283,6 @@ static void colo_compare_complete(UserCreatable *uc,= Error **errp) s->vnet_hdr); } =20 - qemu_mutex_lock(&colo_compare_mutex); - if (!colo_compare_active) { - qemu_mutex_init(&event_mtx); - qemu_cond_init(&event_complete_cond); - colo_compare_active =3D true; - } - QTAILQ_INSERT_TAIL(&net_compares, s, next); - qemu_mutex_unlock(&colo_compare_mutex); - s->out_sendco.s =3D s; s->out_sendco.chr =3D &s->chr_out; s->out_sendco.notify_remote_frame =3D false; @@ -1314,6 +1305,16 @@ static void colo_compare_complete(UserCreatable *uc,= Error **errp) connection_destroy); =20 colo_compare_iothread(s); + + qemu_mutex_lock(&colo_compare_mutex); + if (!colo_compare_active) { + qemu_mutex_init(&event_mtx); + qemu_cond_init(&event_complete_cond); + colo_compare_active =3D true; + } + QTAILQ_INSERT_TAIL(&net_compares, s, next); + qemu_mutex_unlock(&colo_compare_mutex); + return; } =20 @@ -1386,19 +1387,6 @@ static void colo_compare_finalize(Object *obj) CompareState *s =3D COLO_COMPARE(obj); CompareState *tmp =3D NULL; =20 - qemu_chr_fe_deinit(&s->chr_pri_in, false); - qemu_chr_fe_deinit(&s->chr_sec_in, false); - qemu_chr_fe_deinit(&s->chr_out, false); - if (s->notify_dev) { - qemu_chr_fe_deinit(&s->chr_notify_dev, false); - } - - if (s->iothread) { - colo_compare_timer_del(s); - } - - qemu_bh_delete(s->event_bh); - qemu_mutex_lock(&colo_compare_mutex); QTAILQ_FOREACH(tmp, &net_compares, next) { if (tmp =3D=3D s) { @@ -1413,6 +1401,19 @@ static void colo_compare_finalize(Object *obj) } qemu_mutex_unlock(&colo_compare_mutex); =20 + qemu_chr_fe_deinit(&s->chr_pri_in, false); + qemu_chr_fe_deinit(&s->chr_sec_in, false); + qemu_chr_fe_deinit(&s->chr_out, false); + if (s->notify_dev) { + qemu_chr_fe_deinit(&s->chr_notify_dev, false); + } + + if (s->iothread) { + colo_compare_timer_del(s); + } + + qemu_bh_delete(s->event_bh); + AioContext *ctx =3D iothread_get_aio_context(s->iothread); aio_context_acquire(ctx); AIO_WAIT_WHILE(ctx, !s->out_sendco.done); --=20 2.20.1 --Sig_/VpVauuQZ4vDdG6L7i8E8bHp Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAl6+eP0ACgkQNasLKJxd slgmUhAAgtVdo9xQ3mMl/VkxVNKKllwC3s+XScyMpVfs9+mzERALtO5IYKCz5st8 78kwxLcEH+Mhhm5ck5faXx+q47jBRDClXu9y/hpCpVnaZPzRNn4pSwuE/Zzi6xo9 nV5/5IHNzdfUDA26ZXDx3/gpJjSMUDlsKhgzYMM/cCTR79RMfG7x/jBNZz0+3yTs uH8mvtG4375fnGLZ38NH7CgC9vFPAFvMS+OcUpRhKSSl8XwepyuRv9LQZjg/HoL8 sa1J8YMwvkP+kA0Ajr++N52XTwB7+gPJ7uGcdYKCVRZmGHoDgGms9oJ1F4jLJIFa niOWBu7wJgRUqvP+pkVmK0eghfnnXqQQSEae3XFi2ar4XxzRyCIQB16T2cRXoOap /QC6Y/qsjvSaQSPQz0epA/gxnwkQXVenUPtfNJl5WcER9/Vsbyr6VNi6huYKt72P 6HUjhvqSpzuykg0x/T7c62CunmfS2zg2utL8QcxW2DMBQm0VhMEj32aktF59R3cS yl/wBCmZHrCkNL3CyUmmC1JDgcRsB3s5VuxMm9B70K5PTK5oC83STc4MwrbLbQyx Q4L1qJ28/mfHuq0k/kqJTxblKFvqhJEMAaRP3uzx9gkdqyqcmhbwr5DeZ742wQbt /SloXoesrLUxoHyBmnkb5cFS3/9A/ldi+oIbUCMRS7liPFh6Ee4= =YloQ -----END PGP SIGNATURE----- --Sig_/VpVauuQZ4vDdG6L7i8E8bHp--