From nobody Fri Nov 14 12:14:54 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=1587929831; cv=none; d=zohomail.com; s=zohoarc; b=W1NkUNjkT/amK1wZObwwckPa2XSjjqFnUF27m4vn1vwA/MPu5HE+VNXqauwO5iUII90HIWNKmPcaKAM/gRBOw1HtYkllHhkXjpYEoiUeLFpvqXT9+SRzHMaUGViGAfs5YC9jc9vKcYa63h2K3SB17rijTmH+HGREt1yDVrvhVlw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587929831; 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=qRWSqwM2fCu1pU9beHihTmDheFs1RDYc89JAMHB88mw=; b=bzhckSjWm1ibwxsnuXLx3sKTplvL6+daKUJsVoUtiKc9Hh12B6R6VGrQXx4dtDWRr7tSinRSK+TsyjzESwHFn64AN6ChsCaFG+jPW/7bKfonzDbzn3oXxkzyOwTIHZlPz5NKF4s6kfwJSk0jBq7vAktf2cwaiq8U/TNVjPpem5g= 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 1587929830878786.6676176160983; Sun, 26 Apr 2020 12:37:10 -0700 (PDT) Received: from localhost ([::1]:43702 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSn5O-0005K8-3H for importer@patchew.org; Sun, 26 Apr 2020 15:37:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47706) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSmud-0001Cu-Rz for qemu-devel@nongnu.org; Sun, 26 Apr 2020 15:26:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jSmud-0005nJ-Cz for qemu-devel@nongnu.org; Sun, 26 Apr 2020 15:25:59 -0400 Received: from mout.web.de ([217.72.192.78]:42417) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jSmuc-0005iC-P7 for qemu-devel@nongnu.org; Sun, 26 Apr 2020 15:25:58 -0400 Received: from luklap ([89.247.255.95]) by smtp.web.de (mrweb102 [213.165.67.124]) with ESMTPSA (Nemesis) id 0M09dQ-1jC62K0IlY-00uKv9; Sun, 26 Apr 2020 21:25:40 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1587929140; bh=6pc9YXNKhuW8jIo+3vRiEjlLgHIMsoHErd6rjWBDDRk=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=YwWoBmLJDlw2wpSHh/fJOU8LgyEgfCctJzFNUz2fLQgmQDjWXa4p2VbSWVTfp79sn Zn/beSM+eQDSPpP5nlMHUJ43SMiIykmao5frkaFpmGjgtokJK8/4n0zdSUL3b7i4uY xnWDGDHZpn+z/cnkp3tKiC5Uf6dMRPYyTEJLen3E= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Sun, 26 Apr 2020 21:25:38 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v2 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_/x=njM09_KyZCR5NOU5o5MQ_"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:JlkzBR+7HxwSYRWS4OUWJUhDmB/2kMywrHnAnQ7UBqYh9h9TwMY OSN0sM3cSjIbv5pVtUHzVzfsUryRTwkgSOAANyr3ZvMtH3ljmxQpqqLecn5B/C3Mvk141SK ifaZBVe+AtJMC1568mz5q32eBGocLXzs2bTCnfPUur13xebqsi+Jp0KZXXdtIn/c7HmpoeH 0F/C6zP3GV9imHhGfVdZw== X-UI-Out-Filterresults: notjunk:1;V03:K0:6xeLxWDG2qU=:5pgQqo9w8wXgC8tnJlxFYC /dWZ6e+qeO2jBe/nxW4tG2AQ/uebqafJwMlowJUgSnh5cDtIOGBEahxSSjd/6bb7rbs+xfPVo 2aSC2pGBrlrXZRiXYSqSa07XIi8XLWJ3WUVd5i8wzth3lyPRYzYvX1uWrfDf3AloC5K6upfsr jDYE1OAlqhGm9x5qSMUfkZwBEm7Y4pcuGYkit5WTqpdr8VdQsero4L7YF2IbLVFlpVEXLgooH 6pTR6shmTyNuyt/t41GoJdZLKXdQ7bdDUYHxuBmh8O37w4bCs7A/zAy121OzI1KLLaRFrf5VX 0ylqlCSmYVrgoWbYaiAfdYxjiY3+PR9hSwu21gObkX9yUdrY7+8lWCxN6zsMJ+rXPXCco+iuf PhfluGigjxxo9Yx/FLuffR2YzcAITs5S4yearA5GRy9GNaVd3AjaE4sDLmbqWGiZUVeuF8Ico 13LlgvHfZ800BzHYMy/vpYXkC3F3VUSdDoDTFb9vy50/CFh3NW/ZuddyHFu/tcwUIszTnyj6m s4fiQvHSN12EVW8bH47eNCxyLw9LL/mg4hrFQzd4QsOUKpWsVRzN7ga4NIQgdtqQbe2jJF1nm 96Rq5ONiVqDZjaoJ5GSBTU19jWJ5sJmP0Jv9kej/8TvA4znxz2LnCodHIr7ZKjl4zBSZBs9rj foXikZLuNDr68GBLUMdKHVt74Ptj1GKVi2ACmVh+DNtZbhcTnYrE8KL5W1U/b7T8SkCey98AA Dz6Q2RiDp/z6hoToPjkA3RdVvBtQO35+XH8vjvhPqifjhnaHp/CpfZH0osvcFlPgvSPHTYthx e1YRN3zv4tV7e+m+ws0Z9hXrgiJHguflMMSs65V0HHVCoKG0s2YeJnrbA0OPOjUkeXxJxhj/B 9MZbqhAbLmIS2ZecFQZfftwrQdE42PjooyOtwIPLHv8Gj+Z06J55sMgctmYGRBPO4k5L6xZ8U x3m8+kSeFY8nkCxj5I8HAsOV1ER/n2MkncXiAa0biW9Yby/wuE01UrZ/KGAPTegP4riMkzY0v k/S6b7W7vJjvnWdLx+RxT8PcNY83Eu3DhkOW2/ja9SuenoFP+OPHZINlkaQZgflVquqvjOGXm ZY9GHH33bhLyW0xERNjVN3XICCbmh7MH1Z9C6/3wPjy37XQoFftpv1zCSp3BUZS48SBIfm2K9 iXPTQFpeB/YNZ/q3Ot8tkbL28saenzB4uJR2oajld0iq6lmQQXnnV1fT6iMjD018a+MwAbpiT 7hrqexU+pyMGsAB6s 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-detected-operating-system: by eggs.gnu.org: First seen = 2020/04/26 15:25:57 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] X-Received-From: 217.72.192.78 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_/x=njM09_KyZCR5NOU5o5MQ_ 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_/x=njM09_KyZCR5NOU5o5MQ_ Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAl6l4DIACgkQNasLKJxd sli/Qw//ck9gGY1Er61CekXwYNaF89ZkAUNCiSrCM0bX2rKoV5exbreMgV1Vx3wa MpCJqDcOsIk8izknKGxnmRj5XAFVy9XoLmegx1Agy/9leBO9kGhiDFjdyDTcDLuG v4F+ttgO46w3F1yLUm1o01GkH6kna5BjBcH8Q2qH8Ue5Z5eZiaz/oZNVfSgd+V1o s488UobY8bCgKX95hhfhauF/wcmOdxNuAuAbSvK9EJNC7u3ClX+65L9urfUcAzjk Usb2bjelVfx0g+xyVMs6hhWG4AjKFFhttyz3tl9MM9QVyl45cgY24zDiPALFY7hN wUIR2W2KzyWa/KE8nZh5KaLENv4KKuxjnXNifIlfXPkDxWqOGQgq1FmUXX/UHN0P 3LHGoSD88CoeCH8QIfoLUK8jAMlCh6ne8qe9thxyw6TlQvKAhuCn1DBQwQgAE1JR bP2AiX0+9nitcS7MGbTcBfCslQYRxL5CWhh+X99O9vBr97kzoFLVVC50smOi8HNm Th+JQ5X5uQHIZU0aPPH1FGdA/dS6xuZVi8EJSiP37Ma/O6intGADXs3azbeceiKg QrpjdFIqAevF+TQVsgcgS9vG0X2E1yYgavsjf1qu+YG2yxyK6dySAxH2NF6/oQTL IjHverPi3dIX8823boOO/tKPlvqvVu2DbGaGJlK/Har5KdcqrM4= =UUtZ -----END PGP SIGNATURE----- --Sig_/x=njM09_KyZCR5NOU5o5MQ_-- From nobody Fri Nov 14 12:14:54 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=1587930651; cv=none; d=zohomail.com; s=zohoarc; b=IXO/OS01kLDTH7ipRE24PHlLTgW1+14qluZ0+I/AADgn+EVfjRQfkIkgz6REM4t8xmXZaFdutGkYvN/FMsaEMBKcBNY31Q3wtk+HtcaBdrYoCcw4U6KwG4vJrwV+s3S7Gaoykjfh6OvZoEzuQ1M7BH3Ruz3JRV4S+monhb2dT4M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587930651; 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=EJe0tUZwaCvqg0NuolpVAaFvIChe5fFzbEjA86ndVo4=; b=kUAmFUxqwa17/VpjkrUz5NFFgyFKs3CNonBJgab5u3U///D0euT7HDprwTXggsp7ZsTeOydphtuIUwxOyTuC+bneoO5jYN7GWQJ8i6cpudeETfgqaqpUP0FQTKW56sdpYKrJfnUc5ZpyBdEDFw/a26VhXYsH9HZ6cIq6TTIxBHk= 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 1587930651060983.0952923832269; Sun, 26 Apr 2020 12:50:51 -0700 (PDT) Received: from localhost ([::1]:44126 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSnIe-0006SU-77 for importer@patchew.org; Sun, 26 Apr 2020 15:50:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47700) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSmud-0001Ce-9R for qemu-devel@nongnu.org; Sun, 26 Apr 2020 15:25:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jSmuc-0005kf-QG for qemu-devel@nongnu.org; Sun, 26 Apr 2020 15:25:59 -0400 Received: from mout.web.de ([212.227.15.4]:55933) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jSmuc-0005h4-7d for qemu-devel@nongnu.org; Sun, 26 Apr 2020 15:25:58 -0400 Received: from luklap ([89.247.255.95]) by smtp.web.de (mrweb003 [213.165.67.108]) with ESMTPSA (Nemesis) id 0MeBEk-1jqOrW1Pna-00PuwV; Sun, 26 Apr 2020 21:25:44 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1587929144; bh=SxlQe2CwqaYOqz1vCvbqvBcqvHod26E6TNFCs9tSaPk=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=OF9jbFvc4e23YG2KLX13/j8t1ExuQPQ3kC+4Fnq0bUtvBDyxLd+CT8i4KGwbwEaTC D6Io6/bylklu7p5y6hXLNioI3LlrslPWAyGTdqoWo7zcfa34t7YyTYdHkfSPPAH2mR Ty2coWoDT49oDIY0a43Q6A6gSO5mMQDDikTVjxq0= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Sun, 26 Apr 2020 21:25:42 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v2 2/6] chardev/char.c: Use qemu_co_sleep_ns if in coroutine Message-ID: In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/Aqe2/2N_.tbJ4e=37ffi_AM"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:2g0REWAPIPYjxMb5/6MrQGa6gM7ymM0942qnJLo/vDtcq9ytUOf JZIY4Pu4IGkbb2C8CQzatm8pyRGfHVN1RctNP/lXH8qlAy0jfxsD45NSY8xe7wnFjCfwwKX /vKE9jx05JOeHKjv6CCzrs68XEsO8N8Z5UekYICXk73TLHoLm/XmSKHELSaj+A87BRxW7Ye ESphm3Ud7zopK+0jZaN6Q== X-UI-Out-Filterresults: notjunk:1;V03:K0:TIi3+7IszWQ=:b43BOh/4dXD+72dOzSJtbo BTsnTbVYbsdbyIApiBvg4wMGhtLc4nktV/8bZER5Ifh9/Mahhg6Pb3V4Hg3PGOuRyKYo3jpSr G1iFF371ncDL9r90f4un+i4Ra8suINGT0K6F5BGMEOVK255wRdRC9OTaebr2sCo8QUjxj+T0N fbm//ej+8pFhZdYZHRSHuAh1fLho227Yagr3U/OPaDDMniM+z8bHXpXxgcjlVfzBV2n97UmnQ t7TnuPJXfTeIHUtRX1Ci5+b6CS47PEt8yeZ+8qDGqLdB9Lh4EkxjN6mDc4N3zax35l4V8J7uf a0pKbg60i29EO5Y3G30f5KMFd+ct/oTOI4HNIstIx+d+RDAd5CBlZCpuTRz9N61Gu8Ns/vcJF s6/8zYkvdqkxLmpvgzm2vn79HPSQT2push3tY6VgHkGM8WSMHIcG44Rvl2LVCeqJ/EWhp1DXE rcfa7/+IjMUW0O7CIliDt9toOaJjfiV7r+XmTWu4fBdO3B3LcPGib1SVQewT6aIum0ABNEIMD zbG6cmh65lLN6VI6HGNyfmiQ9GBTddFRqPlGAUw5NgF1OKUqwLBf7UfSSF+bCqyiO7gHC2rw3 Xm7cLdwlWj3WQ23dAH8inGt8+AkPHLzFjGprZsvDDID5Iigrtwl1UmmoV0Xe2IZRQ1hI3rzet 5m8lXqzW2yLWjQqMtaBY/DNDkAlZDz4ZtU21vdbjX0HBh6V38KXMpvB1ROBkPs/SgP1ccYPvY VDK27iVPYw/k+ySn5Y/jEElNL+rCPmhbVLSBsYvXQyfoifCU+NkketYP5akiaNu6SYGFy55Dg eiRcSq1IcGuCfHDywMAO3KRW/FmsuKsG/uWM1nVNlggEjOflvKXKFLbqblbulleyp6Vcipp9W jmEBcKEvvA+UPCSFxWVWjFNOOxDXd8mDW6dEDpn8r5ApigZ5aZZFzfkUspq3BuoRrpeDqdtv9 YJvFzXemDwrmQ4GkLMSqUt6OBuqKCo0Zv37w8h0JkbsgmTfILQ4vOWoLx2SUxU8D9FauL6QEb 9A3qQoDlCH6hbOFrl5NiD6ycam3i1LWjR943e5eaaKXDuOsi0duaD2Lk3gBPG1rpj0pO2CK5j exx5Tdr/UCMkoTcR/kpxl61NxYZXh96evMHk/JPcuPMC+DLhkTflgtTy0tKbeZfVTOa5Ojltp kTxNV5Q4a7PC2/lCVOgo4IXg645d5owcWGC9tFvU0cpI0kWq01SacdWjVpYs+ysM7HPb7yTT+ qa8LO2vE9yn0PWYFd 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/04/26 15:25:56 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] X-Received-From: 212.227.15.4 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_/Aqe2/2N_.tbJ4e=37ffi_AM 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_/Aqe2/2N_.tbJ4e=37ffi_AM Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAl6l4DYACgkQNasLKJxd slg8vg/+IrcyluLr3HlgdEpvcoJbdb0bZYpQ/v3Utb+ElmpZaEqjrLtXMRUPd1c1 PS6y8CIt+F3D2iXvRKPtlT3Z698XS7WbiKNTafT19oyxEOHvta7zmps3iPuDXrz6 LFnhO14zhloajoZcsX104ZsIye/xzXtUUc+rIAgGkXaN/DQwp19M0fGPAPmYfgWl BkQSChiRr+o4MzKKXS2tGmi4Shc7CTsclcYpYDkVzL4gAadWEPePilZAoH8k7BTi cCNVRVB5soCTY2xFSMwktY20inwddOwwRyty4nuCCfSdFuX9qw3U3/8TyKfxgQh2 9v/k/UaUGUxtgCP330mLPMQ5gW405f0e+cp0aVpjEm1B2xuUvXrQW2/3xCh7Uynj 2ed6BccdA7kMfUh0BnFOn1IjLf3V3P7ISedj9jnHYC8e4lA7gR/M+CjzPALk3L/G yYdtl0+HVAchx2CL/Li6etogVMwkSzdxmEL5KkwCDfuezx5ZNQzP0OGVucZ8VVn9 FvNnk1Huzgo5irnrI4J47GiI8NXzhOS8vwfbHb8QW9mchaC3FwPYmI80D2gZnwiV U4OEJH3ckCq1ndXJNckZvOhHFlrsxNwo526fo95xr8ZdiWAYmDTYgx8wHw9HsAhZ wHQacLSmYAINTx6LMlgDcXdco4z+3WRyPNo9F/JGvqe1ZSzHEIw= =mqPJ -----END PGP SIGNATURE----- --Sig_/Aqe2/2N_.tbJ4e=37ffi_AM-- From nobody Fri Nov 14 12:14:54 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=1587929860; cv=none; d=zohomail.com; s=zohoarc; b=OW+yeRHlvau/oaLprOy5TkiIprhAQ7aiDq9if9WLSIP6RMz0z46BRDsrCu/C74Bdi55ygcJwDD5GKXh35YiQ6U+RwN5S5YRwaXIiSDVBc7uIAl+oQDTX8vLVgTzAusW6I2GA4eqg7pkOJWu4l3sKuRsGZGIIvTPCD7qoMwqB+rc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587929860; 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=byX846oc2bbUQWUb3lkY0XM+g05GYUSVl8fW8HwGJL0=; b=ckEy8IpVRmbYdW7KMuMpLMDBqn9CXJhekwLzmd00TSTUXDyPoTbW7XfZJoZLKItA6BLRG4arobK9vduF1GUxfN/ODnx/6AHLG0qGZFiI3/cSAL3LJSnzb/kogmOjvAJBNJuJakOjrHR5pcAVz6qwWJ7mOP9ABK0IM1qAH4DX5+s= 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 1587929860132517.9184959978359; Sun, 26 Apr 2020 12:37:40 -0700 (PDT) Received: from localhost ([::1]:43710 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSn5u-0005fz-G3 for importer@patchew.org; Sun, 26 Apr 2020 15:37:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47736) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSmum-0001G3-Do for qemu-devel@nongnu.org; Sun, 26 Apr 2020 15:26:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jSmul-0005z0-Mb for qemu-devel@nongnu.org; Sun, 26 Apr 2020 15:26:08 -0400 Received: from mout.web.de ([212.227.17.12]:42635) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jSmul-0005yc-4N for qemu-devel@nongnu.org; Sun, 26 Apr 2020 15:26:07 -0400 Received: from luklap ([89.247.255.95]) by smtp.web.de (mrweb101 [213.165.67.124]) with ESMTPSA (Nemesis) id 0M7bYJ-1jEaCp13aR-00xJ7H; Sun, 26 Apr 2020 21:25:48 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1587929148; bh=XzyQeeYA8Al951pEnCzxGvm/pkLkir9rATgvuE2V/J4=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=VgPHS+gmzwV2MWLkL5O9vtOEQZJipeDjLtFu3+Id43nCaPpcTCBH2kwonKaAjCcQb Lhl8SnsSMNVTalccIFHGW85Mheqb2V59/Ebz63nCG4I/7Gn2gkUAxpIjCiuwuVLecG MEGXKmxaEIBYcMLnXV99xx90LslF2b6Q4LUt2o+g= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Sun, 26 Apr 2020 21:25:46 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v2 3/6] net/colo-compare.c: Fix deadlock in compare_chr_send Message-ID: <6f3906393aaaf0adf21d45a5bf7a41536c7de205.1587927878.git.lukasstraub2@web.de> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/xtl4VBV28Z=XH2MY_C=BTlx"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:cNCVc0bGI9NWmdiseP0KzPxT8y+z0bSMKMaRe4r/tQMcxZDJaAR oRzHXYtKiAR+Np5qImdfguvEOdZduItN/D+GPQS0sM8v0HqpD+YxY6ATT138XY3Eu4VmJwn ANWXwP4wwY4xOQ2nQSRextNKSd6+6uCY5ZzV29EAlzoT1g86/lFUNpELdtdvx3Y9XyDmzNW 4Xd1OMW0/P+tMUHe0ycgw== X-UI-Out-Filterresults: notjunk:1;V03:K0:n5zX3LLSY5Y=:+oWp6sPNj/6+x71QfvQdAw WkR2zuiN2umGNaqBZ4ZaIoKCBnOObdYCOMV+Rs/sT+U9KovG2rbdncN3UV0JwkWQA5r6SoIPk UcxjWYBIfmtitS8r941JnDdry3NqkDTK5C0HtadGmQu6OXf3hlWip5Fp3zpfGXWjQigP8phMy RezG7Hj6xoyBOrciFUqxpbHw5h0ijE8RtYpEq0+LBb1HI/hUXnNcgSqzQMl+E5IQPvyAWp+lp UatQ7yLLsujBmu4JYJOUIkRpchXInWZZl+N/VtX/QOaaY5MjRsQ1U52OWykf60wHWri3pvto9 fDIuAvtmzewwfaZin6wbOpWnfS4g163FQKEliFOfiCeOiZplIWhMPYOLS/xhtYCi7GhYGg3F/ CyEpgCItt+S4z3Ng8xPFkCa+RSpjxA4XJXmX0Hv4sAq+CVvd8CDk0gMZrkyL75uzItW6UPww9 ZYlKS/HSyUMqPHndq89Rf7HJsVr4UK70o8ylX7AgcMx8/Xf9q6bZnfoV2+l9gF3EIgujZbdJL a2lA5d+Cuto3UOCnm8QCh0vX5MRzuvTZv8ERDBMBPGKlmvpf18IUCpJm35OwznItSutodskmK mAc3TX45NERbVuyGiM7o8N+WQ1LrGoqIMwM7ywpgbyChSZQj59pMWzuHICspUY6W0Zahooqr9 iblHayOawgQkJS1tFHXv8WCMNGYuoqd0BJQpsa7mKMkqBxofYZ3JWUN1cVgV8avrtEX4ymnlL VKL3KRHWdM5m2B5U2fW92/2Xm2Bx2guRQ2SJxzwYY8pNgk7TGEfk8BBfYt1/QUoVAzoj8fIyd Gwp7B0t2muo4LrypEjjI1fU0pMdgvOObT0tXPGnfcN2is6+q0N0HL4dLoC6wy0qm8r7lWJP/9 3ZzuOC3nVpbY4GBYvSHdb5XQdC4ugi4pj8XMR0/rcGYOGCqj7LGdsmjF7FIPgdPSb9nu0kWJ3 UuklwVV5w3lZ0M9VI/32N6qcK4lFpMbox0r2/LLvEayOSkYvMkBuI33cTpp/mMFa2ah+JjILT Ckf52r/DmAj8S7EYlzMYPJJjRupUDmDPwfJSXBh0J38ubcnuskU1xhhAJQO0oqKFoRsJf6Djh DpUjWdAI2TInDVjH/qBmzOqD6KV/VHmWaai9uS645GWeFZeOJ3hOmaemj0rhy84uJ7z+nTrWx UeXteGR2G2382tx+C5q0MU8/keMcsWDyAfGeAZVDLD5HtzYDw4wr6OLHVDTI6bc3n8fTPnrQe BbhIsfdrczEuA1++J 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/04/26 15:26:05 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] X-Received-From: 212.227.17.12 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_/xtl4VBV28Z=XH2MY_C=BTlx 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. Also create a new function notify_chr_send, since that should be independend. Signed-off-by: Lukas Straub --- net/colo-compare.c | 173 ++++++++++++++++++++++++++++++++++----------- 1 file changed, 130 insertions(+), 43 deletions(-) diff --git a/net/colo-compare.c b/net/colo-compare.c index 1de4220fe2..ff6a740284 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,20 @@ static int event_unhandled_count; * |packet | |packet + |packet | |packet + * +--------+ +--------+ +--------+ +--------+ */ + +typedef struct SendCo { + Coroutine *co; + GQueue send_list; + 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 +108,7 @@ typedef struct CompareState { SocketReadState pri_rs; SocketReadState sec_rs; SocketReadState notify_rs; + SendCo sendco; bool vnet_hdr; uint32_t compare_timeout; uint32_t expired_scan_cycle; @@ -126,8 +144,11 @@ enum { static int compare_chr_send(CompareState *s, const uint8_t *buf, uint32_t size, - uint32_t vnet_hdr_len, - bool notify_remote_frame); + uint32_t vnet_hdr_len); + +static int notify_chr_send(CompareState *s, + const uint8_t *buf, + uint32_t size); =20 static bool packet_matches_str(const char *str, const uint8_t *buf, @@ -145,7 +166,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 notify_chr_send(s, (uint8_t *)msg, strlen(msg)); if (ret < 0) { error_report("Notify Xen COLO-frame failed"); } @@ -271,8 +292,7 @@ static void colo_release_primary_pkt(CompareState *s, P= acket *pkt) ret =3D compare_chr_send(s, pkt->data, pkt->size, - pkt->vnet_hdr_len, - false); + pkt->vnet_hdr_len); if (ret < 0) { error_report("colo send primary packet failed"); } @@ -699,63 +719,123 @@ 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) { + CompareState *s =3D opaque; + SendCo *sendco =3D &s->sendco; 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)); - } =20 - if (ret !=3D sizeof(len)) { - goto err; - } + if (ret !=3D sizeof(len)) { + g_free(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 (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, (uint8_t *)&len, sizeof(len)); + + if (ret !=3D sizeof(len)) { + g_free(entry); + goto err; + } } =20 - if (ret !=3D sizeof(len)) { + ret =3D qemu_chr_fe_write_all(&s->chr_out, + (uint8_t *)entry->buf, + entry->size); + + if (ret !=3D entry->size) { + g_free(entry); goto err; } + + g_free(entry); } =20 - if (notify_remote_frame) { - ret =3D qemu_chr_fe_write_all(&s->chr_notify_dev, - (uint8_t *)buf, - size); - } else { - ret =3D qemu_chr_fe_write_all(&s->chr_out, (uint8_t *)buf, size); + 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); } + 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, + const uint8_t *buf, + uint32_t size, + uint32_t vnet_hdr_len) +{ + SendCo *sendco =3D &s->sendco; + SendEntry *entry; + + if (!size) { + return 0; + } + + entry =3D g_malloc(sizeof(SendEntry) + size); + entry->size =3D size; + entry->vnet_hdr_len =3D vnet_hdr_len; + 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, s); + sendco->done =3D false; + qemu_coroutine_enter(sendco->co); + if (sendco->done) { + /* report early errors */ + return sendco->ret; + } + } + + /* assume success */ + return 0; +} + +static int notify_chr_send(CompareState *s, + const uint8_t *buf, + uint32_t size) +{ + int ret =3D 0; + uint32_t len =3D htonl(size); + + ret =3D qemu_chr_fe_write_all(&s->chr_notify_dev, + (uint8_t *)&len, + sizeof(len)); + + if (ret !=3D sizeof(len)) { + goto err; + } + + ret =3D qemu_chr_fe_write_all(&s->chr_notify_dev, + (uint8_t *)buf, + size); =20 if (ret !=3D size) { goto err; } =20 return 0; - err: return ret < 0 ? ret : -EIO; } @@ -1062,8 +1142,7 @@ static void compare_pri_rs_finalize(SocketReadState *= pri_rs) compare_chr_send(s, pri_rs->buf, pri_rs->packet_len, - pri_rs->vnet_hdr_len, - false); + pri_rs->vnet_hdr_len); } else { /* compare packet in the specified connection */ colo_compare_connection(conn, s); @@ -1093,7 +1172,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 notify_chr_send(s, (uint8_t *)msg, strlen(msg)); if (ret < 0) { error_report("Notify Xen COLO-frame INIT failed"); } @@ -1199,6 +1278,9 @@ static void colo_compare_complete(UserCreatable *uc, = Error **errp) =20 QTAILQ_INSERT_TAIL(&net_compares, s, next); =20 + s->sendco.done =3D true; + g_queue_init(&s->sendco.send_list); + g_queue_init(&s->conn_list); =20 qemu_mutex_init(&event_mtx); @@ -1224,8 +1306,7 @@ static void colo_flush_packets(void *opaque, void *us= er_data) compare_chr_send(s, pkt->data, pkt->size, - pkt->vnet_hdr_len, - false); + pkt->vnet_hdr_len); packet_destroy(pkt, NULL); } while (!g_queue_is_empty(&conn->secondary_list)) { @@ -1281,6 +1362,11 @@ static void colo_compare_finalize(Object *obj) CompareState *s =3D COLO_COMPARE(obj); CompareState *tmp =3D NULL; =20 + AioContext *ctx =3D iothread_get_aio_context(s->iothread); + aio_context_acquire(ctx); + AIO_WAIT_WHILE(ctx, !s->sendco.done); + aio_context_release(ctx); + 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); @@ -1305,6 +1391,7 @@ static void colo_compare_finalize(Object *obj) g_queue_foreach(&s->conn_list, colo_flush_packets, s); =20 g_queue_clear(&s->conn_list); + g_queue_clear(&s->sendco.send_list); =20 if (s->connection_track_table) { g_hash_table_destroy(s->connection_track_table); --=20 2.20.1 --Sig_/xtl4VBV28Z=XH2MY_C=BTlx Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAl6l4DoACgkQNasLKJxd sliYkg/+O+kCeGrzo1km9WUIdghAAtkzzEIBzU2eKKZQwH8NH7GtzishGvRsHbIg 7d228PCXMtokIai52TXwisUUTd80VxPbEEabww//CLtF6YtJ4z2N4M2S/3HShVsP bDa7xFHftl7wD9+1+6yPbKUfvSi7+sCF6Hv5gZ3t13pzxBsYdubrZBP2Ylfrjynu 4KZd8HfmDA7e5Le9B98+oYHztbWrOp3Gez7N4D99HkYMoLxARsOY5H4QMSHzWijm ZrhYsXdJ+xHW2xofwphEGibfpZKYBKqmq2TUm1NvJNH4oDxSR15lrZb+H3XUp0a9 M5OxWHf1Va7Ij0Z2A0rpTbDPcC1+KAKn99pzcXxuUtuIR1xISDfF+Nkt8qekZ1jW nAaxru3dnGwKBuBNKNK+Qh24MpKQzpSWGdBLhVyCi8WHsz9nKxnIEPsFjT58JKwd 0sYPd1B6IgQ7BAzmnxTJTthmSj4CL7yL9PkLL5uKy31KH5lX7Tm6jIzHV98qUDD2 Uo8QdjCC40lZewydTAWksZ0JXzeFPRSIwJFeS2O5xWk+KzuHwopch83s78nKsT/w JmN11AWQIM/Z/KnrJS4xVzEHONbGcD+juhLZeHhHYXiHP+gUEvJ1yrKKEPl4k7Cp V4hNhJ7qKYk6Le4KjvBbd5fJ2tdo+bhqRZfcIek4wPL27MQ3aHM= =MiV5 -----END PGP SIGNATURE----- --Sig_/xtl4VBV28Z=XH2MY_C=BTlx-- From nobody Fri Nov 14 12:14:54 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=1587931371; cv=none; d=zohomail.com; s=zohoarc; b=EH6N9Fbgkye9EJ/hh1RNdnIfVQ0KiGdO2QFqeR42YDi0kqMd/qvmp85+DD4x/c489fytBXAj3ye9Bi/XpHQVlUt7lCADbLO7XSMd+az5Y4M00edbiWvraaNJGV38ODBJ/A0NDEKlcco7wWkJxS2fyHIE7z86gNERTzFNNZzTKbE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587931371; 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=2PFCEuf/EDMbllbtt5jq67L0iXeE8P2HK7H2SqXoexY=; b=FPAc5PwgFVLzXr+X2rv0yzs/TEeHfvlJcC/nXuP7UjajIxsuVSzG+z9ndZdLpbWqUlzrY4VpFg6jBjlZCUuT26zBFJJCk0PiK1R3oXv+TrWbAChEM4/mHnKS6cmjB6gFRrDGU6VRPyv04ml5562PHW7x2CYB8aJAToKmUYYJ+UA= 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 1587931371768295.05424272446044; Sun, 26 Apr 2020 13:02:51 -0700 (PDT) Received: from localhost ([::1]:44408 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSnUF-00048k-U0 for importer@patchew.org; Sun, 26 Apr 2020 16:02:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47724) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSmuk-0001F2-1H for qemu-devel@nongnu.org; Sun, 26 Apr 2020 15:26:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jSmuj-0005yW-LS for qemu-devel@nongnu.org; Sun, 26 Apr 2020 15:26:05 -0400 Received: from mout.web.de ([212.227.15.14]:42449) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jSmuj-0005wu-4I for qemu-devel@nongnu.org; Sun, 26 Apr 2020 15:26:05 -0400 Received: from luklap ([89.247.255.95]) by smtp.web.de (mrweb002 [213.165.67.108]) with ESMTPSA (Nemesis) id 0M9GcY-1jLcQb2ATG-00Cixk; Sun, 26 Apr 2020 21:25:51 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1587929151; bh=6+6MZT8Ab+jZgOaD9X6OGDmKx94FIwONlN3kC0VukBU=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=ElEB1RDhB/vBAqotmLPzwiJJEexTvPemiTihzpa0kChZcZq7ci818uyljehMBABP6 BS5cH5oFTztRwV1AyVVa35b9pnQ5dWyykxhWBvRLp2YPYakACUGAXqQ1atTdGyLuS/ UGPlSHYI73ojYitHrke52n/7DRNOUmt2GaDYc6PA= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Sun, 26 Apr 2020 21:25:50 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v2 4/6] net/colo-compare.c: Only hexdump packets if tracing is enabled Message-ID: In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/cM6k0gq=PlFfK0vyhPpQgAu"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:n/rkiTd5GDj8kGwOKPJTmNnVLS3yb9EWFozZ2/lP9XJJeeqlxmE t/bSY9rkkFJ2cQVrtmHnFDtgtpAsq6iZGH13igU013IO1JeGtTXANejP0do8YKawR/YQzo7 OUrn2+7fnrBMlazTKhPKCY2gTzF6kd3PNWVHWuuPev/rsfqRkh4zD6czHfwyDxQuzR73Z44 USb8DcuxwhxG42N8CFkyQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:rKjFoMJHE5w=:KQImwCN4slNzRykidLG3Iv YB/R34hhoU8ezdQiaf7MZYcrQk7u2+eoEwD0i5v28yB3sGD1Dt+Vhog7dj1uaGWcLArGW9A8Z Yg974fgmvG04mD7vJFbYgJlMsz5gujUGS9jOCyguw8sQ1DToIKuhOkSF6P2OljSZAeY8k7poE V0Y3T81Neg1LTVCdZEbarwIw00KgJTpcYpWrAHiamnG3/4dw1XTeBF54U2il3CovvOSgCMDyP XBVGLI45aIRvoQkS8CBnkSOPSzZ1jbBnQ/OxX/J2Htkhgzpa72uKMbuLXCkpt1E5dxLBk+gH+ sDfJNpJsljy8Wv8/BcB1LO5tU/PkT83Ou/RdxrjfTmTYG9/4UIe1leCmpNQ66Nd9Lwc39j5nH 1qW/+DvXVZSB85H4c6ozXXvfNUkqcBbOStQNvN/mmJsGIe4CVjZlj4FPefzw2RZbfoUn2QaYx C5r2LQ5qGlXaz6UNoRwHxMvlebMLIFApzBmd0c/H1MlelE/v0cOxGKtfxwQVGs40/8i6kqc1p 6CVf4pO46ICX+maS7b+1FGQdzgSmC9XGH8o00uM4SLZ3iOLiMr970HdW++XYKa4++Qwp5P4ug mJyjpKYY4QnxKW5IDVzil/VNmTJ7bBd0QD7zUJyyytb8XyuASsYzO8P/6hnv2dABPCUAk27k1 Bs+YDSfMOvQQfj0k0bajPw7JG1GjB6lXgLwyC7Qe9BiDW3pUvM8uILVTR4GAwRf/AxxngyQk5 8crI0jEyGtx+CBVloNpox+53MBhDQaoe7y+XPrn6sT05oKS++L3HWAxWVEOJNIVYRuw6RQRq7 ZlZilYCwKEU09UAnDu7KsKNJYuBlJ6LMINvRtHrMSqnrJFOa8uWst6mjGqcTMyoFLXaBv/3Tq whnNAKsRMISPCrE8OvZXlvAfoWpUaqxZz/eHR7XkClwOmoQVUI5nhCvNfC5Gbyk5AB5mGyolF rCaKPli9Fay1TQPvZgVB+B4BBdFRBpvAawUQhZkdgR530w+wGH8jFBsXLnTQQZv4UT5V/R8il n09LdSfBuc7gg61wfqs4wBbVLYMPoXM29Y20f/rgsRjXU0iW/JkI1rcuAgsoixs2dJXNEnVzZ 06JgJAp1eQLL6Zf5DWauGuswkUtifFLpSJ/XjAaGBQQE7hksHcyrX3WW6HSWrlyuFKE7orm6R AMQo1We1QSw9/AAf/UG54kBHYmhkiII5i8mwJQ3hghMaVcSmcTMw88qe8S8sNUiZsE0z6ckPX zb2bw4DQ1+2zhcN66 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-detected-operating-system: by eggs.gnu.org: First seen = 2020/04/26 15:26:03 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] X-Received-From: 212.227.15.14 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_/cM6k0gq=PlFfK0vyhPpQgAu 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 --- 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 ff6a740284..6634911770 100644 --- a/net/colo-compare.c +++ b/net/colo-compare.c @@ -479,10 +479,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_/cM6k0gq=PlFfK0vyhPpQgAu Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAl6l4D4ACgkQNasLKJxd sljQZw/+LB6oAtGmXKkiq7p37XOUdTRV4q6F//YHQ2i+AupyBZGDno2iUg9O66qv ZRgR7Nel76XGLDKRFZP/Ign54qHaYQE7VagkmEbvjcVNa7A5HLAgSK61980EPXss 4+EMGQ6tZpZLtwq+WY/SDicnXugIv+qj9s6RMZgErXlrfRuJNH6lTzli3gfC47RF AIYBhuNIM0mRgIup66124qWqPVwR8jlC93foBhSm3nQqVJJLwHJUtX3dNeh+ZiuT MktHfo0sftxMadSsABuHsnn8woX4nYoVW/pfwao1JYX4VvP64b0NoVWnZC7P3xVk YuEDtw4yo0nl/mCG2hrmpwzS1pU1DNgzIcPS+PztsU2k/nOtEKloxjdTaLb/hNzb gIdFTwrJtyj19VC3qle0B6Ec2Xn4HkJDCQspVAY0NQav2adlwFRmM85YE3tgOuEx FrIWX+Y+75lZF19ALagKvBQ80rbsEtwtGKyAwNczVRBt5KyZabEFjG1XdqllsMYl 1y+wPtbHO6bnhKdgd86HCc3+TR3GAc/o75iF7rCCo2pUmQyXfZqSxnRonHmUQ5fh JK09JKhCufZK49Rm3EJq4jwBeRZFTD3391oOrItnPLINg3KkBMkGJ0FayBqasTg6 kdXBYfrIExcldFKLf9psh5FjPaSjsVfoZDvVwQyEFtT/O/ZLh2k= =14Ux -----END PGP SIGNATURE----- --Sig_/cM6k0gq=PlFfK0vyhPpQgAu-- From nobody Fri Nov 14 12:14:54 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=1587929844; cv=none; d=zohomail.com; s=zohoarc; b=YlSY042pFh4fMJRPqvkI8u8jgxQKAnKMcDVdx0dzflQV4AMK7X6mXSd1ihZEFPVJlUmVp1G0Ofj61vxgZfVvZghR8tMXfEjNJ1S10nVJze3kP1AmK5cm3u7/MFAK/xyoCiBaNJZZittQbvxoCaEr9ad3thYMGD1dtoEdB9Rh1vI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587929844; 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=JEp1A3IoiI13Q4xKmuSfjT8Lpj/v2V5N7WNA+exnZbc=; b=bII0XF4FtWdbQ7UmzAgiKh80esTi8L2IEFRWVupUJ4Xm/Lk45SNJmb86gWSvxu+Jmg5RScMIxf5Oxmq4DhYMMMLvLQzetRq0dxMnMmMiWoqPzT7UFhmBnl6hYd9owGW59PWwcr5Bp3BVfGa6JBB9nKsLzLD7+PuR0aJj3fysJdM= 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 1587929844000717.4875790742208; Sun, 26 Apr 2020 12:37:24 -0700 (PDT) Received: from localhost ([::1]:43704 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSn5d-0005PM-Du for importer@patchew.org; Sun, 26 Apr 2020 15:37:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47732) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSmum-0001Fo-2G for qemu-devel@nongnu.org; Sun, 26 Apr 2020 15:26:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jSmul-0005ys-Gl for qemu-devel@nongnu.org; Sun, 26 Apr 2020 15:26:07 -0400 Received: from mout.web.de ([212.227.17.12]:40077) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jSmuk-0005yb-VS for qemu-devel@nongnu.org; Sun, 26 Apr 2020 15:26:07 -0400 Received: from luklap ([89.247.255.95]) by smtp.web.de (mrweb102 [213.165.67.124]) with ESMTPSA (Nemesis) id 0LyDph-1j5CGU14C5-015bYx; Sun, 26 Apr 2020 21:25:55 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1587929155; bh=B9XY0V6HG/toYTYIEUFnzTvAwLVvOsgRzhHhxFxq1Xk=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=cGSJkMsFmBDBtdDVqFRt09CcjauLL/Ew0xJl1i9Qi3TVKQNgH/E7ShYSIhW/qUaij VZZXPHREWD3vvxKSJk1VX/jCqBsGFqnysfiz+K171wLwAAMB2Xp0tcqy4icw6DGaak UbenyxpO5zw3ewUtNFVnf7tIcUmFaYHfDS3pwh3E= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Sun, 26 Apr 2020 21:25:54 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v2 5/6] net/colo-compare.c, softmmu/vl.c: Check that colo-compare is active Message-ID: <9cfb9136badd63804dab1331658803cf70d0cc3d.1587927878.git.lukasstraub2@web.de> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/Vu=4iky4fZqke8Lw3.hGaZ7"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:gTmJjSM3VizveceaIutLKB2t+8lYiqnFCFpGJpxZznR5WCtttvJ AFwabXg/wIsmkDIa4IIg6T15As+NhlAZx1wWMtCXHFn04PhL2SZLe1fJfUID/3GubncPCLJ FfSkq0G9bA54hnR4/Ytuj7/sLc/ZwPugHsTNTbRfTneAxIqtbYFtRBEbVKscQJ3MaUxNDv+ PhBFlxVDpnJ79S5zJJydw== X-UI-Out-Filterresults: notjunk:1;V03:K0:MAonEhhG66E=:LgLEuOyOngMPhKtIwkbRTR SxN6fLCrzJkFj9RaEJ1ySBDFQViFW08BQhRaDjU4Y6QnH10AuO6m/MeQDrNEAbh1xHygcX9ZH RJF5U//5i8km2b79RMMTnpSEdQkVw8wia292qh1FTQaF+bzhh2bXizPQ4kw3Q4GOY1/MIvpC7 xP2N/2PVOtumQJzbQAI80emzwneBQeBdh7E8MDnW1E5gmQpYkh/keCCJAWJ6OiITLGwk/grsq Xqd7+890nyv51na6tHRG9fy0pvIc9+PkIKGiwZ4Z+hNbqhiIMlsGWs236ZdjrhR4HpLbn15yS 617UgMJD1mT07zIwBZ56R1k7rbqI1lXyh507mNvfx9W/hfW1ed4po3N6CvEgp0RwsrUiqaQep xcq/CSpjwp7MU5EXhp2J41tIuwx3rtuuj16a5GinrKdG4pJLCw/hLt/qezvFMojSG6zUX7SgL p3bpHU25IPLLzhNo/F7UgPCoryLprWAX0V1q54afrX7eBwADtbjcUfn6VuVOhy4IMYqEAVAKP tayMHrCOAq2jNnf79RtokvNJaVfSdygiKf+Lraloz1nZQ1/t66Vtob9W702WsX3F0KpM3o2H+ SZwqIuZoukDOyJJhxFI2d2wsnGwI7TzxS0NgmKmjycSBl3QoG6loH5kI9TSvgbBWeSyOBl6Fp htx6mkPi1NGLxaQ/We3hZWU2YE0eQ/6HJs+3x7uC+0Zhg8dmxqEvH+nOMDM4S0smyih/GlYlS FfiRJ3T8rhJOi/UVZqpKqH4HSUELanQx/2fD/tLkZIE15BQZNbdtIf8mQo1wZXP7XAx6ZVhpp KuBBcQh5wqybXeZ35v4U8STiPqg5v4GB3Owrr7t3MG4OYqonvIaMTZrdjAOyRh8sF/R4GckYY nstaxWRoGNjwrNLt5RMmBGi7E9wvtuyN9B5Es6XJD6rUG0RjADHAdcf7iJbzQTQkmmn55Y3X+ BOMlwlXAqdXMPuppIS33OIqxv/wxvzEC1/fFtlucgNQIfWHlS8WFtzi5vc3oHOZhr0p6WYRA+ wfBkqQdRP5MdjqCe4uxe44pGHxYzIgsoMVGaUZeNsixp/1xiJimpN8vQPE1c6OZ/lZXciXh+Y gqX4jfMQkXCKEu4/Muo0YMnrUGICss6MzZovTnIO3xjyNXVaM4UzEYmFSK6PYe06WNDBBzU/U g5AjCK6XJuzZvaqwoJA445RKLuDGcsoKtDDaFA0Y/3EeJZHILN7y0hBeoyTr9AoW50l1gMkjY 2yc1vIHDNMKdwK6HE 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/04/26 15:26:05 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] X-Received-From: 212.227.17.12 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_/Vu=4iky4fZqke8Lw3.hGaZ7 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 | 34 ++++++++++++++++++++++++++++------ net/colo-compare.h | 1 + softmmu/vl.c | 2 ++ 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/net/colo-compare.c b/net/colo-compare.c index 6634911770..a82bb27a67 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 =3D false; static QemuMutex event_mtx; static QemuCond event_complete_cond; static int event_unhandled_count; @@ -912,6 +914,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) { @@ -925,6 +933,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) @@ -1278,16 +1287,20 @@ 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->sendco.done =3D true; g_queue_init(&s->sendco.send_list); =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, @@ -1382,12 +1395,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 /* Release all unhandled packets after compare thead exited */ g_queue_foreach(&s->conn_list, colo_flush_packets, s); @@ -1403,15 +1423,17 @@ 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) +{ + 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_/Vu=4iky4fZqke8Lw3.hGaZ7 Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAl6l4EIACgkQNasLKJxd sliOohAAgOgrkZ3qi8Oo4iy6n88/GJGJVI5fBWasZ/g6gG9uvqHYAb+e+2hJNP/C 3q+9hXRYUjnAFRyocSnJoYjik9wOj5wPwQOkoz7ZVgQq6ZIcBtkHX9S83H5hCC73 IFkCKdmOj/cAiIJY+1LWPsWpCK1SeYXPpasp2ok5ZCmrwjEeQLlxmAQQ69RO27Hu ZQ0bMzluwYg/AEMblNkeVEK7It4rMUACqpUemW3vhWVweOtrAUcZsmAoTY8qQiGO EOB5nzRCbmGPheoj5xLy5KW8pYf1P/ZCcXwvtfb/3m6r0cB+ZtvE3yJXJVNruYl7 1arP05wA4p1tcpCrnvoClKIYAMuZfGx2WeKw2Lv8HBRmkApfYNr8m6nFvYn17vey Z1xag12mPPxX24egTU7BUy5vYe8GhvM5QYbjP3286YYoBhIPoLhHHzqb7pMjWZKE odiLqvbzPxueCNh4vk3eYX1yYoChtBIRyrCbmfdT8Ekbze0cUq5XWkAApYbFzIZf 02nW0SmEFfFTbfCDbDCBRCpi4D8PrCyuouts8Y8Zeswhzv6efGFRlEV9fu0CbbYn 0mzUWkyn6Oq2zhZO0F5d/7HhjzFBZdUeJDxA6Qgz9PJZos6dS3lX/z+gEIlTBM09 iFSf55zVdvjvA5ec+JN17/Kh2DGddFmO/kRqevAVhJB14VfrVtg= =h3B6 -----END PGP SIGNATURE----- --Sig_/Vu=4iky4fZqke8Lw3.hGaZ7-- From nobody Fri Nov 14 12:14:54 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=1587930951; cv=none; d=zohomail.com; s=zohoarc; b=LMWvwd2FtrnM0jfZxMmNp6mweCIrjf/Ly4WAptGuPlareWMC9IUzM4hAOSZJGngsyYJVuLtPfd6C3RaOPvzt3FS/xBsSVZaT8buZBjWWgSk3SwSIEkKwXHjeLT6nDEQOx/rPYupu9taK265qEyVdxzhO3bUZBkRsyp39qB5XYpQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587930951; 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=xQmsah95n0b2LwxPjY+4kT8UZTCHUBeQznbSOiiKnyo=; b=c7u+LfvE22jwx6Ayl3Ke/zK6KrC1b6zfGsgHAZyK2lgJ0Qz4GEMs54mOQRT3gXKOc2K6Tf2CIBia8T5gRa7JsrnHH0+UglKy4ozZ5QJz668BRnHL935Nu4le/qmX2PDA9dDu1GpiaRcwFDB1HfP4Yh+TjB2ikQVvdL6qfPk7wYs= 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 158793095111892.99140688658474; Sun, 26 Apr 2020 12:55:51 -0700 (PDT) Received: from localhost ([::1]:44234 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSnNV-0008Ew-Ip for importer@patchew.org; Sun, 26 Apr 2020 15:55:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47744) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSmuo-0001HY-NW for qemu-devel@nongnu.org; Sun, 26 Apr 2020 15:26:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jSmuo-00068A-9i for qemu-devel@nongnu.org; Sun, 26 Apr 2020 15:26:10 -0400 Received: from mout.web.de ([212.227.15.14]:35121) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jSmun-000615-NZ for qemu-devel@nongnu.org; Sun, 26 Apr 2020 15:26:09 -0400 Received: from luklap ([89.247.255.95]) by smtp.web.de (mrweb002 [213.165.67.108]) with ESMTPSA (Nemesis) id 0MZliY-1jlyzR0G8U-00LUN2; Sun, 26 Apr 2020 21:25:59 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1587929159; bh=bn07OABEnP65wBkyNehkeefl/TDdh0u0fLf89mgd5jA=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=eoVUWUY3kz4SXk663FqDpQN3bNYwCjYShVVQnY47dc/VIqbNpI+JMrQ50bodTMV68 WQY/fC8SXldRfDl2aIFplqrv0V1W5t96Zl+mE84vE5PziuOSgu4OqJGM19LZ/W7cXx 0gtv6UcHozb0HIdJdY56Sgis2fYgiQ3MevOxrXMs= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Sun, 26 Apr 2020 21:25:58 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v2 6/6] net/colo-compare.c: Correct ordering in complete and finalize Message-ID: <1f8588fc862c9a96006239f82431775c60953250.1587927878.git.lukasstraub2@web.de> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/O5t4FLcDeKV6n0DOYDTr1s."; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:eMORE7rslF06fO7KdwJI3wW43+RE9wizYdPzOVgtGkBOpY7IajJ jBh4Hl+mvToQseJbBIY0qpRePwdwqRvYahar9WqJOQ9tFJON//CfrvReo1u6jvNkluT6cMP 3mETCRew66Mq+g/AnXp2DBW/GiSf4HWVLRJs++aZ46zAqhSdFz1tl4Hz2hXjbs6EC4NAhw9 izBHf52mMs4UjcfjZkX7Q== X-UI-Out-Filterresults: notjunk:1;V03:K0:gwtfQ+v7ngE=:BIyVkOdN8xUVlFFcbHxhR+ 6i2LgrpWI1LkyhYfi57QM7H0bnlF+kZ6rGnQacKdG4Mr2dEzcvE4y/KMZoOBwt51bRlp9Hpw4 YB3IQ+FhdBSlZxnHUGeakdiSnw7gQQwYieku/k50KcCtHx9IYo2LCVm4FASqNkOMfa6I+0IAy d6KTHpFSmn5awGGqjljk7/WfOu7YGEXRZXGCgb0BtqePSapG8FsJjsZmDNrGkIShQOawvINpI YMQ3xQAf1QDBnFoWAc9LHgvHnh5omK288XBB1FhZAl4vfZ/Ov9UWQgxJLhCxDHbh5VZe+/2bw cOllSNtOFnkCdTc3Ky42JnBCvaIOh4z2Ka9pTCf/YU3yLWrd+8vuwwGEIr7H+Xn+QnRtOkaoW f27++BjM+wpJmUF9TpmQxK3Ift94T27g45uE8Y6jX9VdV5/Pd3A3KNKUqxTIYoP54BkWn9Kd4 wRAGpzrUd31zL0kCD1kVQBdst71412siMXA1uqXpBYGSTIEdB5Nzalf2tlzO1XG03Pwe/ny2d zmLKIHN2OZIOL+YSvf8msrgBwJmxHMVsLQeZFClW7Fbyh/f5DaMlfedx9W5fTXkX6zVwTrIRK hgksOhKcy2V/9P9wrkzH/yWNbJL1jOd2sTkmqWYqH8tBeBth8kZgdEEyTF3uB/R0F6vvwZ6qM TCYspUJwsMPB6u3uiMw+FrkC/G1IpLUQf6ykhkUFPAAYJt9QsrEw6vHrhOl2PnFA8LjC+4P1e XDTK6vvnQiLbNV8Q0WH32vx5i3mDty1wifvcEVKTbvtE/HSvPOZ/Af2xkeusvduTvdVBzbsbx keRutN6XAlKQ6q9ctqjH/YeCN5tGPV2D+Jq95fSLu0R74nscWKeYqM2n0iwwZzsRrMbvHZ016 6zI+oTbNOVx/xywbuMGuwThJBWDZI3oHI5bf+MWLqwLyEtz4w56zO4HgLjK0owg2uFcAs512U HwvBfcOyc/XP4Rhj9a9OY7XfKxKWEWvcaZofSrDKAr9e2gDne5jG7ZHLMv7XQnJ+aH5avzZhx sR/dE4gkqfUJYFR6O2WJfHuBF/A2545bQlaGmWmxVYwkHIGZn/1NGVgbn6xN9pLc57qu9P18v yjtkfcuF71vPSvnBSbRbmlNqEC1FohbTxvZvUWjBCa6FThTcPJ8rNRZTUMEvJSImDQ+vsp7Mn 93cTjSRE4VKszu/X6AhU0vYNeMBPgUepbBexe017e8QwJA7TiMfa5Xrd7mKgtPDOECBhJ2Ho/ g+NY+s5OeuH7MRGtB 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-detected-operating-system: by eggs.gnu.org: First seen = 2020/04/26 15:26:03 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] X-Received-From: 212.227.15.14 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_/O5t4FLcDeKV6n0DOYDTr1s. 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 --- net/colo-compare.c | 47 +++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/net/colo-compare.c b/net/colo-compare.c index a82bb27a67..53cc145a84 100644 --- a/net/colo-compare.c +++ b/net/colo-compare.c @@ -1287,15 +1287,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->sendco.done =3D true; g_queue_init(&s->sendco.send_list); =20 @@ -1307,6 +1298,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 @@ -1377,6 +1378,20 @@ static void colo_compare_finalize(Object *obj) CompareState *s =3D COLO_COMPARE(obj); CompareState *tmp =3D NULL; =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); + AioContext *ctx =3D iothread_get_aio_context(s->iothread); aio_context_acquire(ctx); AIO_WAIT_WHILE(ctx, !s->sendco.done); @@ -1395,20 +1410,6 @@ 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); - /* Release all unhandled packets after compare thead exited */ g_queue_foreach(&s->conn_list, colo_flush_packets, s); =20 --=20 2.20.1 --Sig_/O5t4FLcDeKV6n0DOYDTr1s. Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAl6l4EYACgkQNasLKJxd slimEBAAg5PC99qWg0eeZJjXBGtqMqXQtZOyImnJ5/INDnosM6bbr7Ux5uPud92s ti0vDIs0ocp5VVNgJ25uthYY58noGVgoZ4bPO8YyOZpys1Zp9HGA110d2vii8tlZ eByLPsroGPf2oaLp10MoufxGzRIUkxQXBJz74Ewy2DrBJ9sKoELgV54tDQ7r0jgA K/+kBPCtNltXyZy1uOqbPXTaT/SklAZxREdCrBQG9QFEn3dN6Dr9czqyPDB8Leb0 b+t8WT+P5vgSSrTNULoj1sVzMXf8AQDjMhy1ZPo6uGFAYZ4qMTr/tHrt7c04ovo+ myGSB/a/rxNMtLPQZpGfSLv+2bTE8tyntXuSlyuT/42BUpCMOI2O0ecPDbZHJirC kpvYwKvBEUG8a2rPD7UL+nrBjfy2NMSPtqeDf97j25hf/cura7jb9jD0QydayXJp Uwa45eqYwERgolT+L4dAiuXBdj+u4ihru2AeFnCUye8q1XN7bKzFqdeMzsTQ0Pz+ 0+3E1p+1WPuO0D703IVgRFoOPxYaHhNTEAqMn0sR+FlTwM5ic9hNxBP+b79X25a1 sUhhkYSBQPoI/XGg6HOUYuUzuYPXoY0X48S3oldwu5W/SM4NDLmKUz7gwnI3IqA6 GjXGu6AlVDs1JjUmU6Nnx7ayx/xwtUIeNmsBvqST0Ku0dpxo4Y0= =v9KF -----END PGP SIGNATURE----- --Sig_/O5t4FLcDeKV6n0DOYDTr1s.--