From nobody Fri Nov 14 12:13:53 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=1587936513; cv=none; d=zohomail.com; s=zohoarc; b=M88LL2t+L0DZPOSAOn8tFf02W0OOKGyPJtPRnOg6OBqQMXrl9ruwQWEuUHseVxK7XOcV/uSijE5FlI61RD6IO73YSWftwpxVcRUhjvZ8Vs8JC9ghb0jAJoqI3vxkuRWutdWXrnchQWc/MrjePTtSeJKAh9/nw0kBTqnlezeF0yI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587936513; 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=yc32O3SjQ8iJdxz0PVHFYb7IoklNxNidH5wDroML8M0=; b=CUzcqPQzDqh95b4T/+EcfvtyfRA2vZEYvuAK4evckODJfXGS8F+uz0wSR36e8Touu8bUNlTnI+VU0EuDNjFqdCHurl+SHRKe3lVhznNKickBBHxVAI8a+xOz4utF41VVVTUVHRhvvqNqGgELPV7ALdJ9GmGHj7gADIQfxzRI630= 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 1587936513108333.6485518699815; Sun, 26 Apr 2020 14:28:33 -0700 (PDT) Received: from localhost ([::1]:46490 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSopB-0007ME-TB for importer@patchew.org; Sun, 26 Apr 2020 17:28:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33784) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSog6-0004Dv-EN for qemu-devel@nongnu.org; Sun, 26 Apr 2020 17:19:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jSofy-0005Lo-JR for qemu-devel@nongnu.org; Sun, 26 Apr 2020 17:19:06 -0400 Received: from mout.web.de ([212.227.15.4]:40645) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jSofy-0005JI-0f for qemu-devel@nongnu.org; Sun, 26 Apr 2020 17:18:58 -0400 Received: from luklap ([94.134.180.69]) by smtp.web.de (mrweb003 [213.165.67.108]) with ESMTPSA (Nemesis) id 0MTPjb-1jaguA08sp-00SOp0; Sun, 26 Apr 2020 23:18:45 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1587935925; bh=KlCniyLWMcP5meR1EMfh+9J/dqnOAwFcyGmWU0KJCdg=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=gYBWYSW4FDWXgautvwygWZODJtfrNr0R0Vx6CaKYyt7jdBckgm6yYjwuR5PPRG27O qVThMIi3HQDGf5ukXHqtmRbedo2yBPVNhq5nmBuRKzTQ/CdEKNltoO91ix28MYCx1R EpsIc6rpWutyYobkFedpl1v7wzEyKPnnR2te2lpg= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Sun, 26 Apr 2020 23:18:43 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v3 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_/6Yb3bbn4LWPpQk2bs5bYoiY"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:Y+e1XuD7bAxwd1lKicD6/cC+P9/ujCZvW4cX1iaIzwlQeyBnK6W IKBMQxWOtnu8ulz0AQDdf584Rt+MF2Stj+53kkw/3W52vo4pnyq2hWvswPNL9SZE+A8skyS ohOV47+rjqHoZTSA1HS89//qqoHzWT0CwUComk5GJ3VtZVRLQgFUdaVmLAS0URtriydswMz MvVYXy8Bnp7+DW4308gdg== X-UI-Out-Filterresults: notjunk:1;V03:K0:QSlz2Tr0d38=:Qdg/N1F122ByJ4TikGf1d6 2wrnaqWPxWYZ9B8QUtTC9oJZtd/jrFcQvZMShc/mCmuBdHI1VmxJ4UVL32tPG6PZ8cTmjhr8Y pnqrl3z3PhSYPZBVYuxsij8nupdhm1PxB0RxXJSdxnAKL9QhulmCwhwyKGHQXjbjcvJq7R+xj nErmZ/AyWvFvmfuP/eSJQlnqxVFsNHRbgpHzCVwQ5GsqSNEigxhazbHtEYBNKjVGbPO+MwU/Z uf9nEL3FGgExyJ8XkwHD+waWgyyKPbrfAnI8LUQomCQ2VJ1zBs013cjc4MbR1OGVS1M/ggaeB 0TkU/an/7MrwefSjmQHWTbdXH64fEdfZqcjcNcrQH4hyD/8Jr7kWzZTIrMQR/aI6UVWTEfNEo yMNNCXeSsSnIMdbqI0Gmd7loWJxglzCHdiyjDipzW31jA0XJNfMVA5kcaBitmA3hMQGzk0llo AkRCvvHy1mp472id16cX0VvMYhK818U1UF5JwcN426aqYmFnISDZpK1wZHUSlYfPpREdokWUY 5vULvm2HheNDYWFAN+/qVXDMoZKyngv6CysYvoUnrfUB2Dyc1Mt4lYm7VdKJKc/0Bq25oqTMW IupgyUnnMHFkTUZi1Chs7YjWiCHqw4VVc/ejUvSrApZLfp7+WHidwn+s7E9fmJmCrEUQuv+I7 0ffgtOyHOgDiVOykQffeGFi/oeAJUQHBTHgK7uo/8SG7pdYRwPiAxQz3qdQXNasPNbP0Bod5g OWmo/QSe8GkV447anime1ltUOxcKlAK0kqIGdI+0SHp9FZgtLt4m+YesUQQ7KaEu1s8Oc7KjR kxYZe42hgIxUwgOOMu1naPUBZVukpIQ71drnbhbFYJBKZtDS/U+0cfwkeE+5iv8F52ifYw8RE Fsub1HCkhNUu6iuG9Tk0fq133i3tcc4pq8tCxvrLIxDGN68M7BMcYdugF5QZwoYe1dIWTqt2B kvZ+tr0DMDN8OB8V3zNXN5Fxzz5TyX/QgTown4A2ZMVfuRXchupsiIpNIBXN+3XvvzgfVyLXg RwDxnUQUIUv6zKumuN+tLPP5WP1MFqCo+WdWNZOqcNtL2wjGZzqRDmhmZl5tpHyrpv6HvYAc2 wfln/IvGhQdujWuiF3QIKFcBr7NOt9GRL3XkYmO5chEnn3DP36m5vBgDJbPhpIlJaz4jBe9r+ iAc37i83AFmLBODgflbzUnKu/4qj99EhPoM+BVGyBT9bR+vE1vWDsBUH0AFA1A18K2CmCYEmz 08wmAp72Es6tMlGbz 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_/6Yb3bbn4LWPpQk2bs5bYoiY 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_/6Yb3bbn4LWPpQk2bs5bYoiY Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAl6l+rMACgkQNasLKJxd sliATQ//Qi/V6wtWk/Lva94UlZTax5WxkKP6uaP0QoHMXBMZ7oTXwt84BHsy+Srh 5oNS6G8m9MX1V+9kpZ+mZcdepjcDvwP0my6Lr2vbZzBSA7MXGRA5xmg3kxcCDn96 zp1EysuuLNZjHRBi2cceRsZ0FuVqGrYQJsEFzOvkRzfSr0i5D1WiVB0EEwiuNdHK b+5tk2O2EReBUAAbShAHut5/mevrGMBHi+rMdZyYulnHwYN3exKLnyZ1JTpDUZIs 6GRXYdC0JH0nGTRRhuUnVxLFrdZu2RTcS7WPSk+eI9gqFr5o1rTgiWLtCJ/HB/HK jfLCrpoVT3kfshI7oYtvCMPPbvd1FETXpDh4ucy4yjeU3PzVjevqQuQ+YyOIFqh5 qsex+3JZZpc7AdRSt9SKonSYgTQulWgonI2RvSmv4YIiN1FYcSW//FdN3UNoEXs3 078KbTQg0/j4d7/oz4WRhktkNrnlyBmM2WunBBUFRMV8GfizO6NJvAShILd4qT49 W3Vqfvo9hpndYnXlgl5xSGRpHQLAxQNJjuTKPnrmsRUC4iphczCIj/dKI4w4D5pg VtG9hhrj4yd6l5Tx2CHetp0xO972PUGi+OsVHhrHgwFUlhH135R69CDVyz0SFsqu Ojqn+29NXM2DejOMaJAfenlErlGVfYlHxhLYnTeiPt83bO4dwWQ= =ru6O -----END PGP SIGNATURE----- --Sig_/6Yb3bbn4LWPpQk2bs5bYoiY-- From nobody Fri Nov 14 12:13:53 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=1587936534; cv=none; d=zohomail.com; s=zohoarc; b=V0YWdSPn6mi2flS9HXtIehRuH09SicaXcZw2xIYADjc/cwnnwAB/JhioOYMaRkYoRltt7dt2q2CU/K8QmH1SXXm037bDy3DdwXmg8kJr0jRFF+bPuPSl6czRfuy2LYP0Pd1MbqPV1NdHoHtYKNu7fZXX5DnuDZfnNLFC3X8Z3cE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587936534; 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=4p5eyZ0n14JD1WPaRlQAFmYofXAH1xjQsUOslZrT0Hc=; b=X8HXey2rQf7Hy2WCDzS9K9rs4eCv4V+fvWlN1/ikHZZjP+cnop7z5RBJv6U1VX6QwnJ2M/QxLUGj2Os/ijIwwpTmnOCUFwDdspXPOKxQwt8PZWxr8/CpYrGuVMonP80a8VQayYTZvL4GjEuihycjbn/CpGrBDUAVUzOsZoFmkwc= 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 1587936534584832.963855077681; Sun, 26 Apr 2020 14:28:54 -0700 (PDT) Received: from localhost ([::1]:46494 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSopZ-0007Qk-3C for importer@patchew.org; Sun, 26 Apr 2020 17:28:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33780) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSog5-0004Dp-Tj for qemu-devel@nongnu.org; Sun, 26 Apr 2020 17:19:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jSog5-0005kg-HL for qemu-devel@nongnu.org; Sun, 26 Apr 2020 17:19:05 -0400 Received: from mout.web.de ([217.72.192.78]:38289) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jSog4-0005fS-W9 for qemu-devel@nongnu.org; Sun, 26 Apr 2020 17:19:05 -0400 Received: from luklap ([94.134.180.69]) by smtp.web.de (mrweb103 [213.165.67.124]) with ESMTPSA (Nemesis) id 0MbQOe-1jjFd81LGO-00IkEX; Sun, 26 Apr 2020 23:18:50 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1587935930; bh=NSu8R6ZArrzXlpc/YQzMnC4LGGAot9bFFDtDweoB8DM=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=jQlV5Efb5XeABlgz3+G/xMcRlmb0rWJRxrJrdIZqrJbuovN4ZHZpBAcqlRdFmVO85 Dptlyc0A+XjZkQre1yYzXxWwXhqNiHaEudEntWUiAhTOI5yQiyKJJ010l+WSHCn+jn NfQx0AVTSh4IHCa828zIl8ZAQLk3twcn6a56kU/I= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Sun, 26 Apr 2020 23:18:47 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v3 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_/=8VwPYK/tsNbWET8TdWnrga"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:TWcJqsNDhHaXFF3bGcMiCZL6a7b89w6jWKkxntDSDR57yfyTP9Q /Jx0UBWCRj1Tg7/JSi7QNTwnjl5dkwGGLVAdP/WicIYKZSaS9zoIxiMpgaUGaSksa57rrXt tQAXwjqgu2zE8g4sKWB32X5I2rkFSnZZRyjhat9Pu66udi3Ugu2JW6rtOzDWHeCQgcIPhN2 O00mY14bOAGyT5O78haCg== X-UI-Out-Filterresults: notjunk:1;V03:K0:P1M7rcbPO9I=:OYWJasBOQgAyquCnJPVacW iN1ivLI3uDlipIr+O3y70hPsb63to3h7AKYWibPH7u4Mt1P2Phj/vGCNUCGJVQG/zYJh+2Ndm XLssiD0RQCtMwAjrRNXBhs9UjqIB+WIYRw41iaElA29bm/Dgm25lw5bYD1YAOXZ6D/G5i/hyy BSzcQyaPDZDQt3WWDjnAQh/Xr7XIkZfUhZ8anQ6VPcijg0X/xtQDIxDciasHI3wCA6UgXQPmC atxRNxP1LqA9ftkCf8Gvv1ncXObs1CAfI5qMWjRoB/5Gnb6jhtu0oH+LV41jQoY84L88uYDCs cpXjIA+o+d1G/8C+JnKGV38UAtsiDnFl9Cb9L+4SHHeIxvDQSWSH+bxKfQpNDLBJaYGG/XWFK Q6+q5Co3bzDBN8vjqx44vTe+WbFibcnLUHUeXxy6ZBrWgc3gl6pnW0zQXRQPsaYwUvoJkhQ2v XmpxwboYZ2XcYBSly1IBGICpp5OwIW++R1TeWHePmfRPwL5uQj8El3ZdDjVQSr5EWmJ2uw0ze 0GskmoQy37xjG/klld1a4ouCz8hRonQdP/1SO/D4DkS64wzCmSnR505/6YihFAwKC953Qfd1y b3TZUwMXWIztZCrrqMIHO7P4XLyWbUCb8wAUwLCsw5hscEYw+EXPdOxI5bo5QPL/dkXqfWuG6 B82rQSlB4qKmJl+QEvaaYOYdf1rMELYhz69fYxjkFFbVflikX4Me59RyzX6XFBchXjE85dDFH Ae4e0Dhg4LeZvgOEnN70hnvbou/qEsxcs8xfWOUcTMQuhu8hMoa66+Fb9ZSx4uKGvz1NY9Ec7 F0BH+yQsf3tU1Ke2W1wJU8JVoqL54hnSWpOber8lk6l4fx5zajlgV0fAmcnVM5TxskBgTu8cc IZ0KpZh3VKn7mUoH1Eq6its/z0n1HetOvTEPb6poKahvh62yBA67YH2UT+gcFRGbUX3bINKdb 7zOGTmHmfY6I0n8jcW6BumR5jqUCAItwpmIf0wl546Ywm0SHh/0Z4C7gzhDdi0jbemt+8YNtB w/flBRVT1o+KPeQBoft4NVPHedVWa8iL95FjqZAggxPfFT70iU7y2BcEsp32NjGkunfKUOWkr BkeqWYbDsM61vMFG5X6a/qvcJFQdjhbx/Ai5SmwYi6VhkeqIC4bLceaTZCrypWgER1b8TdYLv Gz2haI3Y3tbSVECGvTiMm8sMjNBo+6OAfeob5B6h+MOGwud1utD1CmpxbArO1QUebLghDNhk1 rYPN8xqE/j2Odai8/ 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_/=8VwPYK/tsNbWET8TdWnrga 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_/=8VwPYK/tsNbWET8TdWnrga Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAl6l+rcACgkQNasLKJxd slhAShAArUGQSBoZtVD5kB7XfoW5phmn6XjgHTUIu31w/TKVSHFqReg4yRl6nGFX gaY/3bQBM912G6v/CUhFfZvVDCEk+B0lUpLVM0F1D9K6CyjSJ3BnDbZIbkxJWk5r se4mgC3QCEx5O/NkeQGUI9bswrRrKx2h7NmTHkJiosJQoO1IFat0EHHHakmLOHiC Ubafx9LFaEDRG+I5hDQZE2HNXaRbU65wr8Icxkigj/+7DUg53ANzobp9T8FLPxhw EcoO9exqOmZhkQ+toHqfP6PhUFwgRpeR4YuBe2QppeoMVLgzv/Cwc97kS9P0qZ0q 3mSQ3x6Q64sO2lRW6eCGyaCOEtqzXQ9sxmJ+5+WGzRYHGfjJkNRTPD7QyQXaDSc3 uCtmY7SrK8n3BmKrHgxUpgAzqjvehkLsAPm5b0DYGYqt0v4IpVw8ClIvQSUl3RKq TVvuOPjIdvFS5oCLmBgGWtxYsqkafthgLPKZ20GxQxIZAoTZhjoRqqwJAQB9GxCQ p7t4x6yeGs/YyzaiF6/jUiHdyOCGPetGGSmG9c3uj6FrxOBXYZ9EBbTBDjvPxqC2 PQCrYjdc0egUzYvKrktbdkaatmdrPU0WPYvs5deZkOz3yVdixthNqSAdGdz7ePNG XDAXXeb8OWNLbb3zK/NmpZdXpOVXvwkIZzc5G8LQ1Bd7tRVDaIU= =1UGQ -----END PGP SIGNATURE----- --Sig_/=8VwPYK/tsNbWET8TdWnrga-- From nobody Fri Nov 14 12:13:53 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=1587937367; cv=none; d=zohomail.com; s=zohoarc; b=bBLlbcyo+1CRAYnRRoxbZmoJ/rksGdgGQgTlroBpgaKpvKaQY/U5w1WzaX4wV0g1Y+p3ZdKZKL4rfVDTLYzovK02ovWmJVjVZJaxkYgcKfXaDizY6QLoDgmFmHsYBAH4AAa1gvX66+zBiIO7oX+q/rf4GTchSX6Mrb90NkB/MEc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587937367; 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=iEGWpEPpF+6um6yHFV0OLCr+FuFFAaHa3gXZMVS7JmU=; b=LH0z0HcrWezdCFdo8OGjnJf9ol7YS7So2zienX6gNU3FvbOx/her38U3bjrWst9yaUe9V+Fqj7lcZfsTgUnd9Y7eXHgLMRJZpJ4et8wKKcPUW5pr/kJaU6Nhu1iHD9MetSrR44vLhttsLGsBpxvyNe4V8RW5Axhl/mscADds598= 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 1587937367197218.2417064547427; Sun, 26 Apr 2020 14:42:47 -0700 (PDT) Received: from localhost ([::1]:46720 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSp2y-0005Hy-Md for importer@patchew.org; Sun, 26 Apr 2020 17:42:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33794) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSog7-0004EV-OU for qemu-devel@nongnu.org; Sun, 26 Apr 2020 17:19:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jSog6-0005nf-QY for qemu-devel@nongnu.org; Sun, 26 Apr 2020 17:19:07 -0400 Received: from mout.web.de ([212.227.15.4]:50979) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jSog6-0005iQ-8b for qemu-devel@nongnu.org; Sun, 26 Apr 2020 17:19:06 -0400 Received: from luklap ([94.134.180.69]) by smtp.web.de (mrweb003 [213.165.67.108]) with ESMTPSA (Nemesis) id 0LiUF2-1iuZmc0evU-00ceZU; Sun, 26 Apr 2020 23:18:54 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1587935934; bh=DbBCGA89qghzmKJshXtYixm26XJWPI1lsyRXXQJ6Hzg=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=mIOXcZzxkWZ+6Tr7MnJWMHQ0VqibjZCKbs5Lw+NyIj/8WIgzrPVgqHkhLdet4AUwV XI1rdaq+dhX/1ySYz3E9JqCDTrOLqUeG/DBxL/fl8UcQKSvS/R5LhEO4RrX0tVfsQS lKufhUJQm5vxVMc4e6R3L+3sFDcIuYzWeDZ4FVuk= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Sun, 26 Apr 2020 23:18:53 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v3 3/6] net/colo-compare.c: Fix deadlock in compare_chr_send Message-ID: <6f3906393aaaf0adf21d45a5bf7a41536c7de205.1587935686.git.lukasstraub2@web.de> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/Ie=BZR0juf2eirLj0TbVAmK"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:eFAd8kcejpfNtS48sFy+HEPplL8gzQ6b/cjw3YoMaIshyqMFucT 4cRuWDd4st6sjGatdofpYodrVABSIu4eEikHzBpAjpR23pVahS3dgJxiC83J7s7bYs8sbtK aCZ3Rclzy/zs5vUrAb1NdwQDoBnziOPLYwVq0zLybvLIqhsQ7qLeMDkIDVvWW2ihf6WUN4o oCFrZ+dlhIwOUYxwNw17Q== X-UI-Out-Filterresults: notjunk:1;V03:K0:bjHEhnFY1bY=:UgdkhxZNqlaW1H7qgKnzsi OwqrnH9SdeFklxW154/hyFJ/fyNLNlXaDVUD8lCq5F3hC4o1RBNG5OR/YH2hvPHSjmtzkKKTs WuGqScDfLj0wJDEldMRH2ksscA1qPcmZZf7/bKqN6peELuJp0uDX1HGlqOmXKAjs5PyUQOG2x 7FLqIewYiWSYM6d/IcieCUxus/JLIHUtQSszwqxZOy3ZWLXY4XbcabE+vRcal+1SzAMIsRnn9 x0nKU1XAjtXLqRJSIK8SYsNAi+M9eDKYkMnGihGt17Ge+rGvnO9vd2SB0sXwL7+GSGHHH5nPY i0BWJ9U6Ykb1qFPqy897eNeWTDTlqvCAXzZcIQmm9Fe73sMby3IKu544/JzfqEqlZd0mVStsH A+0rByxkZqEXb9ackOk7pPgAL4uxhuICZwilWBQCO5kakMPqP0Qqczja7XRFbPt54sM1o5pWh rZ6hWbZBkEG+xCPuDjeNCRiX9uaH+fKNIxx04A0VjbDuwrFkkpBvNgbgp5lKPktPKjBlL4N0I 60+nhaCmchU73b12OXldHWZ0dzQYXTegGsnsp6JvAGPzgRJANxhXOwsdL4UGo+0Hysw433ft8 LIwlT2TgRKu1uRCuzIzXT9/WEM0bNfH1WbUkHf6buclv+gTY3Bgbiv3Mgc8aMeR1ZXojQC3N9 M2AcNAVO9SSly9cuNJxdEEqcpwTHg0yT4Q82U67v3L/DXgRaaeePcdzAYqxW/VzKqVESYJLCM lRc81+LxG+vL4B4IstEyYg3xEFZN9xzeFiRkpu4V36hair08EVuniiOFl5zU/8zsNZLg+Ob6s Ow1bvRK1+1dE9CDstYt6rbJhW4IYR755ELn55U9Of56ZSFA7EvKvAJnsiBuKNUo44bMP5HeTk dI39T99ysNq7Xq82hFe7yIdN2Z9c9MVbTewfU8Vz8A36OM7jB06OU/n6bFnW/KOfPij5BT9E4 YV8fEgH8oWfEgfWOtY9q1JA0eOcyHEMTVe5YYEeIUP36sZwUqNCW2LTAg17I7eSe2UTo9xw7D vUTEU/9EgvoD/1OntDKWoDeJdoAgv04QW8KWkSkXP6Sk032PReNYX0RcqnX2w86FzADZG6IOx zarKn+mKooLd9VaUcTOPu8VddDqXQtyDUcJWm+IvRGYqCAYAHuJM0N4sR1mF1c+pZzlkDib9m UcKoaYjT/alkrdPpimm3Tku1yJGMrHiyBrMvffhLyaaq1++uYRfkd2StMnOPBeSVDVSC+0Wa5 X3K3UK+A+mEUcdAJ/ 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_/Ie=BZR0juf2eirLj0TbVAmK 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_/Ie=BZR0juf2eirLj0TbVAmK Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAl6l+r0ACgkQNasLKJxd slj86w//WVk+Z2hCQRrQZ2IV/EWNeeLu4cm77Rpau7aWDytle1b5fJEQrSXEG1/Q UIpHeMIxoRuc8RT1T+c43ilyVnqMMqsxub9bKyArWz9K7iMrSBe9ACMD+lLceWSg 1YASgTY3y+HTtwHE4bOdcNOqXjaunHkzM9xJnLM9q9cpUtXTMKJK5nI7mY0may+7 46AuDP8VWeux4hxdtzFDUMHqyEQalgL6QyVUwwiAADDZwMnF14fCflSu0/CWikGB UOvX93MU3RxrJCgXk9pxOL8Xc2wx0o3E4t4amnSKVrYy5+Xe7+pHZJVB/W7lblm5 FyxnGzjoSORttBAUGEsZ13QyYt4nlYIDdb026ab9UAVv7U3HhWjpowy80VIEqnTb Ya9oPHJ+pPbNG1nrTmn6iqOs5BvlP6EVN5ufflBIOeMQuS4hsePZfnxYF+4UKmc+ IQqGZK4XT45/P8ifvdNsR6vuMKldvD25ptxYFmXECeA9rn67w7ylOxN3MxabUUyB Ln53jnQNuDETmvPSAhtcSzs9HOhji7cHqazPOOEbGLME2PrNjyU8gWuQcJq3Rhiu BUatSVJF7gmL4pAn8SqUgYX9yAijQ5zoFDcDKLxo/M/fYSJceERSVo5+eZ4k9rSj Ued0JO9yiezeLI+tgQc9lPCO6+h+dejujyNtFJzUmomkGWK2C8w= =2vk1 -----END PGP SIGNATURE----- --Sig_/Ie=BZR0juf2eirLj0TbVAmK-- From nobody Fri Nov 14 12:13:53 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=1587938198; cv=none; d=zohomail.com; s=zohoarc; b=C9GcMXI5YVf9QQvBoDtxrQobe9/4evysj77erlIWWs9qArb3ZrPadgqnkmbSroGjd3CsdnTdWxR9qvDG8mZPlQvz738PAlyZGi56kMoByJoEYvJI+OaHJ3PkZyZ2N3MLnjXR2UKriAmTiv+hYycRUkJu3dja7PcwWsbxqkXA/NE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587938198; 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=AxsY72BDJ0Zjp2oisNNcmq6oV0YTVsHx39xdNdC96wA=; b=mBKuZgImtg8QqtNis747uc4ZdJd5QrLHJh6swJ6yml0YhGDR0eSL/O4GcprpD54CATkuUflKcWwxV/lCo11HdI8deQiokhjo8Nt5qnyVTRlENjLlTJDoCP8rRVQyKpbmUwpP6kuW3Cg4x8Mv62CueCruDsFKy0Eegoh8mzv96ms= 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 1587938198547157.6112718880696; Sun, 26 Apr 2020 14:56:38 -0700 (PDT) Received: from localhost ([::1]:47014 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSpGO-0002QG-SK for importer@patchew.org; Sun, 26 Apr 2020 17:56:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33878) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSogY-0004OB-7T for qemu-devel@nongnu.org; Sun, 26 Apr 2020 17:19:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jSogJ-0006UX-29 for qemu-devel@nongnu.org; Sun, 26 Apr 2020 17:19:34 -0400 Received: from mout.web.de ([212.227.17.11]:39057) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jSogI-0006Rj-C6 for qemu-devel@nongnu.org; Sun, 26 Apr 2020 17:19:18 -0400 Received: from luklap ([94.134.180.69]) by smtp.web.de (mrweb102 [213.165.67.124]) with ESMTPSA (Nemesis) id 0MA5v3-1jLtrn1Nij-00BHS0; Sun, 26 Apr 2020 23:18:58 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1587935938; bh=RrNnM3VAiZMXdLeP1/sr9CeC+WSjjrizzc8RS1g9EpE=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=T3rLQyUXwU8fROMdEWL4KF3YgV9mr164LQkajiC4CQ40xWZfd8YC9m9apXRUICB1L g5M0fNzotd323zXbDAxxmaWGulTNlMHdlKeB/906yeh2ctJRPTbE2H5f6kVTZZdrH8 ys6Diarez3dn5HbBM1H4QGVTFveaaZINfd64gLhQ= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Sun, 26 Apr 2020 23:18:57 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v3 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_/+MJ=v7zwCerCYO3j3qpjScx"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:lDz6X3ZU7pODbf1VA2Si+YHMF7AJQJE01nMe/5ffIrgm8FjiFaG o5LK6IbOaWzz0b0V7j6sR6VGQBpbZAdIwOLPhGrA3UXhhn7gzlXTpb2MPG71RUkHyYN3sla JdcyFcd0L987Lz/P+rfJmS5RjETTPyg+T3PqoVZtIwQKb6lgyZHxN6+orXgeWxV79su68WO XBHz1XiGJo0+wxRUjWpOw== X-UI-Out-Filterresults: notjunk:1;V03:K0:pXqqKDTcxHY=:JABBwYcb1o9fbA/cfFpkvV veUwx9TWFRO+o6Vd2ba2m8bvmUgP5whadWLgzKh7PS/uI6wVNYJnaKL4CjjChYglrjw3uSsJn gTZkeJirGo2CzoTJsSYm17fdyWGsbmZsQcDg8TBmL7MVgiO+8mXdqZiNracesZqmcOVWXen+/ l/CwlnHaH6k8ngXqRtaFLLP6CedVioEvhJvXo8v+XxV86JXX6ZY485avXUeUQwIBVp9dDPp9m ndjb8AZp0jf3CYT1MWbBbwQHSDGrqjXUqqtpIjmGPXa45Urn/5btxCh0WRd71B8ppmgyZVsHK HGcGnPA6vvN+Ka2tvX4PFbX32r2nfCwV5wEeCnugoCxdgcRyT78QyB7jr7rPpzZ2NKH9anoqe DAVFWxdYwtZDV5p5XVio9WjecUz/WyNClOinWPeZN/sw8cBArnmuvAewGnYSxUiOEPYzrmRT2 gFUjxAAOhd1LATBwPJQQwiVxpkhB15nTrtLcu4lPizx/3PJGhc18KqB0p1RP2hagWwgiKLImH Ya1KsW+1RZRohaY1+v59S5j+k5AY1SyQ1+QV0oB9SNxi0I9OdC9jjpdogoXWECNhpWFof0AzL N+YbwD00KsqGU9G8vE/QIV1Ja9i1raNI2IWTyGiJbPKgKG5iLq7bysi1BVOcVk3azjIMSUlo7 5kpzYp1GoQTcHWhXbRJu5Wq7oKdmWzw+W2aXBgc7qdh1pIbrhtM0bvs+WopJZ5QJz4ck8mwJq AsBr88nwGWmlHi+zDEm5vRN8hfkWUddlkXdb0SPpvEG0jGVbAC/a0Ztm5y287lS6oet6l65nj xsqQObtIOTfnl72HiAm+Lp2BqRpJBwRcXUL9LoIyIYn4pUskGUfm3yOTBSmg19OiuROX5yWJG D1We27oa2k8qV8JPTHYZWjw3kgtAlZHpPWRTjSxw6N4QbxQvJaXsEc8GHxDo3zWY2N9Yh2+N1 qbY9DvETlVoGKmqQ/TBpWYX2Unq9pyzK2Zhc6DqbFhHJRMXccB6k5Ez0kSO7ICyYqE7rDVuxw 4Pqoxqed3mfveQKIrXJ8UUnhaa9RxZsul7LmrrH66GezbncSVyk1oTQCtuwym4k6ei7+Lwlus Nu9PJU6Nb96NucHuXQvdI22XkQUTPZMdR5oNx2j/C0cI1EtslgagRieqDYvZTiy3bipb6FsH5 yItOMg37vZ6ciGZcgKzJH8DrNuNyYR7wvad6egymHaGgzG36lIGzVXKbYRpi5s9O0o0qM5ES6 R/DM+jfO6GdgYcvpH Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.17.11; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-detected-operating-system: by eggs.gnu.org: First seen = 2020/04/26 17:18:55 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] X-Received-From: 212.227.17.11 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_/+MJ=v7zwCerCYO3j3qpjScx 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 --- 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_/+MJ=v7zwCerCYO3j3qpjScx Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAl6l+sEACgkQNasLKJxd slhlaA//Q0SEdt/yh7EOeBntThcLEHXvhHFt48vFzq9lmUx9V23OaJszqMZ2tXeo Y+q9PN6iKZJi0Wf4IzKQJp+K2KbcoR0pD8bT6GcrAvuaVUPwkMiSuRJl3q2zlC/Y A+hV+4LjXv+i2tbUAabEe9EH/jqrPdda/VB6AnEMjYhseFBXwKInjxYvHXKR5krh uq4BcfafVQFHjQn/fEuSlXOqtglnu/Nj65rnl1QYWiWJ3aQhzYWtJfuIJRZE5/yQ qmISKcLCYVLTNdPah7nRaS3KBydMsEZyKCgddZxo2ecz2ua/aU0LK8m7eeTSntPz 2IKeSGPMY8lqEFAwip5QydgXLOTKjtL7pU7FoE6jF5CTEcsWfuxqw4xQFGgch6+H MEpIOwcUdJpFD7ORK5iQc+cf6AIpDD5d0KoB74BHS26zqNRiXLMmGF8COYv4x3JY BCUqjeAP5z2ViwxdbprNhIbg9gvMuF5jxVzsAvyUVpVyY14qV2r6XUabkBzVkkUG 4bvyyE2hzBjjixEiOMarinXBDVdRjlf0/Cf4+o9g+QrHqmFS3AEVC6/sG9yjXBqi We/3NVbEkyxK4TT+eyAK1hIoVuQyHaxZTpFZuyfrSfjAb0uirQ8aVQMYstiOe8p2 Mr7qHlJ4vVfnmh9X2sel+Ck+EhzptVpXPnfRmaiK/jNj0mSuNuI= =2yGW -----END PGP SIGNATURE----- --Sig_/+MJ=v7zwCerCYO3j3qpjScx-- From nobody Fri Nov 14 12:13:53 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=1587937357; cv=none; d=zohomail.com; s=zohoarc; b=dFaxpTFqxqMMuJpz67g+Iyg0V9WJtD14qOgCuo0xAvILY2MldYJTbK0qbPrc4efBmWCyha+n3dnI3GrhgmObaJPPGuGQzikRchZezb6fwouy2Akd1qnVQbz7hJQSk3zGeNvVuhBPdjGWJJwggAImVn+1uUttvG5ZJE6TnwC+MB8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587937357; 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=7TKyur7HwzLLyF+t4GHjTNNLFjtkMBNTt8n0VeZJxmQ=; b=A07YwZ+2yjlHIgB9r+UgevNBwc7/9H8kTDuiqzX3iB8GK2jV07bDD+S5r3bxEGj4QPA0k6u/pA6z2X1k6bQFglM0MvZMNZJdHjt8XTwWGdyKJ/ZisER79memCaPefTm1DA9dX7nHCGbo9SZA9Mk9s0EieU61C5WHGQBOTTRt3mQ= 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 1587937357051232.28142352017187; Sun, 26 Apr 2020 14:42:37 -0700 (PDT) Received: from localhost ([::1]:46714 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSp2o-0005D3-Fp for importer@patchew.org; Sun, 26 Apr 2020 17:42:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33836) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSogH-0004Hn-DR for qemu-devel@nongnu.org; Sun, 26 Apr 2020 17:19:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jSogG-0006Ol-Jz for qemu-devel@nongnu.org; Sun, 26 Apr 2020 17:19:17 -0400 Received: from mout.web.de ([212.227.15.3]:34949) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jSogF-0006Jt-Vq for qemu-devel@nongnu.org; Sun, 26 Apr 2020 17:19:16 -0400 Received: from luklap ([94.134.180.69]) by smtp.web.de (mrweb002 [213.165.67.108]) with ESMTPSA (Nemesis) id 0LkPRz-1ivwhP00lf-00cSqY; Sun, 26 Apr 2020 23:19:04 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1587935944; bh=v2Q48Pm+/yCuuYhe8oHV9FjEBrga9YLYBk3qMRI8HgU=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=as2t8rGxoJwg7aJU+ubbiN1761Gd4peU+KAAYHVrdGgefEL+HsJ8dAnyD/4OnK4dk ZUxytoElnZDLiwKbFV7dG3lNLzg3tkBxW7trSmXSYnzqzLWIFT0pDY2CkZsTZ00/Mc v/Kopz/Rf+HxlxS1zgpq4eEV03UVELnmAjMb05YY= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Sun, 26 Apr 2020 23:19:02 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v3 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_/eGJFogQB5dS+D27JZGdsPde"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:llL/+uvtLCZWp63V8/ykZa9fER6BWDPZOT0FhR+pxpKFWOPVh2w crQKxDAQX5mZKh81dZsEXArBorBcf1L5py1ksOS44WHAEsGarYwKrMBz+7pWbmVKaXKvKwM AzfJgZZ7vU8pb4IMbPuD7UOjDxDngPHLtK4nXlJwnDVRcFZ06saLumROXfjDkQ/hdzlmRD3 AAqGS4xnhL2GQbu3gKbQQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:AtAt9V8m+EQ=:nXmvzuByTsGwcmghQuGjMh ash9UnW/jxVbALYFieXPXSc44y87D+rNaeRwkV0IHl9cqWxmu9+21SvZKtKPyY8LKtralwcCN QWh6o6XwW9UXjb3waPvEjHXty38w1gbWCY68Xr5blq4iK+sH54mRwiXwR3tbjKKnYykKgfPYR dpcrExhpya5f64LLpudw2032j50s9HOVQW1YvXTX7ai9WabK7cJKa08zNnL/3cnidenT8//7z wtA1/khr1JRegaPl32IBSZ/SVthNnLev8opeSBxXwlFpxIVeOmsLXybhD1/rEkldwyBbWn/b/ nYAFbij28BpytRF7kg6S3Uny8XTqrN/vo1lZ5eNlqxtZx4h3HYwNewMCCvoqKX1fT9qnAwQo4 gC2GW7zP3NQYfDwmMJLBjkf2jFzglQQFz+o0ipDvK8AOSKRzBLwGm2+qWlvYN+u1pOs0AjEYR p3RAZNbPwK3xJpgyfAyEnY/KRZ7HtEhv1wG5vlxQMhUU+rPNXBRQK111pR3PBAHlsYFwipKEf EQQvEDIwoXhG2OPM9ppmKYewzwc/tCKrDx11w1Mlf4uHpObFC/WzzHWZeJFj+iqzuckbiRBQh nIYO+sU1z3usdntRTwDGqcyJcTUVF5+OArT0dXUGFrwINBxEQIkA70bgHjgYeoPzcHVC+vaiW BuVEVQIrs/LIV3TGa5HxDzkbgW6hgtE8LshQgYw0XpSWjc81vjDs6YvHbvXfPHyzUVUVVNjFc aNuZSGU1R5zSlTvnTKT5AT2Oge6Ld+8kAWDHVWiuBDbuwJv9SNQlx2DIPalxV5/PTMegHam/f 81uyS++/eNSEnbrtHR4ZhPumMN61l+YLGmTgfXFs0ITcBdIh3A6zs+UXiQQBTUqQsbWfFHX4X X0x2DPQiyEHnwnNJKaxNNLGcZI6A13tZXjr+tyrJ+Ner75P0WqF+kp3jWOACr6I914EZbnDbc KaajQFtjwKML5sRtahPny1lhnPpbj8Oioou5oyWV14lJoQ3MuPhVozNcRc1/nmp3JZUr6GLLD 4Wc36M7wJCQ+eSZZj4GRh+AlIcapsebTaD2Q0PtQnCoAO9JQRxz8QUOtXg4BuFTiiMsQ+v5am P4VZxHX8Uh7z/GwZTtftG5uFRujaDGelfJ9j+StZcbDig9g52GrPEJfSUlLLx7NXXcFyRuGc8 NYMWJ9nHeRFmZeQBO5Y1nnfSKc91uZBMeS5TatejV4MXhNdZ0j2Ee2vl/G5d/dXZyYM4u3T2T oGJuqjl7YZZoIdCNQ 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/04/26 15:25:46 X-ACL-Warn: Detected OS = Linux 3.11 and newer X-Received-From: 212.227.15.3 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_/eGJFogQB5dS+D27JZGdsPde 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 6634911770..f3074ee3ff 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; @@ -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,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_/eGJFogQB5dS+D27JZGdsPde Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAl6l+sYACgkQNasLKJxd sljtSA//ckaOz9BAdpfTWc2QRFQusktdDPC04PAkt7fVgtLA1sYn7e3qj5wFr7xf OpqOfDsLfDCMnSiRKKRKwjiFUWwSM/sIDWhIuxC+pl+T7bCiFAu4/5kWFRveiV5j MBiOV8ldIwyQW0/Q0w8mgel9ozcvTTkR2yQHdvSfdZNJAe4C6XNW3KpkGJR17xTx c4e3h+gfJRtQhds40L3mVphmfTbIEQz5zK97mS0QQwdoihMXNvLKL/FzFQUzqsbk t2TY0t5R8oF4ApiJiLRf35NytLV1i65FzvX0RBUq22UmasqCJMYGczILeI/1e1Os EZCcDtaPiYm0Y8PhKfQjaglyRwPx7Q69CvvnjJhkTTq8J4zzXU6okOVtVZIwuU3z VLqIVU5shZIu6JvQmesS3P8YIMNaSvVKtwiceXpVrl1ddyIuj1iRF/903UaNSOnE Y1rNcD1h2Ea4NmlZy8gvuWZ8kXDqYIPU+Y0vXKUAG3IDaLCIymIdOsgurrS79y1c w/k0wAC3EomlbiJ6BBtQiXhZBGwxl2RJ/mDQDiSvGFFzUlP7CpeUzOEpePoIEd/g Lyyl8y2m+WapIlRfIf3jtVmzXMXuztv2aZAXtjW7GmTavOuvNWp+kCMkt1DlA4ux NQiWY8hGeGA2C+Qf9l3reDWR+cItXugjVZEAxl3oRnX2ICRBUtY= =iS/F -----END PGP SIGNATURE----- --Sig_/eGJFogQB5dS+D27JZGdsPde-- From nobody Fri Nov 14 12:13:53 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=1587938131; cv=none; d=zohomail.com; s=zohoarc; b=nZqoBu7kbdHHq5pysHRdSfGMGWBxqEk9Xe5MPQksR7nLx7L5dwYarLWAcNsToWtFQuRuxGAgtcsjXfdGsiX8iO3MhOPg4IoPyXndKTGl20Bo0hC38AnSJNkaHlZa069bvnHbe7EfAEvsXVXLYymPu1e4BgcKjhUu9i+AZIOiprs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587938131; 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=nNAyInEsgTB32HC/LLwWk3dayvI70qilXVu+iQJ/15Y=; b=lNZQytwUr8fCanY3IPYRSvQMTRDTP//crfpzhEENXLPPnjAaIPcLfskmvoL+a1zeigyQlcMisx5AXa5KU9Xazmfa+pRO+ppBXu5B3kqGmXFn5Yxhdpx7M/i4u5lxtslSSzW8nBp5WO7H0O5396lpmJ2+zhU6d+psrHMxBjpUsUM= 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 1587938130938653.2864130022971; Sun, 26 Apr 2020 14:55:30 -0700 (PDT) Received: from localhost ([::1]:46994 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSpFI-00025w-Gz for importer@patchew.org; Sun, 26 Apr 2020 17:55:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33880) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSogY-0004OC-78 for qemu-devel@nongnu.org; Sun, 26 Apr 2020 17:19:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jSogI-0006Tj-Rb for qemu-devel@nongnu.org; Sun, 26 Apr 2020 17:19:34 -0400 Received: from mout.web.de ([212.227.17.11]:49365) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jSogI-0006R1-9k for qemu-devel@nongnu.org; Sun, 26 Apr 2020 17:19:18 -0400 Received: from luklap ([94.134.180.69]) by smtp.web.de (mrweb101 [213.165.67.124]) with ESMTPSA (Nemesis) id 0MWjAd-1jiMOu151n-00Xp7P; Sun, 26 Apr 2020 23:19:07 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1587935947; bh=OKrJYPQYFYSKUAa7NoCdFf6KnsK6PjCuDGPnWMhKDbI=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=K7gTE+N0eYE/937499J09aZUvMxMfdMVgR7+HGSHNAY7xYR8LGXJ2tuxF5y1f0IfI ao5BF4SVDwje+tccA+uCAXWHkRR7vipnFIMAbBbm0xVbriePPzNQzY/ZE1nkCdlPWD VYrf50KQyzFUjPyoYL7Xh4Q1b4cbwuIBLTJg7aNs= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Sun, 26 Apr 2020 23:19:06 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v3 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_/t=mktcj3KfGac3S5g_ptJtj"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:e97cc28SczBHZR8grl3MOyvXZzNnq2oWlTt0IbCvnTy8wj5F3ib p/83W/QzgWr14jkbMe42CIo4uidzQp7e6jvtHUYz0Xwo28+mV5T8CYcKTLRXzNqbEwwCqWf LTPxvRbvJFNm8Zk+jX/7r9KjfLzmS1ptF84gw6YahggojXoVWXF57gjTRMYpJZEhdIQtOjP 7G8YEDAZRSXuKdrUPOoKA== X-UI-Out-Filterresults: notjunk:1;V03:K0:ynnV0hqCJ+s=:EOtlW70vzoGDSPOMfPABUg KZLNwkx1M6T1FA8kQlV7asRqZ5hI4D55D4pcgHpphw4JbHC13xrHbjIm64PUM4EQwYJTl5f0T 8c0uk44yuuzkTwABstTc54IeS3IO/eL1WDuqYNLI/Qt2MA8Q4+tn4d2DGx6ZMOxgBU3JaaRac jYe0p7Nzr+0iYLNSZ4DUMipQoPNTT4oM/ZgHijaKCjOUUvbvG083aDQSmd+k9yki1/BbsYhhw c57q7MDn4+vNJP3p6dGOKNA2x6lClMdZtecK5Wpqt34gUSyX5txBAspgkwJt3dzNbLcTpLb4K etsKpg7FxI5hT9r6MbW+DFaojLr06fbCxYEnY86ZOORJhddDBB14vj/DqPE9pQ50jqdNEwUeX sqBd8uqBO+fJbdCRNxJMEoEiJtzoxqPos0M9OcvP8hVfqhAFUJGa0kPwFMGe84rT61kSI4Jdu iyLcxDV9dBq0sDjBx84axqROCTXpxHCVl82jmUpHmhU4C6yxPu3Xt3lQZIjYH2z1aMsBwl+Qw oQoj4ozmPdoTyEc875uB1vqBMdt9AZoPhGPKX+HJZh6Qy4kvSIh4hsLc8XdhLITa2UlaAA2aa oRKzIJZAiM0sAfgsEwWZYXyDXA2DNEAsLOhIOp8albdcoAAx1L5PL5+juRMjFn9GscvnPJjil bVGn5UiSSjtguVdYf7BxalG2huv3J2d1AITyfU5akiGgaCrDRFY/r1azf8eTtzQNKq0A/TF+Q uAaCSFdFVrtbWuBoOTpglyYdyUHxshuz2Gp749+Ujcrm6A/YlIQXCjDuVvVWsnFI17Hg+/Xnb mt3aq7zE2oed8LsEEYgskr45NXDXWoWT13u9KvCdiH/ZY8zEUBRQ9rqSlgvdiTA5QerXeuhZx A6HHkyydstK+ByhZJwBfAb/iEYHHY7FI7r9NoWpKIAFWOLQkTJu9GZqEqBm8UihaNRTT6iSEj lBQMrVEPA7st/fWCpuCYz/RvrdDd+RC7dvSTbtif1c7wKcLZRU27ZtN5ATKPbaCdlb6zYyFVP A0/nzEVxo87ToeppxgdpNE0fJ8Q4mLDUll696HDL0bEF12MjRH4Aup6zw00VdVa5o1Jw6GH5Q fZdDqdRq6rNka1kVsbNmCg2Lkm65TGS0MoCJbTSp6Yab3F23IhLSGHF86lrCSNl8auGxMSqkf aIvStvoqQmcLFVL756eIF8P0DbjUE5aqcZUDuNmBrIz72c0TrBRgj7TpKRtU292e3qCYMZ7GD V+0ZC6TJBkV+L8zNX Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.17.11; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-detected-operating-system: by eggs.gnu.org: First seen = 2020/04/26 17:18:55 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] X-Received-From: 212.227.17.11 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_/t=mktcj3KfGac3S5g_ptJtj 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 f3074ee3ff..e86dd72f02 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_/t=mktcj3KfGac3S5g_ptJtj Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAl6l+soACgkQNasLKJxd sliopw//ZnQwYYWfWHW6USHk55rFBVO/9ooPl6G8pL4rtUt9opeUeo4SPT8lodT2 ezBSFwLHYGvybZq6oTQ3q2PnpKu2UsJfTdzyG5dA2e78S48zplGcvgfMGVfNGs4f S6Xc0CWfwrM+NY4GFn0T+ztATY/jSPC8gjpmS1kc7aEqK3C6hggCzebgMjQQShcI VhhB/v4zm5kog9BYMu5yroB7jiqmtv6+cShrFbEDaitGDtckvf/SSWf5v+H4ByEF fGiwZePM/ZtpUUJ0hpbyKZA2PEJzq4YHrq10odBI9kXSQjZImfnBVYWywteZKmSF s95sDKxtj92XqJAPSI5JUMT/7vms3KFqI+5VjpxhfMmeXuYzmpgmAWJ9HV8O52GP f7Ps2Jz7zQeHqsALJnBxnIE9V8EXE/XIz3npJ0on09BBKOTmGkCuYwVt8sNbsDNx b6PIao2BRyc/edvv+P1C2fbn4kc9lBjLWUJJuEpaPaZXPow/1P8sjwK39vTBIejl cqqVXfgvs43aSV4Hs2wZcr5V2c7SIp7xteSb3MsdK+xyfh2oWI+Te7r75iHsyc/6 JBcxr/PGnQaZrKahiQovrHjqoxMj/8FtgoRD2OeDoKP5wmnQMsuwfu3/BHMwt9lc lL0357lDi6t3tO2I0BtkzIfWZMsZ8MqrOxfF8phy+SHCPrPPVZQ= =EryD -----END PGP SIGNATURE----- --Sig_/t=mktcj3KfGac3S5g_ptJtj--