From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623319967; cv=pass; d=zohomail.com; s=zohoarc; b=aicCrTYstqEa5kpR10xlCUGgQ2n4Zaf8BgYbKmvYefJss1DVzf2hNly9X9SfU/0sKEvlALacm+JPm+SaSX91p1nGUBgfF2X2s/+SGprkqkIxaw1Bo4WnDtbbUWTjV58H2sVDoPMcJMsCJMpcDXYTtEvF7Mxp+99rQWvbCrEBL0g= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623319967; h=Content-Type:Content-Transfer-Encoding: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=+5a6EarqizbCqCeN2ClhTnD5xiA1lwXazAKZduVgOz0=; b=UZEOsxk5wuOvILaCUhhFrRFGI98EkwjbYdLSPs/j+i2O6lI+vTv4AWCYSIo75/dekX/9ylMyw2HA4QwQZZxN8J7AgPwtRe/F/+uY8eq+EauWIJQ2CDCJxgFQ78ZuJA0yKcypoRm4krtI3V3y7h8QFZtTA11QWNit/XUoMgFvAqk= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623319967734969.5055691370754; Thu, 10 Jun 2021 03:12:47 -0700 (PDT) Received: from localhost ([::1]:46832 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrHg6-0005BP-Nx for importer2@patchew.org; Thu, 10 Jun 2021 06:12:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44814) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcM-0004tb-Tf; Thu, 10 Jun 2021 06:08:54 -0400 Received: from mail-vi1eur05on2090.outbound.protection.outlook.com ([40.107.21.90]:8008 helo=EUR05-VI1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcL-0004uY-DM; Thu, 10 Jun 2021 06:08:54 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM5PR0801MB2035.eurprd08.prod.outlook.com (2603:10a6:203:4a::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22; Thu, 10 Jun 2021 10:08:46 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:08:46 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:08:45 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JO/mYaA0U0ir5URSV74vD7mR4OOzF3kRugRWAv3xlPX5QzMH1WCFHL6Twhy8Zj259NvGEmq2T9SpB8/TjtOUonv+63DsQIUsmGqypRN98mh0vT0kMD9qPOLS0hcEcUvsxZWADmy6GlB7ba9oUXjWlbgh96K0qmZfoFPTU+IHka5UCqXRv6faULqByvlDUR1i5J32Vk3jIAaYYZdQmEDmD1gmJyuLYylzOaVidsKB2cF664slaYH0MI7lyWThLlupzhVlcT0jA1nnS47em1kb3LNUmh6a4e0WcDHDWxdZ/YugmYA++D7Gv9TzE8ThJY+pC90ti3evTULLiPbBZNQlfg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+5a6EarqizbCqCeN2ClhTnD5xiA1lwXazAKZduVgOz0=; b=D7XgbNcE/W9kAiPNo5L8qMlcBM5BK41m6id2tj54r1Bt3xB1CaHPu7lZUT42RP837i6SthZkgjtciuVzwf+tqLPFuu0ILAeciW8IdlbSlGfHU/35GxIQE0QCPCkEefPNPqbBAHZpFMmBP/A7WLRTARxFssHZ8m+rVWcF0wf/ih53tK+P8yUj637qyZnD1Bz0cwUBIcMuik44XkvTDvPMXbdcTHSYAR9PQToiVVKz9M0Cd9GlVspDOTtOzFNY4U3CXDY1Ig0GZwZP27mhVeSi5rUQZ25Nt5fAevs2TNZat5NcjfUW0a1/0RnK4R9+Z2i/YU2vreYlsZW86VrBseXYMw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+5a6EarqizbCqCeN2ClhTnD5xiA1lwXazAKZduVgOz0=; b=UE8g4JqfDe4/pIvuZQjxFOEuQhGY9rBlA1d8XOjvTtfOvHadbjTWdsy4HUZSy97UafS6kDmxTGYn1/fcKAty5RhHq1vy5lA9MRlsg+t5AZDKC8syN3W4uN4Dlrqgkx2Fgqvxp5vovHCrL57r2kF/jxmReWFaWoADILWZHmIaFlQ= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com, Stefan Hajnoczi Subject: [PATCH v4 01/32] co-queue: drop extra coroutine_fn marks Date: Thu, 10 Jun 2021 13:07:31 +0300 Message-Id: <20210610100802.5888-2-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ae9fdc76-6796-4fdf-c6ba-08d92bf7bc1a X-MS-TrafficTypeDiagnostic: AM5PR0801MB2035: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ctdgWaelx/TV908B7mfnvMKCWs0jEE76NwJgkoSbzHxJO9wSOYYJKTEdqmnCosq132dzXk7SAmz2vpuARo/xyF+vop8lbJ8rgaDv7oDNQfQRGVWYFrihYhmYfPmo48tQtuK6drHfqHYQeJNMznizfGKN/8mW0wKkg9ydN5y66nultiy5XC3TC9xwf5Jfu2y9sGIdK1gLLFWgWMMWzl8yj+t55HdmOJcjIjpTwIGFRuHZOc786LMkzXhhg01+EPkOuYwkGwQjTYw+dwSCxLpYO2F1Inu++3I0/l/KiE6nnPst04a/HuatcNR67wOoSWQ5qF89XHCOYR1USG0vAiR1dna5huMVo3GmreFIhEnf649aXyi1Cv8wr6Ia+3iKTuNyAYKtTCSWguhc1ZilDcsVXyhjSU88tv146TlHCoMrLlxb6zUhJG3F+4Psjj6oGO9zFeqDnhUTV5k3vI8lSUMDaoXJRyXW1fYIsM/yZnonpMizK183Qv5LFLcXb75Sf/snc2xJcL5ei7TuAVRRw5pEPt6IUqIsbgD7Um41bhNvR6MnHMm34jNXpI0mTBLxUQakohDC6/3dcrQfEDQ+yuVAPI9wCKlRGl40BHboOuKqZzDYT6oUHCCdntGxv6b0+mmXptHUgpctZ5hhTyfsPHcFtvgHPAG14Js9QrBczP+cLfo43XoLa1bpEx3aNR6lKmOv X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(366004)(346002)(396003)(39840400004)(136003)(26005)(5660300002)(86362001)(8936002)(6506007)(2616005)(38350700002)(1076003)(38100700002)(956004)(316002)(83380400001)(66476007)(8676002)(66556008)(36756003)(66946007)(4326008)(478600001)(6916009)(6666004)(2906002)(52116002)(16526019)(6512007)(6486002)(186003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?AY3uotRMv0bIk/Paox3RGRIExNeywmXL3/jXOMB01y4f8xndcEluvgN4hCsU?= =?us-ascii?Q?MhYNmq5aY+dg9LSoFsa8mzv445Mrpr+zbHz+K4te3gLlgCmy/RIXhrEyRWpj?= =?us-ascii?Q?yv3AcG1MLpTTbVodL8bTXKYsPQdfzSNOoEuCFdMrAeUhnWNWOGwMXrRLB/ct?= =?us-ascii?Q?f5tZHF5rjmqGoqvNhy/pq4YwgngAqNozT3LQWq6BVNktvPixoAx3MnQjcBDM?= =?us-ascii?Q?+ZpkTKtjFhGzI3ZZRes02mewrNmlZPrPs3dlDe+eRDPP0OYcBr1/eo5bi6nS?= =?us-ascii?Q?D5lfXV6uv9CjC4LBnub1ZvcBk5Pidsa5wd9fx20BYHGxsnm8G+aCy+zRg4m7?= =?us-ascii?Q?wbfu8bMIzovHgh2Vni5UzUjoqQ5O9QDezlQUoGXjragttoJv0reac6M8ENPh?= =?us-ascii?Q?tz5uaSGshppkfXzli0ohj/DJCHMOQ1KJnuQEKnuo6gbhK8ff8gBze+Mb48Mg?= =?us-ascii?Q?hJws29rNV1+MVyaZ1oRwidIDZjBGYHCn4fpjKn4RYZ+uETg7h2d4epkuEDvb?= =?us-ascii?Q?6EjsmeD5Yo2896kMuQPzQZn7L6BbsVbTHWIfUw9o1IslDf3afeWPoaJrQgoW?= =?us-ascii?Q?WA+38OapD/xrbNXEGqbyN9xFtuZPp2ZQghUztz00nhEHOMcifkMCmlJ/X3Fv?= =?us-ascii?Q?l6e4YnEFg1rnxZOMY/IOjst2UiHqx5VeiXUUOzYuBE6J5rNwoizzcgkOuNNL?= =?us-ascii?Q?NkvPd69n9HnUdrcJ1cY/UdcFiKpZiHw9ltffjabKUDSeUQqo7qyJvrYyzA9g?= =?us-ascii?Q?fTFB1fhQqFKgr/U0nuYLOvQWfJewFraWeDOsmFnTvH4/toO6rYjRlCBh+J54?= =?us-ascii?Q?f+PhfubiBneSt5NYX2SF3W+CDSgp3DpvFUEfyGmlmdoN6K9Z28N2E6tnCeFP?= =?us-ascii?Q?jQDimxl43sC9N0NIsCvL0D86vnazwSBrNmy2/U302Av8EdJRWXe5pnlUrrV9?= =?us-ascii?Q?X1e6p4MqOwY2Q1FAlEPcPmO3VDPTZ1A60CdKp5KVnT4YpMubd7iVh3U//c+d?= =?us-ascii?Q?TpwVZT1KFPHUPqLjl7QqYH3aiPmECIikXwDSvtFfLbJGJSIqzkKbqAvkUcxJ?= =?us-ascii?Q?XteBrnHwucCFh9C78IPFRV+qy1cDG4GuvlIoCZD7vp3J03E5DXUWtQARKr02?= =?us-ascii?Q?Asj8zqd8Q2a2qxLEXUVvXvvb6iHkoSvweLQt9Cf+hxd85ukZBdKEf//u5U5I?= =?us-ascii?Q?0u5EQ3Nr4mRZajS49A3ilvjPGSxdNF1ozrkZvj0AUed8gxUAtyloLrvX3Aol?= =?us-ascii?Q?yynOexWbyLYU9Qn4nQJdPSD7UMV5C1eB7zasnzcXWVQj36PhRs/KJvBB5Hu6?= =?us-ascii?Q?AX+H3LCZahRURtE86rLphK20?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: ae9fdc76-6796-4fdf-c6ba-08d92bf7bc1a X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:08:46.4066 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 4IjVIoUJVi9ac7rR2QsAYXBMza9N753UuC0/Y875O1OOjEdwHCUNYu28DzStj31l9MWZAw+AdLxi+he47c0mVp34c2l14TGuu/NwaZDkx0Q= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB2035 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.21.90; envelope-from=vsementsov@virtuozzo.com; helo=EUR05-VI1-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" qemu_co_queue_next() and qemu_co_queue_restart_all() just call aio_co_wake() which works well in non-coroutine context. So these functions can be called from non-coroutine context as well. And actually qemu_co_queue_restart_all() is called from nbd_cancel_in_flight(), which is called from non-coroutine context. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- include/qemu/coroutine.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/include/qemu/coroutine.h b/include/qemu/coroutine.h index 292e61aef0..4829ff373d 100644 --- a/include/qemu/coroutine.h +++ b/include/qemu/coroutine.h @@ -210,13 +210,15 @@ void coroutine_fn qemu_co_queue_wait_impl(CoQueue *qu= eue, QemuLockable *lock); /** * Removes the next coroutine from the CoQueue, and wake it up. * Returns true if a coroutine was removed, false if the queue is empty. + * OK to run from coroutine and non-coroutine context. */ -bool coroutine_fn qemu_co_queue_next(CoQueue *queue); +bool qemu_co_queue_next(CoQueue *queue); =20 /** * Empties the CoQueue; all coroutines are woken up. + * OK to run from coroutine and non-coroutine context. */ -void coroutine_fn qemu_co_queue_restart_all(CoQueue *queue); +void qemu_co_queue_restart_all(CoQueue *queue); =20 /** * Removes the next coroutine from the CoQueue, and wake it up. Unlike --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623320098; cv=pass; d=zohomail.com; s=zohoarc; b=lLX2VcErVxw4aeXyqM/NBhSJeBTRaZ7S83X+9Wt/UDBMGyejG4KxOdSQ3meJxVb0C6twi+ozDCzsp1aTNl+hjtToiD/9qj7lSowj1you/pjZ75URsHWQ4xlTz4lSj/oN0oUokQa98Gh6kN0j8WKh5PsSztwUYrTKnSfqZgnYZ5s= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623320098; h=Content-Type:Content-Transfer-Encoding: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=OoQe9a07nAcBPYLju8lIXoeEA8eDswQiCGtGDDQ2kuw=; b=fBGLlktaqD0hDrjpuMp4E58jrlga0G4QGqJSF889FJCBH6zpHJex9E3RnnlC3auw2kobgaorUA/HBJE/MSYu3ZaWu/UDB8ejqixUKGjravFe1P0OfqIelXHoIVVjreiZAPVDckx22wtJZjcMB2zSAWKMZC8kYOk25FbnxSZZ8D8= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623320098860896.3770135510458; Thu, 10 Jun 2021 03:14:58 -0700 (PDT) Received: from localhost ([::1]:56102 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrHiD-0002qo-Qd for importer2@patchew.org; Thu, 10 Jun 2021 06:14:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44842) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcP-0004yS-75; Thu, 10 Jun 2021 06:08:57 -0400 Received: from mail-vi1eur05on2090.outbound.protection.outlook.com ([40.107.21.90]:8008 helo=EUR05-VI1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcN-0004uY-J8; Thu, 10 Jun 2021 06:08:56 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM5PR0801MB2035.eurprd08.prod.outlook.com (2603:10a6:203:4a::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22; Thu, 10 Jun 2021 10:08:47 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:08:47 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:08:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iQjORHua7PMlRUB7Pw6D21WGsL9qBlQUrhCAP5LPL+p8gBBHPlNi6Baa26Rsil/em4UpDOBg+FxA4QI+c/5dRbvBODJYjqG4f7sVwTo0mDYMDnN451mdABIuo1vrJ00QzDeXlvcyhuoeDZPk0LAlMy8/fdOYdEKd8p2A63f+Ka71By7tSykb1YlJ85O95GDmy+YqbTGFPdw+UaUfV8pSdfyKrFPrre5MSFubi56dTKAmE8LslGes+zXUuZ+zt8IIBv9pfOD7VJbebQk3l31cCjKUJMIcZq8avNlRoHpuFVQaqy0r1NJjqh5kawuexhhQCsWzB/m58LoxfI17XDl6qQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OoQe9a07nAcBPYLju8lIXoeEA8eDswQiCGtGDDQ2kuw=; b=Aby9U1HSjjQxQNabK7xZd+8m7wG6hHXmvKJuWzDS1Km59WmW5sGpaJrolDl69vgNqd157ZbbYHCGpZvyrD3TSgSFqZDIS+H2mXbJm8f+4H7UdEzdpS/9JFWD8XVis2+29VIeMpB6wEDzp69al7HDrsTO+viFTyHWUAfV1zIXWUynRpypS4l1M1M9Z/XYa7OjHPs8hTKNB+1+pkSuyJOxL4zuzRR6olR0MS7BKyWZiYFA8NhFwp7bj/uG7YEE4vhQBai+ANCFEx+PBrICV8S8+n3jlgeJ8Gf9Sev1hfZ4kGGRpeRRaLyqIiR2k2NBbD3+qYXJQHroTUg79JCrArRvmA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OoQe9a07nAcBPYLju8lIXoeEA8eDswQiCGtGDDQ2kuw=; b=nNyiK3XyuIT4Q+s7r8mAYWqBvKm1v31MVGUARaNhYevXb+dW8sKsKiL6yD29cL6EcFZZvvNkQj/2pvw/Z/ChjZha1Yk1pF66lLC3FLqSir5URFjIFzqmYGUiCYt5od5cQX6GIhqR9IkrYazM3dFpTP9xl+9k+8EJ4k3+IlcmGKA= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com, Roman Kagan Subject: [PATCH v4 02/32] block/nbd: fix channel object leak Date: Thu, 10 Jun 2021 13:07:32 +0300 Message-Id: <20210610100802.5888-3-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9abbb5ce-9197-4376-92f3-08d92bf7bcc8 X-MS-TrafficTypeDiagnostic: AM5PR0801MB2035: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:142; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VWjTDtq+GH60UydINBorX+KroQLRQR2udUFzfkzRtjZ99YmUVKiUPpmb77gaF7ZUxKBH0iN2Cc4e4Ri738HtpiGu8j04RiIiviEZLSJQidVogzwim9LqTcYG1efIg0EfkzGFishjSAn4hQNY2mP5rtnb/gld8L6bPiczPwGMQny5ps3CWgZozMpRB8HnZ5W+LCxd3tEy1wyb/6KeLecwgG1oq8cDlcYDC2lRiYLxYWl30e3+Gpt020YhoGGnYkEJK16vglx+2Q2sswJd/qLumdJXTFq3wOSm7Bxholh3CkYYqs0Lm7Z999XbutypjDCse05tXCe20IzMe8H8iPe1f7BaRIbyUvYbUbNl2jnrLN6dTdUuyhzSlqJriKdUgteAa8PdFYO9EogkKNWdhaxQ6nc/scGt2ldoEK4rb3WhNQBiK+5yMJYl5PWNgdwtkwSkY26KbaiQ3w+WnYxOF6gIcQixNgOAm9F/UKh9xPFcEW6ABkXcYdC035m211dY/wIqEXp+zjobVi/BkSyv4EnKk3UK5aDRcmUo3lKr/pGjOYajjdP1EIwXhY9XLErWDDWQjPerSHyvFPWVwgH7En+oULtmQVOBsjWcdvTNFuFiTSITotCM5Gv38S14a0tbFHUOYugIqvyGytSL0sXZthKC5WDF2a7/WRNox+zaqoVsUfVxmFwP3IGqzcH/5EfxX4Yn X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(366004)(346002)(396003)(39840400004)(136003)(26005)(5660300002)(86362001)(8936002)(6506007)(2616005)(38350700002)(1076003)(38100700002)(956004)(316002)(4744005)(83380400001)(66476007)(8676002)(66556008)(36756003)(66946007)(4326008)(478600001)(6916009)(6666004)(2906002)(52116002)(16526019)(6512007)(6486002)(186003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?Up2OQSWuL4ciIKHatxt9MvPM8KOwajXhr1K9/s8G8qRIkm4rexg5jeIe3URY?= =?us-ascii?Q?21sCyKsatw6aEUqAb8FcHw/7ZzkNDwczpwgRPeNHealMfg7ens+0hsuxrqW6?= =?us-ascii?Q?DZZ3e+S3huoaTBIgG7ZjQiqo/gYzGF78a2Ce7vKgNMipVd1OYYe/EjIwVlpx?= =?us-ascii?Q?lVb9Tip1fbpbtL13gdMz8cj5BwceAGRwqEF9q5FLzshEl1RtIbXbvYhP9MaF?= =?us-ascii?Q?AnE/mHvxP9JiZkZXwtZZUaqh60fPaWr3jp16V5Ie+bqkUR1Yz75uQgun0pMt?= =?us-ascii?Q?4jfxRtPvp3pMazufvMhSPrRgNOlHvHvWpzeidrER+4Ah52w/d4lJNw0af4wf?= =?us-ascii?Q?+m4P/SriBiVD5fVQCEuV/ipW2++GWaqillQZ9mImLiljDFt9Q2bDcTMaeUmV?= =?us-ascii?Q?Ixg904OMRo7zQ+XAEM4ACamYUSEPTnUp54NoMotkYoJwtajrdQxHF+Z7VZhl?= =?us-ascii?Q?A8A+nHVOXBJ0thijf/k48pCmHEZp7g4rvzYSIzmAPgmPLUE0euZ77TnZrkXP?= =?us-ascii?Q?PeKzA9o3oYKk66Qx8KUW2JiwgTVyFVNur5ZeGbFaWPfr/jCgcKr1tpf45RVw?= =?us-ascii?Q?pcdMamazeTQRETObvlbyNjySOdaG23cV+STwperMG6ukQ8vWeCvzezruv1cV?= =?us-ascii?Q?OyFzFu+9n59GyxcNUGl3PUnjzf5DkDaEaM0mMlIBylreU3S1SUBYP88WS+iq?= =?us-ascii?Q?nrxOCehVaXccjp5+XM9bm7t3ucamTRNBQjLJ9fSHBjQn81nrF7Rpc9HcvUV6?= =?us-ascii?Q?3jP+ka0MH9eSQYvDofkS+bR539hGoGKkb0CTofiemAW2MPf17/aNt4LZAnZn?= =?us-ascii?Q?oRGP03x4lDJir4/sMvEr/RuW8Q2lbXoPMRZFGj+c7Q2Bo0e5LyP6usVYWq+R?= =?us-ascii?Q?LbennKmYo2bXGyMOG7QTDab9W9ZZq2z3jBW0z1t4dCaMHFlInPzrYl7VzMY6?= =?us-ascii?Q?OT0Nxm0NPVr9wOmWS655/yT3GXtTN5s7MPFrpu4a+qFcAcQJvTpxF+nB5d8J?= =?us-ascii?Q?QQ/AjqndekTlGaSEan28q/U8myKi0lRUCWpyFJnq85ZSyQ/AT1EV9Xu9NOjU?= =?us-ascii?Q?TYTO9HuLFEsrVaWX01vZtVwVix1XfOn4ogzHlImR39ZqCRbp0DELHzTksvlZ?= =?us-ascii?Q?675m4TyxQIGC/g0ecgZ5yz2yV97VedNDTloGXFyFFpD55EWW38vYYCrepL+u?= =?us-ascii?Q?WuoZdcER6/UNiUMQS/BMQCOkJEAkZGURaIF4IfS/1xRc2V7Cmmqh7ryje+31?= =?us-ascii?Q?pdQ8D4Te8N6ELF7fBOuf4EaYTmAO2DEz59QEn2qiXlq3rmtkjX1GdZJupsfm?= =?us-ascii?Q?IiubK2RodVsOpP3FtxUYJQEX?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9abbb5ce-9197-4376-92f3-08d92bf7bcc8 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:08:47.5486 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: KIxh+J637gEqwfhknE/NAeBgSe4uHPX3BUZ/p2OInaR1z72i5Zahr9oWXs/nOrz+IpxMqzOiA3p7ihJvEjLs2NkTufP1l/a4tpV0IQ/+vxs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB2035 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.21.90; envelope-from=vsementsov@virtuozzo.com; helo=EUR05-VI1-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" From: Roman Kagan nbd_free_connect_thread leaks the channel object if it hasn't been stolen. Unref it and fix the leak. Signed-off-by: Roman Kagan Reviewed-by: Eric Blake --- block/nbd.c | 1 + 1 file changed, 1 insertion(+) diff --git a/block/nbd.c b/block/nbd.c index 616f9ae6c4..f4b3407587 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -381,6 +381,7 @@ static void nbd_free_connect_thread(NBDConnectThread *t= hr) { if (thr->sioc) { qio_channel_close(QIO_CHANNEL(thr->sioc), NULL); + object_unref(OBJECT(thr->sioc)); } error_free(thr->err); qapi_free_SocketAddress(thr->saddr); --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623320131; cv=pass; d=zohomail.com; s=zohoarc; b=eUzU6QRcri83KTAQ17RYF/sdYXJpYab3xeCpw40MyHeBCMiMjhzZK/Lb0BUK4iFuQEIw0xC1VyMEDlG7v+oTAUnpJcP4o4C7CnR8vbmki9zU6zHgxUvlJ6FtknRmXhOHD5kncfucV+ihDA9CuCuQZB7kUDWIUpFwu/6q6neiI5M= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623320131; h=Content-Type:Content-Transfer-Encoding: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=x7alOul0VsEQFWlqhK0iPsyZB8XkKhH0BnmrCCACDh8=; b=QUc+4vIfvxpgWC78ruaM5w8Df19PgIIhQ1WMYmTBsixccpRNTyAWIGiOwwlkIU95UYzp+tkfPmuFBA6+oX4yCN85uyYEbsbzk5E8qVylM/q7nBkcxY+xkCtEYXKiF54pzqSOWa/+UdOJDC+zuGeJU1LdsNjDnc9oIlhyND+Pj1M= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623320131651213.01761021803918; Thu, 10 Jun 2021 03:15:31 -0700 (PDT) Received: from localhost ([::1]:56870 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrHik-0003Mf-E9 for importer2@patchew.org; Thu, 10 Jun 2021 06:15:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44910) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcS-00058w-L2; Thu, 10 Jun 2021 06:09:00 -0400 Received: from mail-vi1eur05on2090.outbound.protection.outlook.com ([40.107.21.90]:8008 helo=EUR05-VI1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcP-0004uY-U1; Thu, 10 Jun 2021 06:09:00 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM5PR0801MB2035.eurprd08.prod.outlook.com (2603:10a6:203:4a::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22; Thu, 10 Jun 2021 10:08:48 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:08:48 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:08:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=c0/7zhH4uLmh2EL7vuzQuR7pbUDawejwXZZqEEzb38jIhLnDJvf9pveygZ5QHxNfjtFUvl5sz2n2I7kITcXuvrH8+N8TW678xfU8QkMn9SXsXCKksmNsm58cHVqwwUssb7G8mVdC/BWcN8yfBsWPob10dtwg5yYIVSjp1N0up3WJApvWDKvmOwHKUWA/6YwUyzdC7QV/spp1w1J8jp5D4SvYK4WgvBL9oiwJ0Blw5kn2I4dSbLU8xV/u+/VOPuZfX7tVrtR6ABbrBLCZeFdazFx08KRtIfb7nZollLFbyWTo/L9wsNFNO3tTuWzPbmd+4ur5THNtjb+JVleCdLEUEQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=x7alOul0VsEQFWlqhK0iPsyZB8XkKhH0BnmrCCACDh8=; b=BklHzNngbIdyniMSLx12zu1qxOPYiLxWxOoMLcl7sVakK8ygIbj+pQVm3CoYFj1l7WKejlktvfLgwezxEVrUM+qYbLi2lYooSOOMHeEr/jdCcH6TzMqFdQSl+UwAYqZpfKeHyFMYdHoIr+zSjInSFmd4qtNiY08y3tWPVDslF/XxR0s7igRABMlwQN/bd//UKB1cgGOYYwuakz/AHtBPacjCsXqZlJwdjRNDjtwesj0+fg2p8dlsjnRbLntfG+JsjZebP5Zb5ItWqhF2F7mSP4p8pLX0Y2U2JfcDguIEOyoWbvOPMK+pdGfmnpkaLWYk5xxTxyp7CsiV87HSlLMFIw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=x7alOul0VsEQFWlqhK0iPsyZB8XkKhH0BnmrCCACDh8=; b=kz8gDuD6PAn0Xb29Gel09vXCtsT9NDlsyQyOl89RjjxObcOV8XLPE6LJwJn/CVY7AsIztTVASCQpYb2mGD7YP4+F7SOcLlQEyGb2xjpsGuUkJQFXeLRslq8682bapLaj5bSE44TNyjWOf2g434v/aD67JsH1qYaUF9fSYpk6mM0= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com, Roman Kagan Subject: [PATCH v4 03/32] block/nbd: fix how state is cleared on nbd_open() failure paths Date: Thu, 10 Jun 2021 13:07:33 +0300 Message-Id: <20210610100802.5888-4-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: dfcf6364-071c-4fdf-8d54-08d92bf7bd8c X-MS-TrafficTypeDiagnostic: AM5PR0801MB2035: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:418; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1rg5qESzcszJ+shMX7tvm1p4jANf6i/DRtEBhdJP+KsILV5w9HkLceTBJe+EVcUfl1sNrG8t5CcoZ//VR86JBnbvsLX7e/O/WHLuGUp8xyswHpXwzQDuRUN81kaAtTdeAtuQjrl89XO3cxJBNjoCjm68evEZLJXVtRElvO1eSqqxtjxrVr0DznX5wIrr3VgVdJf4XQguCS3KSm2cmB4cp29M2A7uzDTBAd07QbnjBmO7lTZTi9BwPPew/UplNMhrKxhy1ww/OujgDFcvMC+7alhRRgiMLTpa/GHRCoFDnNqmxMSatIIotrdNffkyDCEZ/xER55jppF2g/upDmoc1U5Q6tCVkeTQD7lREISf03qtm9mX3k8U/iQhYuLOXJS1sxD7cCt4LcWoYYHKiYO9f0PtjcWUNSJPqWmYLqbUKzxDoUFqUzUK2JezlOOdlfTQ5tHC8noMOnVZLobleUn4amXEYTRa1K9U3cnJptj/qUCzShT1hcxfWjE/vMIGiPGakvQo9+EuIlWv9kPG8b8RbWtswxqqFVgljcgQ2gBCStRAGEZlu3MwmoZXsxOH46Rw9Hy4MduMj1bnmwEax8BSOb7aVFXp8SUARxrppsYKlwgfLZUrslvjO33vYXsefNMGJozobiYIC4sw3dgNx7zRB0DIWUtKr8Ekwgi2CQtC1Oo5qrDAe12QbHgYgJfPTWl24 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(366004)(346002)(396003)(39840400004)(136003)(26005)(5660300002)(86362001)(8936002)(6506007)(2616005)(38350700002)(1076003)(38100700002)(956004)(316002)(83380400001)(66476007)(8676002)(66556008)(36756003)(66946007)(4326008)(478600001)(6916009)(6666004)(2906002)(52116002)(16526019)(6512007)(6486002)(186003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?upTHDQ9V7ihQLn35VN7acqF3zCu+RBcP3zRgJm9iVNWZ7TPyMLW/8UJyr33h?= =?us-ascii?Q?aMFgIS2d9RhqQ9xTh2CP6rRVoXDrvIhdyVxH+R53sx0nNzvvSXHk+zuwMemy?= =?us-ascii?Q?FKkFfFhUqyQ+6QWGlA/Hmq5g0INXsuoyNIASoDQ3TgCGudGLP1r2ayeAJwYN?= =?us-ascii?Q?Co5tmu051FYUcPmx/W6OC5/7Op4Fc2Wfe9pjFAYoOvGfrde4lTB8hA/hVnzh?= =?us-ascii?Q?YYh6KMcXwfQMc0wlswG0KJG9boqgMmsm/EPFc1mB3Y/nV81bByFGmjPTC+ba?= =?us-ascii?Q?g2NAdDItN9jTJGVlj67wQruzgihGeZJcD5u/BFNjWqs08Bs3anmf1TDSCEyE?= =?us-ascii?Q?HA0gHlbEA0I1SwSTkadQzQNTJ3QaOm8MKyHOrhtvJOM0GXMZjE+kZN/u/oD9?= =?us-ascii?Q?Dae+lNxMkuoc3/QrQKVhv+quzsDLhfRdeuRe0xskIf9UxeroumGuKVBA1Mmh?= =?us-ascii?Q?U9fIG55RzZxRbE+r+FiGi1OGJRfco4npLT/0BVmDggtAzaGBFZoMJy4XO5Br?= =?us-ascii?Q?urJtdEqXNIlAFOhPXYCTsrLzWDbyEnUCCH0nTim3S9w7r5uNdS8Zb5BoOaY/?= =?us-ascii?Q?jZP7j3dx5GzD6Y6qGyxy+s7lzoG2lmnOvhQx2vSm0b9BjMVVeZKeQa4T6vOA?= =?us-ascii?Q?yCuOpUPfltLwQ/ZDPxIw4jvEmXt3k+1uIrP89q7I0TeTUWLJEcdOdTMpuCMx?= =?us-ascii?Q?R2j+no1ZxohAIZXgWDbKcFaiMJ+Lt4mpqLLhT5FEvcjkZYpAvbaUPGA+8KYc?= =?us-ascii?Q?jq/o5w83vJHixqVbCKPB2aFqYdkQi7GKufJ2E1u+mofDSby59pu9RULxiR6d?= =?us-ascii?Q?PIibl89DMt0iDz4miR39ZqNFDhwkrMuUem+0CVapnaZ+vj+MhkrIknRIyzSh?= =?us-ascii?Q?gE11ROKNk1mTmZsJmCOeyFN4ar7GfWP1ZsmxNiqzoaPb2oxfd9xYFdUENi1l?= =?us-ascii?Q?4DBYxLITj2yMQ3pkjeUGDwW7MgQJAinGWfJn2LfvKqJG2FOUUJjDsPi5kXG/?= =?us-ascii?Q?7pLFjS0mW7tuLdf63CqYmVtMujxVzM707xw02r+xGS9+ydPmKfiK3LP5vtTV?= =?us-ascii?Q?XRkCcw71fWpnlwdyx9mv1ug4gXkECkFfCNtRVrhBlYd7t3xppzANDo6h/CBW?= =?us-ascii?Q?qnX3EZ+sO8Pjhx2HjXU2xt5D/tNGcR4brwdNquunueEp/oochRHVGYv7kn4h?= =?us-ascii?Q?1CoIULrbBTyVIWS6767S/ItfDfR+LrgjLc961rtzR9qPqWqHlGVp2gMO+bOC?= =?us-ascii?Q?HLeeb8ypZL5viYUW4+XDm6Am530bdPfgcW+lB6+HyZstdNpuaXJ7EJYQ2694?= =?us-ascii?Q?9YKOfhkEGonYxWMsbkqjkbCj?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: dfcf6364-071c-4fdf-8d54-08d92bf7bd8c X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:08:48.8041 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: LCTaUkl0JPC53tZPPR2AmwSX1WOOW8SPT/gdAEt4tfqjKnf6gmJP19HeZpwSlQKsEM2nn6/KSkyxVuJ7fROAGSXNBxoW3A1vE1VMBUKB/Ps= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB2035 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.21.90; envelope-from=vsementsov@virtuozzo.com; helo=EUR05-VI1-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" We have two "return error" paths in nbd_open() after nbd_process_options(). Actually we should call nbd_clear_bdrvstate() on these paths. Interesting that nbd_process_options() calls nbd_clear_bdrvstate() by itself. Let's fix leaks and refactor things to be more obvious: - intialize yank at top of nbd_open() - move yank cleanup to nbd_clear_bdrvstate() - refactor nbd_open() so that all failure paths except for yank-register goes through nbd_clear_bdrvstate() Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Roman Kagan Reviewed-by: Eric Blake --- block/nbd.c | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index f4b3407587..01d2c2efad 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -152,8 +152,12 @@ static void nbd_co_establish_connection_cancel(BlockDr= iverState *bs, static int nbd_client_handshake(BlockDriverState *bs, Error **errp); static void nbd_yank(void *opaque); =20 -static void nbd_clear_bdrvstate(BDRVNBDState *s) +static void nbd_clear_bdrvstate(BlockDriverState *bs) { + BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; + + yank_unregister_instance(BLOCKDEV_YANK_INSTANCE(bs->node_name)); + object_unref(OBJECT(s->tlscreds)); qapi_free_SocketAddress(s->saddr); s->saddr =3D NULL; @@ -2275,9 +2279,6 @@ static int nbd_process_options(BlockDriverState *bs, = QDict *options, ret =3D 0; =20 error: - if (ret < 0) { - nbd_clear_bdrvstate(s); - } qemu_opts_del(opts); return ret; } @@ -2288,11 +2289,6 @@ static int nbd_open(BlockDriverState *bs, QDict *opt= ions, int flags, int ret; BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; =20 - ret =3D nbd_process_options(bs, options, errp); - if (ret < 0) { - return ret; - } - s->bs =3D bs; qemu_co_mutex_init(&s->send_mutex); qemu_co_queue_init(&s->free_sema); @@ -2301,20 +2297,23 @@ static int nbd_open(BlockDriverState *bs, QDict *op= tions, int flags, return -EEXIST; } =20 + ret =3D nbd_process_options(bs, options, errp); + if (ret < 0) { + goto fail; + } + /* * establish TCP connection, return error if it fails * TODO: Configurable retry-until-timeout behaviour. */ if (nbd_establish_connection(bs, s->saddr, errp) < 0) { - yank_unregister_instance(BLOCKDEV_YANK_INSTANCE(bs->node_name)); - return -ECONNREFUSED; + ret =3D -ECONNREFUSED; + goto fail; } =20 ret =3D nbd_client_handshake(bs, errp); if (ret < 0) { - yank_unregister_instance(BLOCKDEV_YANK_INSTANCE(bs->node_name)); - nbd_clear_bdrvstate(s); - return ret; + goto fail; } /* successfully connected */ s->state =3D NBD_CLIENT_CONNECTED; @@ -2326,6 +2325,10 @@ static int nbd_open(BlockDriverState *bs, QDict *opt= ions, int flags, aio_co_schedule(bdrv_get_aio_context(bs), s->connection_co); =20 return 0; + +fail: + nbd_clear_bdrvstate(bs); + return ret; } =20 static int nbd_co_flush(BlockDriverState *bs) @@ -2369,11 +2372,8 @@ static void nbd_refresh_limits(BlockDriverState *bs,= Error **errp) =20 static void nbd_close(BlockDriverState *bs) { - BDRVNBDState *s =3D bs->opaque; - nbd_client_close(bs); - yank_unregister_instance(BLOCKDEV_YANK_INSTANCE(bs->node_name)); - nbd_clear_bdrvstate(s); + nbd_clear_bdrvstate(bs); } =20 /* --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623320336; cv=pass; d=zohomail.com; s=zohoarc; b=PGIYYqiizGIN4UK3dv8VJW2lbRxUNobFrm4I+3Cq1SdqnIUSSHgsPuLhTqF9uPEi2yo8FKeSokiEI6zGTSZ2uz+O6zRoim62BPrrbGUrgHed0MVmGnTX7gE6gc/ihUNogUaLLd4E3oP3+bpW7YMgiIriNp5+VqOgJFYUVN2sPfk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623320336; h=Content-Type:Content-Transfer-Encoding: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=8ax9iqJVzK46yGKwpHlZWjCchDHg641E/NyvOBpW+Rc=; b=G3x/czh7fwxk3YMPM5PoxHmllCWAR04KjJ3KzsBezyqJ1Y4hVu8Yy7GIh84taTXogtMnicvS943l+aGz7VoBNOk7+wVW8nf5UckgQ5A2tCKTq8723rbMq0ijwdhKkBgGfQAWK0AIaNJPEed4caK/4SfQKcz4FT8Yjt2b/ioSPm0= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623320336499754.352720262588; Thu, 10 Jun 2021 03:18:56 -0700 (PDT) Received: from localhost ([::1]:37976 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrHm2-0001MU-Ga for importer2@patchew.org; Thu, 10 Jun 2021 06:18:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44956) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcX-0005Oa-EL; Thu, 10 Jun 2021 06:09:05 -0400 Received: from mail-vi1eur05on2090.outbound.protection.outlook.com ([40.107.21.90]:8008 helo=EUR05-VI1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcT-0004uY-Gz; Thu, 10 Jun 2021 06:09:05 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM5PR0801MB2035.eurprd08.prod.outlook.com (2603:10a6:203:4a::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22; Thu, 10 Jun 2021 10:08:50 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:08:50 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:08:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=My8SxwUxsngTzlCKFL1Z1ZssKVYXkl1GnJP27avXljNuuBQtQCd8BaPxMdfnVVd5PVeHOvmZpwdEYAdHXPAzA0P2hEJg24ofxozMsYGn1fKcsD1hn7EXVNtnNd3Yg2aokgb5b8o46r3OjTJbepjOsHcamQO4UZUoF1zsy1yOoAo6hJHyrsu84FuKrhqJ8MAWQEuTbf30wI5ne/Al6bzqzJnn/2bpucyr01qXESeeYaVaxCFozAa0BpPOxSBmKiBb9BGlvkj7iMM9C4F3G6iWbJj2XvDdFALTpt24K+zl4vGc4pGWeRwfkq35ucYGtxOCipx79VP9RWKQu/F9syRvaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8ax9iqJVzK46yGKwpHlZWjCchDHg641E/NyvOBpW+Rc=; b=Cb5IyXya/d7AK4BCTSksXPJFlGtj0XqlVwcozFSUcYRXd+Wnoh9cUHO8hMgAetVNn4GJ2eFAzfpQrwSrgl62a3y/zEdelP1MVTG5Nx7TdNvFPaln/ocndvHyvy47K1H3i6sus9kk4k0+PjUodZIil8jcthvEx0jUHSyc3zAPLRijbQROiucJxqEZBuxxinTbGhpQTrDNBuV8Z+q1z7G4AFSj78E/2GtqJzapLstWfEoG1TRkOEO8TsPpQdB8KzgyXUT3bB7zG0/d1/ctb+GZc7XbmGT48htpOeKIE4S7MjyvgpuVrHiMTtFWhV+8M/CwcX9zggbWMI7XARCEF//Nfg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8ax9iqJVzK46yGKwpHlZWjCchDHg641E/NyvOBpW+Rc=; b=pYO4EyBcQXKYtleQIwR1bHdVAzWezX8niNsTGe6HPfMl/sZiC7Tn65r8HhsCSLcDSjO7PvI9INcZhPkdc+DA+LoUq96dDLlpGj6ipakgxBU1fYhPIK/Em9YwBweh7xhxWieSQb4yP7uXSbpOQHBX94PV+eORmjH/HVG7MWR8TJc= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com Subject: [PATCH v4 04/32] block/nbd: connect_thread_func(): do qio_channel_set_delay(false) Date: Thu, 10 Jun 2021 13:07:34 +0300 Message-Id: <20210610100802.5888-5-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f1a8eabb-752e-4918-d42d-08d92bf7be2c X-MS-TrafficTypeDiagnostic: AM5PR0801MB2035: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:983; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: fOlDdBOBxSd9FTTxFgu5Sm1K9NGUGYrueoxfsWYTxwRNx37EGh5heTnbEv5vEuRl/FTouzm8iO9o/asiur6kzOy8NjlsuIPpIbJ6XQjooMHukYHaNyu6Cy04RT25hfojRiBeW78xIObmPtsUs7GZaRE6eHAHCVsPejyHEZ0VnE02MA4K3BfF56nsf7U6UXtRBneoQCnb6+WW8cMjB/6x7veF5pTH9t9T1mWVKiF7hx7zdPy5vpmsH5alTiKDgDqRBErAnbmn5YVL4uXQIFzfMyyOnJfeg54nSGcDUdRCH5r+7aBEANZrCSJ5Kapqx/F6aUtS7oIc/kHPXETPjjpDYGzwxk0ZNpnDe6TW0doMt2qqMrBGBaLHUgHooadLyyIIc9ClAEzYiqZuD3AVf046y9dZCEAfuW+lZmYamYEgoWSQ3isbFK+YjfCHjf0tLf2ga1+KEoCAJ+metT9eEsoTHHP+t5AhWI4jg7Ew1FaSKaJcaXlMYfjYNXfxH3mLDqGYs3cRFAVN4bqtN0qYWiH1XE9dvEsVP5CkPDoFvp0xcwb3IjJcFRTqqA7+NDqQpeuvZRzdyv9FuM0t+ls+QX9/i8WNv1xQQJTWKwpGbdil6EiehydrQg8KVQCqBkwOiidabMV41jQd56XwJjU2mqVXDXr48BNvx68GlWe0IZpNxbijYSSloz9zFUvGPTo7V1Ui X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(366004)(346002)(396003)(39840400004)(136003)(26005)(5660300002)(86362001)(8936002)(6506007)(2616005)(38350700002)(1076003)(38100700002)(956004)(316002)(4744005)(83380400001)(66476007)(8676002)(66556008)(36756003)(66946007)(4326008)(478600001)(6916009)(6666004)(2906002)(52116002)(16526019)(6512007)(6486002)(186003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?OFBiDq6J3/AVESmRP7phkVMxX4fLgYFhXGtC+rft6zmKrsKCPOcIsomtx3Co?= =?us-ascii?Q?XNtUQ+ylKlT+iQtOYEDMn2i7+9pRjRad2xEWnL20G/tqHWFU3AIEwX0sgOvN?= =?us-ascii?Q?ALanp8jq6LYa9aVe0yz5oRD4uXSY4TNJYTqROjucJhqS9Wky5c+OkvuMyjZN?= =?us-ascii?Q?m8Uvre+LTtwil8haCwP61R6RKFvTh4X3iqsgD1j2CycOVCqib1WBLmrBZK3T?= =?us-ascii?Q?gFvhiDwEQGb48ZlcN1uwAVqIVbrjGvDcKYtdFZ/UcLw9TKBJhLvxiAepqAM0?= =?us-ascii?Q?IXTA/7RtdampFrCrlrh6LzYl8n1CCBNKh4Xi4SHjglB61qGN7P9MRKWVS5Th?= =?us-ascii?Q?TWQ1FqhmxSqvFUOyZJDVLL7CrSAPt3isvsQlM2Rr6/oVLIAt4DkRB9k7kz7e?= =?us-ascii?Q?VD9ZRRPy0XYbS8etVeTvmpbaE7rnyWKTLT3Za4mQ7TdFyHW6ahrSro3btOeN?= =?us-ascii?Q?3bN5Ef0abUP71nWIlBPxcq8mtzF12Z84LpltXthXHPxiuWwHHFEdxCyjNQB5?= =?us-ascii?Q?sfp8vINcmN5IUrxvJ121K2ImRf5LUPAK7tT4El7nmoE+XYOGu8M355wzUSXu?= =?us-ascii?Q?qVOHyw22bkjWTOPMggtKm14Cx/vgKbIzpJGDqk/EUQOEbtyofGY8Kuo6ulWO?= =?us-ascii?Q?U0udJblXQc+JRrESGxYs7ApCguRqEW7G2PaCPdoigOzCJaWzThYxvqJeYMek?= =?us-ascii?Q?yo9GtoavGkwa6PomFi97uqhSV/ESizlatgllCJDMjTN6e8RVGW40MEWaSHsS?= =?us-ascii?Q?chUcX3aM3JvK8URSxhz9fCZ/6PuOTbV8j9dql1oOz1+kDh4ntmqQo2XjFmn3?= =?us-ascii?Q?BUk5fWHgtDlyYJIITNoyanQXSlDjJ8zyAoPA3tbdITXuqCj9wS/CVvKL7NM1?= =?us-ascii?Q?mUjizKhlI7zjrdpqukKCaT0SLN7Q2Rgj5B5S/E46Fizx+av6pZiVc2vVildE?= =?us-ascii?Q?Kjl+vaueaf9SoeWBuRh3gtnTH/aNChoQuRLe4CF7pKrQgb8RAEDcXlHxWkrY?= =?us-ascii?Q?tVOB91UK5Fl9ZTy+mcXv+WDpzGtwF6DDmOfFVFGAxpcWdBz986ZUo9Hu9Kf7?= =?us-ascii?Q?WQEFopqpECuMrxs7VD+eJQk26dbsUonU47vfQY1cbtae/xEYtBPm7teeWcAT?= =?us-ascii?Q?+xxPQgyHxBMZvmyOgXkre+HUFSfyQe4VXq+lw6EgDFFlnKzHt6SclzhtyAnc?= =?us-ascii?Q?slBUj0Lm3lKH2ihJJ4AngXtRc22HW8QmLJzmOMZQxKSA4YHwWGXJ5jb+eokd?= =?us-ascii?Q?ELzCnw4okTnlqHKe+TUGCfjKVqhnhzD7wSHejCVvGu+GFm5Ou5HOaZdx6FQW?= =?us-ascii?Q?FC9mWQl6wU3Vdo6NL/bYm6cj?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: f1a8eabb-752e-4918-d42d-08d92bf7be2c X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:08:49.8843 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /qk2Ne7s27mvbMtooLg6GpaQi8eNl5H90d/4CVDibFPDmqEDoX0cFnh5SMgZjonYjoi/3F8n4C7z3H3DgTydsWz5TeIYc067Ef67t+N6sTE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB2035 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.21.90; envelope-from=vsementsov@virtuozzo.com; helo=EUR05-VI1-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" nbd_open() does it (through nbd_establish_connection()). Actually we lost that call on reconnect path in 1dc4718d849e1a1fe "block/nbd: use non-blocking connect: fix vm hang on connect()" when we have introduced reconnect thread. Fixes: 1dc4718d849e1a1fe665ce5241ed79048cfa2cfc Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- block/nbd.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/block/nbd.c b/block/nbd.c index 01d2c2efad..f3a036354d 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -408,6 +408,8 @@ static void *connect_thread_func(void *opaque) thr->sioc =3D NULL; } =20 + qio_channel_set_delay(QIO_CHANNEL(thr->sioc), false); + qemu_mutex_lock(&thr->mutex); =20 switch (thr->state) { --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623320466; cv=pass; d=zohomail.com; s=zohoarc; b=c39oY8sLTj/hJsVImVsdngW+5moaDOA+lq2gQCZ/iTFoYTxqyloIBbH5fDwQ2gTenA0onrkyyVHAsJJRCYd49MWChIl3ktggXarOwITfxd40PrZjSmM4l630UVc+fO7hI/mcunxWGT19i5TBjt5Hu8izD/QvZrBbWRLUeUf0spQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623320466; h=Content-Type:Content-Transfer-Encoding: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=gfyV/lNT+69Voc0RKUtZU77KprcOf9q7RvP9USKNvWU=; b=Lg3WHhfNBsdwblqT6ZkqCmxZqmNMPs5z7kDqYxbDwr8H4mSSlJCp7QuMqLrJUYORvTx90gVBJCOQ1PZZQLAmKI7W9LT+KhMTDfbS8M3oLRhNqXb+zvbHPvuMEwRCJSJ9N/D9BAThF9g7d2acTjEK1JyxtRCWBJfvn/uPluxQXOA= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623320466469383.8369208709479; Thu, 10 Jun 2021 03:21:06 -0700 (PDT) Received: from localhost ([::1]:47786 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrHo9-00086E-8N for importer2@patchew.org; Thu, 10 Jun 2021 06:21:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45062) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcf-0005Yb-2M; Thu, 10 Jun 2021 06:09:14 -0400 Received: from mail-vi1eur05on2090.outbound.protection.outlook.com ([40.107.21.90]:8008 helo=EUR05-VI1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcY-0004uY-3M; Thu, 10 Jun 2021 06:09:12 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM5PR0801MB2035.eurprd08.prod.outlook.com (2603:10a6:203:4a::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22; Thu, 10 Jun 2021 10:08:51 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:08:51 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:08:50 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nIngr9BoizHo0VCeNtfjUOwEzUNVeGBMeXAfXuo74WV8G4hl27kEpGWFdRAkuVgWUA/dPkxOn3jfOAuIJxMjpDY4qQpC6kO+MENwu0TuU77TVr7+iYXL6SRaHegYspuZBaZp76VWIjxpiynaGpsBJnI5Gj1BYVqIBGocwMgs0+H/ARieJnDnSyVXRml2PstSumGQrImndoTQ4EbNnsvwgo06QSyWSjxc52MD5xmjUsydB7HqP26yfPfxyCN/4VTg9o0xT7xI4x5Ud02EZon09pOq5qJn77GxFkqosEPqRpscfBwTPjlhEM6imtxUwNmBXY2YwngguCv8BcgT3DK7wg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gfyV/lNT+69Voc0RKUtZU77KprcOf9q7RvP9USKNvWU=; b=BE2+3jvYCB9FJh3oRVjzQmY+wejz37HgIxrtwgjpM+NT/A/DAI/l62OYCcz/G3rb6jJi6tnVNivxU+KELJsaXdxzOjxr6/kWSKeRpyBCavrhT2TRB1Aj1XJLwjDjlTqQ2cfUwLMhbvIJDKhFhUJYfEUaqErgITC7cwFVjXYEL4gftHdT5ZRUzS+suvn+bQHjUWZV2pnfl9PbWjQ2J2uSWeltYrJNOILicmRYFuRUJ23x3Ob/VFHYHmFEz/hf3THiXpp9LKo/JGaOjiDhgJLKlCj6jWiaLhQkVcLg7LkD1fuAUBgk+OzrGiPa564qXRRmHphZpnFwuGpYS/gxq+61Bw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gfyV/lNT+69Voc0RKUtZU77KprcOf9q7RvP9USKNvWU=; b=rdmie26d91U5OrhdKmqZ4pbRPJPS6nIjQfAuYJfDz8hUTmYKsr6JyMSNOmFEuq1ZPgJF+pytO2LOdeeeZQxnYX5zYDb1njiIC/+Q9RzpTk4nJbiBxWXxq3gEMNP3miIZs938hMarMdbFPA034hAfV75BCqdvl86/2yeLlly/HPU= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Gerd Hoffmann Subject: [PATCH v4 05/32] qemu-sockets: introduce socket_address_parse_named_fd() Date: Thu, 10 Jun 2021 13:07:35 +0300 Message-Id: <20210610100802.5888-6-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bf1d026e-a850-4ce5-f86c-08d92bf7bee9 X-MS-TrafficTypeDiagnostic: AM5PR0801MB2035: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4125; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kgasI5oX8VTTf8RXnbVSgIRfwl21jtswp10ijpnQFk3XWdhOdSRrPyPGsTBiDO7AfqKP1mX9heo4/lomOVKHtcWgkXnuyIgww4YjgyhWrPiPEF7moGFDTGZAdO6XkbTM/YUKS4qsd6CiGmECUMUtGNM9VbRylJep3buBNGzbbT1KLzzMQSPPV5u0xGhwD8Lpdb9My7I/qXS5/gPzvU0T8qAqDCk9EuVcU1Px2XDUvRuOvKVLqUS64Qyz7MdBrUvHFE8dVe0A6SVGNPrXNrnZ4I8eFJbhkjfHMsFjQpuUn5rs3of6LVLpUrdOoN9GKbr6zDdh3ec8z2C/nOqytw6/zW36bmHSKHw9R14va+nHLH/n4hpP8UBlfi+zDiyuHbacafJIjLQ/r0qLcExkNdqjWqMrDmzaacaTAEEAEEQO0zmE80oHJSWa6zrVcKbrptzXtXq4HPye36r40C73DJR+jFYfVkwNLDoiKYZQ0JTYSqXWNsrBoWetsf5JFF/N3W5ANxfkndVfj+gMJY/5/phubK81M5tFNLYx64s/EOk9eUVfQ9FLAjfmjvh28GWOTlJnkZUUp3t+/VUAo8dRY40a/5sCpK8BV+q8eRaCh5oXf0CXJ9CrDoLYaL+tH0XkPa6hI14akhe9tgE5jPEsCzRrauOP144sPbMzkJ6F658DXV+GP+ZljYskOUby/m3DiyAz X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(366004)(346002)(396003)(39840400004)(136003)(26005)(5660300002)(86362001)(8936002)(6506007)(2616005)(54906003)(38350700002)(1076003)(38100700002)(956004)(316002)(66476007)(8676002)(66556008)(36756003)(66946007)(4326008)(478600001)(6916009)(6666004)(2906002)(52116002)(16526019)(6512007)(6486002)(186003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?Ke5qNepTSszivLGLGwzP3A/C8g68IMMgxD+hoy5VMUCLXXnkDUzcTlWtqxqe?= =?us-ascii?Q?reMJSpR6dgF3PXJ+xwKZmtJocaE5iTorbO0AJCeZIJg2K3Q67IETof6ZmIe8?= =?us-ascii?Q?+uWCZobePsPB5KagxoC6fyNgNBbOGmXHOhGXA6yO5FUPCNdqAW6fU0gIxy/i?= =?us-ascii?Q?xac18zi8XMSWyYQ1awvMy2LfbIKUuaMWCm4/eQooUWzPotRtDzbClfdyDQKZ?= =?us-ascii?Q?e4bV03jtEsYp1B86jrR5hWFYccQW09Xl40uSOPGiqTzZXBIEYfk1EeG1TQxZ?= =?us-ascii?Q?fUOEK30kC9ZqUlVGp6Ra7f0DM66QtlZ97xgtAnaEwZd9qi4YGHg3ZZHtx6ZP?= =?us-ascii?Q?cFqS7kzEpeCloBJ/f6ORHLik/v3O53Q12WGRswfB7CoM9VKbENyn30jwvfYK?= =?us-ascii?Q?z35Scv1JZ0wF4aWEKajhE7nxlYXybtql03jTYtMZkYY/7ImrhCYiZeqQ/zoT?= =?us-ascii?Q?h47LtirZgYTp/AiL/QAFKKE9aoC75479iuNgG1OnEMipVCXQ8klzSe7WZIMJ?= =?us-ascii?Q?HzW96YobtZy9/yFIS3cRBwMeVCmk0LiTYizXvEk5fZCgR4huewmwXovBv6HQ?= =?us-ascii?Q?4Jl5Z49JOv1DbP/fNWzpGEbavs/KO0DuHwPKP7a5RPOf5rejy6ll4vHVfMei?= =?us-ascii?Q?QYE0rhuXQBI84Fb1IrDL4pwV/KsWtkoX35b4/h3MxlQguI+/2S5qUtUgk/A9?= =?us-ascii?Q?h+Pw2kSwIlvNtGYYe2sKoc/cb7SFQQOWRCoA21ZPa3P7kZaQJff6Q2SnVmQ2?= =?us-ascii?Q?wJ697dt+0qRYx6+GQ3R2w2cU84AvMPu+Ly3WKoyovEJCeRM5RCbDVCeXiLjK?= =?us-ascii?Q?S2I0NoRhRKl04+hS0BlaruNQyLSDL+YDlYpXdzFBJG2akSfJZD1OgbM/G8T0?= =?us-ascii?Q?zzqOLQS9Mu/IIsRiMWYlSwZUG5ok3OWCHx1ZH/Q7QlvlUoa7RaTPKzXLIe0j?= =?us-ascii?Q?PTNGB906IVchMPmqWM3XXby8LuIrK2PDSkTfSGBgHhwVucrqxnqrU9VW2IjA?= =?us-ascii?Q?z/oT6ObBrB2kGTJtEnhTkQlH6Q3Z+xMtmBOSZ3zAzQZEgk7t/AgMcqu01Vp/?= =?us-ascii?Q?P6nR5Aimd5SdwoC7C12P+C2ZEipUk8pgz//jsPOOiFBWsxF7wLGcnrX6+/g9?= =?us-ascii?Q?yfUyPnRtxry+/SpFlIgXLbG8yotQZKacLgIVJ8qWy/lIblAhQo7XFR+p+lka?= =?us-ascii?Q?59BT/YxWMUuzdC5HZvQM3k5UW415HuQgYxx69Cq9xKTeGTMZNtKOG+gqlMdR?= =?us-ascii?Q?IBTB8U4Hl6gJEzfVQpAWbPXsdohePoEDgOC5woN3iCO43hA0y73T7HnibbS2?= =?us-ascii?Q?OXERTAOmbsqGG4qph07p6KEj?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: bf1d026e-a850-4ce5-f86c-08d92bf7bee9 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:08:51.1010 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 6YViIZV1tIi1f7FvNwPkiD1OqsqCizqGf/bgAk+eBHMzMxboS2jbPnj659AMjtBu42FW4woW1t3a1eRxA1DXwmKMEy3xl5BdVu3TOioW3zI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB2035 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.21.90; envelope-from=vsementsov@virtuozzo.com; helo=EUR05-VI1-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Add function that transforms named fd inside SocketAddress structure into number representation. This way it may be then used in a context where current monitor is not available. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- include/qemu/sockets.h | 14 ++++++++++++++ util/qemu-sockets.c | 19 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/include/qemu/sockets.h b/include/qemu/sockets.h index 7d1f813576..1f4f18a44a 100644 --- a/include/qemu/sockets.h +++ b/include/qemu/sockets.h @@ -111,4 +111,18 @@ SocketAddress *socket_remote_address(int fd, Error **e= rrp); */ SocketAddress *socket_address_flatten(SocketAddressLegacy *addr); =20 +/** + * socket_address_parse_named_fd: + * + * Modify @addr, replacing named fd by corresponding number. + * + * Parsing named fd (by sockget_get_fd) is not possible in context where + * current monitor is not available. So, SocketAddress user may first call + * socket_parse_named_fd() to parse named fd in advance, and then pass @ad= dr to + * the context where monitor is not available. + * + * Return 0 on success. + */ +int socket_address_parse_named_fd(SocketAddress *addr, Error **errp); + #endif /* QEMU_SOCKETS_H */ diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c index 2463c49773..86316b6314 100644 --- a/util/qemu-sockets.c +++ b/util/qemu-sockets.c @@ -1141,6 +1141,25 @@ static int socket_get_fd(const char *fdstr, Error **= errp) return fd; } =20 +int socket_address_parse_named_fd(SocketAddress *addr, Error **errp) +{ + int fd; + + if (addr->type !=3D SOCKET_ADDRESS_TYPE_FD) { + return 0; + } + + fd =3D socket_get_fd(addr->u.fd.str, errp); + if (fd < 0) { + return fd; + } + + g_free(addr->u.fd.str); + addr->u.fd.str =3D g_strdup_printf("%d", fd); + + return 0; +} + int socket_connect(SocketAddress *addr, Error **errp) { int fd; --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623319864; cv=pass; d=zohomail.com; s=zohoarc; b=JAx97p+dkmjErKNNhUTHVMk9V79uIbOwZYmZfdCZ6Jl14vuuQzYTXjEOrSOSTwstMVqhJbt5XKKSFhaxtEsg6ELbymYy1XnYPsqKjLNbXBfUoNgH9xJEGrokXtsEGu4U4WbMjzFy7v6n8dxtzXS+R7D4s0CxkXg/8Gpo5UqI0wQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623319864; h=Content-Type:Content-Transfer-Encoding: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=dgTX3zU9mpVkO12PMV6mjN8+K4+rLAqbxNrKSCgXpRM=; b=LRAoTlWDpdahZ8QZpB5bk84MMjMNuL/2Y+g18Wx1PU+RSpxda9qwKcTwzXDdwRSfdYmAEfIzrOJeB467o+jovr2njRqWkJLc92UUalEfgJxyfelY0INvcgr5VFFzFULtMyHK3XLFU1GCniZIlY0Mi5mKAp6Sx75eEny1Gov/NAc= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623319864096673.1491629170818; Thu, 10 Jun 2021 03:11:04 -0700 (PDT) Received: from localhost ([::1]:38420 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrHeR-0007xk-2e for importer2@patchew.org; Thu, 10 Jun 2021 06:11:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44832) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcO-0004w2-7k; Thu, 10 Jun 2021 06:08:56 -0400 Received: from mail-db8eur05on2108.outbound.protection.outlook.com ([40.107.20.108]:52065 helo=EUR05-DB8-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcM-0004zj-Jy; Thu, 10 Jun 2021 06:08:55 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6790.eurprd08.prod.outlook.com (2603:10a6:20b:397::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.20; Thu, 10 Jun 2021 10:08:52 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:08:52 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:08:51 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Daq+cctQiCFsHQK58n2kQ0l0eSbPTKzhzPENaQguFqTjomsBmclO0lCj6Zrf17t0xVWnwlfR1vmhCZivBR3gnVtPf/j9ms4msmm2BhIG11pCZ84nhRI03/6ejHVumukOAxBUMPDKxDF0ZV6vJqASKkE9SbUbd0Sgdx7uZjg4Wu7WsYIZtrOydquOlayqAqbMNALWfT7o6bv7ukGm1T/IDR+p7HS/bgoXRvzBMcuBsmCBYEWHPTFKaSVBNL4ABVOLlEsb/bdC2u5D6R/EvuTZer3nl036H/D+zg5OQJNl+60bPDfAjcaQM3RLNcqOY2oOjbrJdnPakQX+UgAqj5pJxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dgTX3zU9mpVkO12PMV6mjN8+K4+rLAqbxNrKSCgXpRM=; b=ju8FDCkpCpGXRJ26F85kt0GkoxdWKiA7xemGevxt4ZVYJiDAFVwGcXQKEzyu4BA0OjdL8s3d3vPLrh6PAfxFzosiOnyOuYgZj3JWMpZ3t1P5sYUgUKOs1g7mE9h/ZW0QJw8Qr/gYXypjFjIMyTtVCtPqUNzkongu7OQWtz46+1Z5K4mPvbvwWea2btJz5AaBSyW+U1Oj60uWv9MESybn+3G2fFO9/7QJ01b0hrL1chMXfSI8ro4VWVZb9Kh1tAWrAyJFWU17Hkfe0lHnf4qeZRhkrJv2LHTxyEh7gqNsIgOGCx/6/AybiZfgeR6IPGfmSiCZyRaRq+xxcsfmPs7Nmg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dgTX3zU9mpVkO12PMV6mjN8+K4+rLAqbxNrKSCgXpRM=; b=WoOfr0v/LGjPjT8lfQSEHZAZCwWXRqH2Hp1yUBuBdneRYgBI5bGLBXtynhzdJPrFUr0Akv0X+kLvavcjm9F9tW7uDI6srYDlp8YAgEPnj+Cjc72ir4VDil9Ll3PP9yO2XiUYbI/+VOiaDVV2u4USJ44BclRIc9/MeCZdlAw8lMc= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com Subject: [PATCH v4 06/32] block/nbd: call socket_address_parse_named_fd() in advance Date: Thu, 10 Jun 2021 13:07:36 +0300 Message-Id: <20210610100802.5888-7-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9daf8238-99d4-4c77-4922-08d92bf7bf8d X-MS-TrafficTypeDiagnostic: AS8PR08MB6790: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:530; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6bQXgCt2eVdtapTM6yowQBxpVmZGC7nOhultiiFFvk47BFViCt4+fB1rmDqHOhJq4PdRZH6HCyQbwTNK9dlHEOi2kf0j8aOXQcgrm6hxF6rU4CCLZi6aFw/k6gR1x8hFMhB1blj1g2vKAPkGnImD8Hvkn0U04NoNoK13SZA2qxabIB+4GouQEvRqO32qBYgo0s+QDv3uyg+zPDPWt7FZ99uQlyFZ31QhTSNeid5MtV+ZNa2/ljG9HLTKEVxsPvQhyVw4bWbMqWN3Zz6vNfXjhk4v84Lj2TjGacSil39L1dsK5YnwbMjqwMLfuxmdMIjNiimoIaVYwxcuBtCi4hBX8ud9NSj8f92P9w8esDa0KWTpwkW343QTB8R6FgTqQ2V1vuKY0gOm0qHggdlTbaj7wgS6HKVxTpb8BmhHTyrEsre+4HYVqz3AAmh5Sqf8/rS+aEwyD1kEAOG21lHGUu6Qu4IqPUr9g0YJIVLPhfH9JK8Ccg6T34S9eMxOFACgUTTLmisi1w82TYj/cv17CdcbK5ZBb7tX/mYd9bdSqcdbQmkvHGFfivxXICj+xZgLPs5v7bYDJjDS59gAweT7LnaUG+x26ssmN2k3dnU/XmpFWf55XGYrb7ozZytDXpRaKA9fqKpmBeQr6v5aC61VN0mxuAHCTZFtr/tX2DquNPRvlz52+nrK/GwMRwynKvO/vaBZ X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(346002)(136003)(366004)(396003)(39840400004)(4744005)(478600001)(16526019)(6486002)(6512007)(83380400001)(6916009)(66556008)(6506007)(66946007)(26005)(66476007)(5660300002)(2616005)(8936002)(38350700002)(36756003)(86362001)(52116002)(8676002)(316002)(186003)(6666004)(4326008)(956004)(2906002)(38100700002)(1076003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?1t5+ynAM9x+4vb7bQzypkwttRPzoEaswjuU/b+wLxAuQwytvdo3JsZDRe41Q?= =?us-ascii?Q?U/ezJ9bHeiE59u2ZTmwGOW6nvCj63wRCl+oUOSncKs0xsm8QAsa0aAvpLULK?= =?us-ascii?Q?WS86FR1ge4MjUpAI6+1o53nqC1mpgPeS/aX3eRWHia6vMWqhudPuwPFp6ws+?= =?us-ascii?Q?AP/LWvJ8GQk9pJ6R9Slg8Z96iUBCP3BbeC00i7XolNPyEELLbmov/Fn+G/pn?= =?us-ascii?Q?/q5G/E3roeIgMIDHHSTCtC+HqlSG8b2G+2CiBfxCYei8wkgHlIiNaodyeJch?= =?us-ascii?Q?khYUjLFGMxnUKWuSXPN53xZ0dBr1zArCSlyaG6dzNPtY059kav5BnX5QFt/j?= =?us-ascii?Q?xCG3/lIpPxFNxQwwgVWPQ368xbYzkCJpUXNjdGNLP4rviAS56YcU94Bi9dwW?= =?us-ascii?Q?dRo3cP4BUAwZBO8KwHGVPJ3491id8Hsq8TRukjo/29ZPVz/cZVX4ZEXk1Cl7?= =?us-ascii?Q?P8mf6xinlQrKwOoa9hSgFdDjdOwMyKqZBYr/hi5uGjd0/uLzT8c5d0Zeu3gM?= =?us-ascii?Q?rF452G6PYWA9KP1FXzDgSR2e46cTEq68BS5huKzVb4Y7h00CC4Pxa1vCPpSq?= =?us-ascii?Q?dFh04rEiduEWcwFO3HSmbDtv4OdW2/wv0iLxjt9zD5yBm3SAm1kkqLCzGlI2?= =?us-ascii?Q?DaGPwyZBphDnWUT92l+63+pWT+6oejAI62akcporrIq2FzlyfO7352oWwPd3?= =?us-ascii?Q?/CyWQazRYg11qfdo5ci7ItwJpd3wj2l1ndnI8uzY01lFdhFOPm15yyCPxiTC?= =?us-ascii?Q?wnhaVQRh5RLlEKm+/ee7FvRI1iOLInAqSVSvdzg0bDQa0T3eO9aJHsZRM5rF?= =?us-ascii?Q?W2QyZFiPdA+fqcK1F3jf9yo/gS4hMT7v0gdHh5cX9XqMuabGdbHvkllo4cg6?= =?us-ascii?Q?PPmuvsboduhGYTeStUkTV+1olW75pBRI5H7P9baZrXn1I/3OValv1cjtiCTp?= =?us-ascii?Q?mWW7I2co+D3qF4TdhtFXrl1kETEpwWrYzo5774xiK5fSWYpVFwr4xtbXJjYc?= =?us-ascii?Q?aiJMNrlC3zvFOGXxQB62rPhRYbCanK73PmhHjw2BFRnVTRadkWZCp4cOwEn3?= =?us-ascii?Q?OGcUkVTMViK1ngxcz5h7RESO039/ycSfvF404EXdfl6rQlGkG066ADNxgszL?= =?us-ascii?Q?EdcJf566d4xUitqHlOYrJasnjkXSeBX6yZhZhisa00zODGcfIxdzDnFMM/ef?= =?us-ascii?Q?sSJUmsIYT1JGyymno/S0uYHA6p7nMqQes2JYEnq0lZsfC2CaKS4B0aC3+LHj?= =?us-ascii?Q?tgBFV7lq22A7lvslEk5FG+4pnQuH7vyjKi3BChIf+L6rn84ID3FzurLkUpDP?= =?us-ascii?Q?kdiB+W3pyUfBzmADUTP3yyOT?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9daf8238-99d4-4c77-4922-08d92bf7bf8d X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:08:52.2022 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: K/UOx7PbIp26+1P0QtgaljXBh9lgXlmF+1U4pwIDfp6xJmwO+XC61atxBQZ3S7IGcA0hwn4THI9iYeS9p4jUsf7SPUYVok93KptN8pudRqg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6790 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.20.108; envelope-from=vsementsov@virtuozzo.com; helo=EUR05-DB8-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Detecting monitor by current coroutine works bad when we are not in coroutine context. And that's exactly so in nbd reconnect code, where qio_channel_socket_connect_sync() is called from thread. Monitor is needed only to parse named file descriptor. So, let's just parse it during nbd_open(), so that all further users of s->saddr don't need to access monitor. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- block/nbd.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/block/nbd.c b/block/nbd.c index f3a036354d..1c99654ef7 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -2140,6 +2140,12 @@ static SocketAddress *nbd_config(BDRVNBDState *s, QD= ict *options, goto done; } =20 + if (socket_address_parse_named_fd(saddr, errp) < 0) { + qapi_free_SocketAddress(saddr); + saddr =3D NULL; + goto done; + } + done: qobject_unref(addr); visit_free(iv); --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623319877; cv=pass; d=zohomail.com; s=zohoarc; b=aAqujPIWEQC8MToi1oG5Vua/L8fnY3gok2TJyFuX2rDGlikV0WruFJ5Ohu48wkdbLNMlRuLqGnmFVFug/aDrKaODVB5PAxkQ4sne653aagvipQnbtg9q9UcZOIvF0unZlOO3UaSqKN600fTBPdVCH9vn++v5mgufi7VAvBS4UlY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623319877; h=Content-Type:Content-Transfer-Encoding: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=la+3tbnBG68ClEcvYsihRJuUQ2ywaBEOO3TcGc6RyJ8=; b=K086m5yHxStNOicIojcd8+SHpYmIA3MzW1cpOeK4QOCpErylVY3wuUmfEFLwD6By34LwnsFh+frBZyPtuhPJKOL3bHLVk2GQLsqq/BGOAf/VT4hUP/A++V7bWVvEovRCdPxqp6wbvupYxmOlb9e4QwHObDGV9CRwddhza76s/yA= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623319877675450.25028053770063; Thu, 10 Jun 2021 03:11:17 -0700 (PDT) Received: from localhost ([::1]:39646 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrHee-0000Mc-HA for importer2@patchew.org; Thu, 10 Jun 2021 06:11:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44870) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcR-00054g-8Z; Thu, 10 Jun 2021 06:08:59 -0400 Received: from mail-eopbgr50133.outbound.protection.outlook.com ([40.107.5.133]:23957 helo=EUR03-VE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcO-00051Z-Tc; Thu, 10 Jun 2021 06:08:58 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6502.eurprd08.prod.outlook.com (2603:10a6:20b:335::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.23; Thu, 10 Jun 2021 10:08:53 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:08:53 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:08:52 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Zi2UQHRGlYqTLOy4iHagMKinH4pET8bjWuMxN14ohUnwrDVVMNbRajlo3xTSaVwewADAA09LUf6nGpijzn/u04Y88s3fbURwBsPh0pYHJNYbc/Pqim3YmN1bkvQxg9ebBkKyX7riOTbh7zHhIaYEb7OB/aSOhfp6dA4xeFwyIEmqU8iHSDlvd9e+tiLcbOTLmaHdR2WxOAGCuwwKPp7anVZpX36IRO/opBue2ztgzguOltK/Fmbl5LUApd3LuCcinybpCXtLPo6q093Uuz3McIirw/4CMggDvWmUo938Sv1GmBfZdAXWossCeI/UX9XXV+vdzb79G7qb+TtJL8zXeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=la+3tbnBG68ClEcvYsihRJuUQ2ywaBEOO3TcGc6RyJ8=; b=BB/I5gK4r0+cStrytcxuZ8rNCb/1crYp7utEtq9Na4f8QkvywbRPxCmfJe7FTYHq9zlJl1MPS4N8b6c0SKenaEWLh0kXKzfH53CG2iQTvyLe2FcHM7SzKV8gz1k16ew91GXUmgZxiKvKxa2Puc/EnfP1Hmhp0jthY8aCCYyMdrTlSnjPEes2KdBk7/cbmhdxOGhOAhsIz3I8UeKCx1s0uCKN3wZjuGlQ/wmk7C+vDo0O/znCvSZr/N6sdNCQSGD2Vj9Zub6+FFGisPsYMpmSbHbcQhMjkJA/xFgs1JaY8KZIq1PoytN9BFzD6OUVq7ofiPtj4J4nyWYq42+zkI5H1w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=la+3tbnBG68ClEcvYsihRJuUQ2ywaBEOO3TcGc6RyJ8=; b=NGQ3KAVB9kMOMSMXL6/QPwFeRUoQtdgkzUFOBbrKac9som6b9HEQQf0lYn6PNJ6QBa7LoeJUoGjJGa+vDciBjnvatXTDev5vK5RC2vCZR5nnJWthUdvrc43EKUOw0mNEhLetQbOYWTej080ADSKIKndytyTOt3Aw1YzoPWtQU7U= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com, Roman Kagan Subject: [PATCH v4 07/32] block/nbd: ensure ->connection_thread is always valid Date: Thu, 10 Jun 2021 13:07:37 +0300 Message-Id: <20210610100802.5888-8-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2328aad7-ce74-4512-7357-08d92bf7c03c X-MS-TrafficTypeDiagnostic: AS8PR08MB6502: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:758; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: U+34GDrNNfg0DjVZVTINBromZb1w8aybLxluZjaRulCOFq1n8MCNoZfkUMhz+jmE2Y3btsipb7WJEQ8JYToPJXTUx2XNM/nntE43DQk9GJic8VUORATDdOYfBzlIzAVCK5CQ2kYgnwASomNBTlfMPLPDj+YRu2tKuHLwMaw9xdewqUYhugPgQNHRyf9pdQ/JuSMKtAYWlhxlXb8yk0bVfNeHdKmK00lOX/ntVvQ4VE4GGk4+zOG47VEXZs/Yt3Aq+uk0gz6Dmz562zPQ+msdk/h9cja7uQmqFlZ83o09py5J+gUR2aMvdKetKwnx0QnhJq2OnjL14E8Mmm0QmrjzidqX5YwS/0JVTuTwhGCjMqj655wGD8DwEP3JNMlYaelqEz4aXZWdfDEgyrh4lIPYaR1fBiYCanIceBq291VtJwu+jBg40iPvqnyzRzeCPOvdEXPskP8idHmqU7dYnuPw1HzujGAviMUG6bsrLAxMpQV2B88Pq8DdSIdSQ2vofP6fW+biq6fxF+3bSvAanaKjLJAawjJg8NiFg0qZZ9OOF3q6k781MEWRTMjm+LGgrE8ZwgAUZ00jO67UMD5atM/dKYxDS8eLJkT7cAcW6f3Pu5d7a9CTlak6Y4l6xDggLYvTuLUrwV4111K6dtodAcFLjvcIdECcZsCd54AKafw4fEOFLZen4mBMr7EqkxfODhw1 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39840400004)(376002)(346002)(396003)(136003)(366004)(2616005)(956004)(6512007)(66556008)(2906002)(86362001)(52116002)(36756003)(6486002)(6916009)(478600001)(16526019)(66476007)(4326008)(186003)(8936002)(1076003)(8676002)(6506007)(26005)(66946007)(38100700002)(38350700002)(6666004)(316002)(5660300002)(83380400001)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?vkfUS3RRYxMYO7xq/IviE690xWqIZVgc+VVKFiU0I1673uEzdRmsLcTIc+Gq?= =?us-ascii?Q?J4w2PL0/uL4OiwnA0gEyAyMZlAuor4NHclkyldiBPcD4b0XT+RNXwZURb0zJ?= =?us-ascii?Q?OYCZoSXV9BSFYBlogWGhyKdbNVh2DAAgEp73GQXBsEXqq/CE9zb6lYs2lKiJ?= =?us-ascii?Q?T1OCcAFVYCLL6onDfR1uuwCxTsykiUxfCA/OCugRQoEN7zcGwtPP/VIEAumr?= =?us-ascii?Q?afIUiZD0cwZaIClbiozSZWZ84gLZ2B2ZCB/ULj5oJCJqyjk9Rbrf0wjT8O88?= =?us-ascii?Q?WaRnxzmQ7SBekGnPgh4y5wE7NZCnY29uswKFTYLuZZLBj/CzrOQL1iPSvGfD?= =?us-ascii?Q?BC0qy7Fz4kf5Ao4XnqmyiFSD2JjcpW2gdeDnkmIk1Bycyis0N1jnrP6ZJ8wy?= =?us-ascii?Q?l65zx46/N8QB/3jCzf0mnmV5jV5wIwVjzWCV+EmQ3lGc15OUWk43OhFtYSPH?= =?us-ascii?Q?0eW3rEAJZDb7AowNjkwrARO20XPbIo8ycHVNGWihImueHbjIYUgqjs9hjfqP?= =?us-ascii?Q?LK1qPZId2xbG0f2Yoe1RlMzdqn3KTryXOkXMGwuIJLm52LrnzBgNXhNWJhpF?= =?us-ascii?Q?lO65oYcyUTXo+eOZvsJk3s2zmmJ8IpqwiwatMDWJEw5jDgErUBqisw5nJfz7?= =?us-ascii?Q?ZWiiQtSJMnlYXeAJqT48mie5aErqGcXsi4wEhw9aV0Mg+iqiBg2n84vgSK/6?= =?us-ascii?Q?xO6TpvcrkYivG+z5Upwfjqm5D/MDpnCIZqeH27V5gbN71mtHwLitQtH/U9Ks?= =?us-ascii?Q?lyV7Ne+X/J1SEQe5bsDYD9Mpjr1YCUBuCp4jpk+v+2CCWsg/+gsuyqjmvOev?= =?us-ascii?Q?RqsILD/hh7kLyyMkj1kVI3wYM6zDwkPunumQIPN8Rz+4iqnGxKxV4umCi+Gc?= =?us-ascii?Q?ktX9o0PdSq/UTlqnZiwElCAlhp825onpG2sh+FrOrTfvGnwMbhFEjpDCPkxK?= =?us-ascii?Q?BH5EffAzV9NqLHLKNr8zFx35hGf4YwTcXdEnU6ZBMpLKdcaXpWniW/cwCicm?= =?us-ascii?Q?3yUVv+8LdZ14SWihawM0UnrD0BsW5MUrGT0/mw3EyKqBYXuLOZvO/or99TL+?= =?us-ascii?Q?x3iqNrCTMznulBJRhLHFpu7v66uW/U6xRKUKihdCBXpubDzP6/F62ytvtMwO?= =?us-ascii?Q?wydTVZJDHxPEEVSSDBOKgEEICH2/H+9bdEg557AJ4VKXdXVoTX2Ytv0VVUyl?= =?us-ascii?Q?Ld53cebdXTJvKF2t3DfuK9sH2t4KPIzqmkA0mqMgqODx6VOeeE2IaMvi8l6p?= =?us-ascii?Q?kmoeOaFVMBjeRTuitdo3AwDAayUKNYOB4UB3HMF1g3t1ACbCYuNZdHWJrDhK?= =?us-ascii?Q?ztQcz8OVkh3ObCFscZwYnUKV?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2328aad7-ce74-4512-7357-08d92bf7c03c X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:08:53.3292 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: PTcr/YFXDycGPTGf2774im2w/ph/A05RP7aeyapWjvscBP3WtHGmzYrNhwe5ifolAskK/JEHmsyOBmZ+E02Jq1CzIVhOD/iAYfwNfwpNHR8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6502 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.5.133; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-VE1-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" From: Roman Kagan Simplify lifetime management of BDRVNBDState->connect_thread by delaying the possible cleanup of it until the BDRVNBDState itself goes away. This also reverts 0267101af6 "block/nbd: fix possible use after free of s->connect_thread" as now s->connect_thread can't be cleared until the very end. Signed-off-by: Roman Kagan [vsementsov: rebase, revert 0267101af6 changes] Signed-off-by: Vladimir Sementsov-Ogievskiy [eblake: tweak comment] Reviewed-by: Eric Blake --- block/nbd.c | 56 ++++++++++++++++++++--------------------------------- 1 file changed, 21 insertions(+), 35 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index 1c99654ef7..08ae47d83c 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -144,17 +144,31 @@ typedef struct BDRVNBDState { NBDConnectThread *connect_thread; } BDRVNBDState; =20 +static void nbd_free_connect_thread(NBDConnectThread *thr); static int nbd_establish_connection(BlockDriverState *bs, SocketAddress *s= addr, Error **errp); static int nbd_co_establish_connection(BlockDriverState *bs, Error **errp); -static void nbd_co_establish_connection_cancel(BlockDriverState *bs, - bool detach); +static void nbd_co_establish_connection_cancel(BlockDriverState *bs); static int nbd_client_handshake(BlockDriverState *bs, Error **errp); static void nbd_yank(void *opaque); =20 static void nbd_clear_bdrvstate(BlockDriverState *bs) { BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; + NBDConnectThread *thr =3D s->connect_thread; + bool thr_running; + + qemu_mutex_lock(&thr->mutex); + thr_running =3D thr->state =3D=3D CONNECT_THREAD_RUNNING; + if (thr_running) { + thr->state =3D CONNECT_THREAD_RUNNING_DETACHED; + } + qemu_mutex_unlock(&thr->mutex); + + /* the runaway thread will clean up itself */ + if (!thr_running) { + nbd_free_connect_thread(thr); + } =20 yank_unregister_instance(BLOCKDEV_YANK_INSTANCE(bs->node_name)); =20 @@ -295,7 +309,7 @@ static void coroutine_fn nbd_client_co_drain_begin(Bloc= kDriverState *bs) s->drained =3D true; qemu_co_sleep_wake(&s->reconnect_sleep); =20 - nbd_co_establish_connection_cancel(bs, false); + nbd_co_establish_connection_cancel(bs); =20 reconnect_delay_timer_del(s); =20 @@ -333,7 +347,7 @@ static void nbd_teardown_connection(BlockDriverState *b= s) s->state =3D NBD_CLIENT_QUIT; if (s->connection_co) { qemu_co_sleep_wake(&s->reconnect_sleep); - nbd_co_establish_connection_cancel(bs, true); + nbd_co_establish_connection_cancel(bs); } if (qemu_in_coroutine()) { s->teardown_co =3D qemu_coroutine_self(); @@ -446,11 +460,6 @@ nbd_co_establish_connection(BlockDriverState *bs, Erro= r **errp) BDRVNBDState *s =3D bs->opaque; NBDConnectThread *thr =3D s->connect_thread; =20 - if (!thr) { - /* detached */ - return -1; - } - qemu_mutex_lock(&thr->mutex); =20 switch (thr->state) { @@ -494,12 +503,6 @@ nbd_co_establish_connection(BlockDriverState *bs, Erro= r **errp) s->wait_connect =3D true; qemu_coroutine_yield(); =20 - if (!s->connect_thread) { - /* detached */ - return -1; - } - assert(thr =3D=3D s->connect_thread); - qemu_mutex_lock(&thr->mutex); =20 switch (thr->state) { @@ -547,18 +550,12 @@ nbd_co_establish_connection(BlockDriverState *bs, Err= or **errp) * nbd_co_establish_connection_cancel * Cancel nbd_co_establish_connection asynchronously: it will finish soon,= to * allow drained section to begin. - * - * If detach is true, also cleanup the state (or if thread is running, mov= e it - * to CONNECT_THREAD_RUNNING_DETACHED state). s->connect_thread becomes NU= LL if - * detach is true. */ -static void nbd_co_establish_connection_cancel(BlockDriverState *bs, - bool detach) +static void nbd_co_establish_connection_cancel(BlockDriverState *bs) { BDRVNBDState *s =3D bs->opaque; NBDConnectThread *thr =3D s->connect_thread; bool wake =3D false; - bool do_free =3D false; =20 qemu_mutex_lock(&thr->mutex); =20 @@ -569,21 +566,10 @@ static void nbd_co_establish_connection_cancel(BlockD= riverState *bs, s->wait_connect =3D false; wake =3D true; } - if (detach) { - thr->state =3D CONNECT_THREAD_RUNNING_DETACHED; - s->connect_thread =3D NULL; - } - } else if (detach) { - do_free =3D true; } =20 qemu_mutex_unlock(&thr->mutex); =20 - if (do_free) { - nbd_free_connect_thread(thr); - s->connect_thread =3D NULL; - } - if (wake) { aio_co_wake(s->connection_co); } @@ -2310,6 +2296,8 @@ static int nbd_open(BlockDriverState *bs, QDict *opti= ons, int flags, goto fail; } =20 + nbd_init_connect_thread(s); + /* * establish TCP connection, return error if it fails * TODO: Configurable retry-until-timeout behaviour. @@ -2326,8 +2314,6 @@ static int nbd_open(BlockDriverState *bs, QDict *opti= ons, int flags, /* successfully connected */ s->state =3D NBD_CLIENT_CONNECTED; =20 - nbd_init_connect_thread(s); - s->connection_co =3D qemu_coroutine_create(nbd_connection_entry, s); bdrv_inc_in_flight(bs); aio_co_schedule(bdrv_get_aio_context(bs), s->connection_co); --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623319998; cv=pass; d=zohomail.com; s=zohoarc; b=PReL0ZcRDArPZLplkOMhqSRArwxgHA7rqQpz6vfVB7xKy/n3njY0bc0Ps3U6o30HTWYuVxQaiJUO7jFZ83uWs4yoFX5MxvjTV9qOYyYCY7zkDAKDZAVewAw9/zU/vJWYqILMANNdzILDyb8dpKBxG8eCWCImoAIkA3/e/QZaEhk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623319998; h=Content-Type:Content-Transfer-Encoding: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=jmnzYabBpR15Vyy9Ktfx9Q1U5XsfXnSdcjApquFc0vk=; b=BGTI5Gxpv8dTieaiY+bk2lK0yip7U/ZKl90AWpv+OdSCtONxCg2quNmw8gQWKs/jcK2uW9SzLybl8iBuDorDG28Z4XX5G53zgZl9OIgJLl7zh6gL7tYC6GOm1MCcNgjFQZO4LlIfm2Wanm/x9Fp4Sy3EJpYsI+hqDoktZwvKaso= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623319998914140.34200850943193; Thu, 10 Jun 2021 03:13:18 -0700 (PDT) Received: from localhost ([::1]:48286 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrHgb-00068D-6g for importer2@patchew.org; Thu, 10 Jun 2021 06:13:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44918) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcT-0005Bk-JD; Thu, 10 Jun 2021 06:09:01 -0400 Received: from mail-eopbgr50133.outbound.protection.outlook.com ([40.107.5.133]:23957 helo=EUR03-VE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcR-00051Z-Ur; Thu, 10 Jun 2021 06:09:01 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6502.eurprd08.prod.outlook.com (2603:10a6:20b:335::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.23; Thu, 10 Jun 2021 10:08:54 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:08:54 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:08:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=S8j2MMsWhm+Rb2F01PP9fLueVZ7NQBoP5kiU4NRbFo2VN3+CDKb8ZeHX23P/oiyIufe8UA0CaFHFfOq0EB999eZJ2FCdaA5zkZJtWEJiqNUyNxPSch+vUFg8rfYNC4P9aookDsrlKOp80EI0TPbhcQItZmPxuyefW5uIuEwWaQIGNmJGNQfYInvCLybSBSsdKzE8QMO56Yw2cI+bP2dBJUZaOzH/L3XzFMvAVAqOxwUMGD9MnCLkQq318uIik//QPX6pSfDH2wm3B6shzNdPs2vYNug+ZsrGqtRLcTFU9Exj445r/jX11JSiP9kLf1m0jCPkKcPuMe8uTgwRaRT44g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jmnzYabBpR15Vyy9Ktfx9Q1U5XsfXnSdcjApquFc0vk=; b=e8njMxJGNZPn9MKlydj0yDjczmmgrlmW7rlyiiZd54wDyhoT/eWI8Imyd9RYcOONKNBSdjLANYo8AhvXcGZqGJ6n3w+gEMqaRusMjeoAdGKT+NHchYDudzzAvHdxcElru3xabp7uy94dAKiEtwLowy4FGSuPqA7wE5q1lgLHhcGofpM0LfxfC8C7OySUhA3ICS93tQ+knCQk6LvoTt+aWY2/+ZD6Y2AjbSb+bqrmzs9kzh9YcqC1b1AbdqEVcmZbQmislHyOTsfKG/F9GmFUpK3KFuD5IbHtRLj0mj24bBttYj6B1eSBwUBt07tt/lu7+E0XRuWLyREUGtfrDSz35Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jmnzYabBpR15Vyy9Ktfx9Q1U5XsfXnSdcjApquFc0vk=; b=UM6sLElWB5VlO6QJbvUMPiRxC/CbwLOJrrWiHFjb3n11m/ySvKfTNM5jJM2s39SuLTyeVe18seJzg6r1uypALCmrlRc1pu69D5SOEEJEj4YnrglL3SVnbV0bpwu8giQxNGo09SlybwqmXDBzGqPn42EiTXJHKdn2Ltxik3FovGQ= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com, Roman Kagan Subject: [PATCH v4 08/32] block/nbd: nbd_client_handshake(): fix leak of s->ioc Date: Thu, 10 Jun 2021 13:07:38 +0300 Message-Id: <20210610100802.5888-9-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5252a724-6655-4ecf-c474-08d92bf7c0eb X-MS-TrafficTypeDiagnostic: AS8PR08MB6502: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:52; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tABKGa7yYVn1opmriGgvorunpJacPvQYImkt/oumOzcay218GCWlsnfu1zcev4JTtpNtwKhEw7D478ACZPz4KSS0Go+7A10eOPss38pgEd47eT+KWX7QAzAbnZhCYgOHI6khrbDPJTDRhQwsHYRCurdN5i1Pr7/jNxfHQw+c+n8QUCFchb6+f/zKK4CqRnreKpJUdHTNcEJPzUe0t307i1oIJoyPCu4kn1mzlOdabmajr8RzstLxw1XDFDq3rAVOVmFVzT3pV+iV2fKRKbSDhYoVqDjeOqhdR3/S15oey5QPx8O9nZYNvm9dHk5Isz1RBatnu8WZ4bcNgEmSrL9KMuSjjbmOcLi37zTQ4ZwB40hTK3ztDdGoTGsB5/QSPmGjTuZMHscCBY+k1AwdoWbypPRfpGadRAA/UMhm+QebQltvMdQW41HYmsrFYJFTkF6rNsT8SkFMVGCfXXVgwji+aYtLW26evQzunyf+D63/7UQPD+aC2aOZ/rMyysGQOn33IURUjBXJkfRZ5Ugf35olQha7XlIfwKECn0XJrUdpHdDM0bSp4dbJQINv1KLd/iHq+jTy8FnznJ6sjfNzTHsT1sjRacj2KZ71Eqlx4qTtKHwE9W5Ds0a+MHaZ6d5zQBrWeKg/TeSiGRChh9GLT0PzmYj1LV8XmoQvPgPnryPLSAOQX5ZRQjKWc4ZxGmZabLwN X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39840400004)(376002)(346002)(396003)(136003)(366004)(2616005)(956004)(6512007)(66556008)(4744005)(2906002)(86362001)(52116002)(36756003)(6486002)(6916009)(478600001)(16526019)(66476007)(4326008)(186003)(8936002)(1076003)(8676002)(6506007)(26005)(66946007)(38100700002)(38350700002)(6666004)(316002)(5660300002)(83380400001)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?lapOP59PVDpK6XCNlT62zwgm0W7Q6RWle8lnpLAPpmltWpSsPda3rzScTXIo?= =?us-ascii?Q?pNGQ934jbw6oYIeUc4rMOUzITNiBy36s6KMRDwWrD8+105aGWKhQJ9SmTvnu?= =?us-ascii?Q?SbtZRr1o1wFI0UzMTPaiXAfGYfPF++OXGcunMs8meEnKaaNa9R+Nwfa6xYLT?= =?us-ascii?Q?LUSBYRL8u4UWGrtLFJUTPgFisxy41hhhcBu8uefz0HAfBf2fw0CG3q4yHHij?= =?us-ascii?Q?e7M2dV+PUaueB+66AG33erqAfpIlq02rrzmBWLrgz+ZJ2qS/hVne47dK+UlG?= =?us-ascii?Q?2FqiR/dnrDEIigqieJNN3aqo73UcI5XYwX+BzcMlUtLz1zbUqtVslkvRoDJL?= =?us-ascii?Q?RZ4FvMjswZ3N/cxNfrNCcTrjEazJK5FvPdCMfSOdVXvkZ0cdLO/9ZuZkuNXQ?= =?us-ascii?Q?biw9OrQAEk1KTnTRDxb0MJW8wZlePBztk0wSjh2kXH0eJkUmIITWJ9Z0hNJH?= =?us-ascii?Q?ppOc1nJpUW1TdYCgfA09E7AFXqbsNTkrEJ7MwGBSR5bBclw0YyPcundnSZJC?= =?us-ascii?Q?LqrRj+07e2uOU68PZY9Kk6mbszMLliGkcjLbc0Sr4iop/FT26wrAEEQKqVWq?= =?us-ascii?Q?alAt0JAMS1tt2dbA62jhFZw2gQbW5+dhvgsd/CCCSVHunR6Jrf9uUMGRnGgN?= =?us-ascii?Q?m92YtlGtOJKKqA33F0SbHkAPbiKT51kCn9kz72CriJsUleHjAApUzsFy0wSq?= =?us-ascii?Q?r+gRDihJX+NooBzOggFMNY0IoDxGXoj7rT8uCKqbVQuJ1rjGkr97UWL4k/I0?= =?us-ascii?Q?CrbWqMLtfuVkm4RFpWmtuWrrNmUvzkkXwYG8yofk4y8HN0zeBtOV1jCRBZLw?= =?us-ascii?Q?LhaoaTl5gF3DpJa4tldZR4gwior59Nd8hju8hT/Ix9IUxakkcanKfl6SrSc+?= =?us-ascii?Q?R+vf61xTNLGaSYX53Izd6pG8bZfO8Ui9XKa+pTBvjECL81CaJfbndqIr6tWX?= =?us-ascii?Q?HFtjuX/p40wkMhsQM9rw2NmLH4xyRF2iFNcyGS7CPRPmfAOOlaMxPWd/Jyxq?= =?us-ascii?Q?sPNg59EkQsfvGqXbRmXo9CcNJD5Q9UKyQFKnYbZ/ZCtMac4C2o/QS1xIj4wD?= =?us-ascii?Q?gj8xYs+xg4qQTR37OuoF5yAn/NJdbUvUnZnvhkkjnZWI8dIVmjSfoaoo4y+j?= =?us-ascii?Q?LZNTY+gpr18NRlScy45qmr9YPqWliI1afd5p41TCmJ3mEKcTqZi7K2AEhe9l?= =?us-ascii?Q?M/56ZTUqDPQN/HRKmZrDcZZM5LIMFiuwrZzzWloSOMqG3zxDSBOp+YT90/6i?= =?us-ascii?Q?F0i3LDTHYoLtEJy29o0BC+xJoeKI+kcDd2uTH54AWj6aoWfe7wY2b3Ijk23z?= =?us-ascii?Q?MvWEEhosb8KKLo3mUBxxym8+?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5252a724-6655-4ecf-c474-08d92bf7c0eb X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:08:54.5001 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: G50BleEmWL1kPYqqSeuzPvzaVzEFSaM4x9o0F7u7YR0NSVE/MfLCDoPz+Yqce4/iP9knN9kuBeAkIsNFLG1yBFvXe3toT4UTmIKY3UiSx5c= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6502 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.5.133; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-VE1-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Roman Kagan --- block/nbd.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/block/nbd.c b/block/nbd.c index 08ae47d83c..77b85ca471 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -1889,6 +1889,8 @@ static int nbd_client_handshake(BlockDriverState *bs,= Error **errp) nbd_yank, bs); object_unref(OBJECT(s->sioc)); s->sioc =3D NULL; + object_unref(OBJECT(s->ioc)); + s->ioc =3D NULL; =20 return ret; } --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623320301; cv=pass; d=zohomail.com; s=zohoarc; b=bay6BDd8mnCbXoHyczRnUpvN4Xx2JXdtoobaHOigKcFHDByc9nUlMUOseFsno1jKfKrnz8yhcKpcqEB+JTzu+bGU6ycwCO4CitNtiUyrDfGTCVkix2N7/A3QKDjyEP61IIsqglaXfAOU/aWUcAPeHiyXUHD4+2kboI1ABhM3bwU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623320301; h=Content-Type:Content-Transfer-Encoding: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=8qtL1Vqw5gCkHfoQob5NHNm3VCDQStHuKLQ8twf8Nv4=; b=LzLh65PXjQ1XOh/KuTW9bZU7xR7rHTH+Alz/2ipKQH7TmmiVq+ZJai0BRN1pGSCYHMzdtLnP20wg2moWNzmN/uJbZhAh0Je+w+/BKAiEivADneldjs1TQynFrA/QD6ukhbSk/Q6TqD94WSgjQGffKjxlePFGaEFnV0FknA2d/8w= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623320301217586.3859738673552; Thu, 10 Jun 2021 03:18:21 -0700 (PDT) Received: from localhost ([::1]:36408 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrHlS-0000Hu-DI for importer2@patchew.org; Thu, 10 Jun 2021 06:18:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44944) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcW-0005Kc-7K; Thu, 10 Jun 2021 06:09:04 -0400 Received: from mail-eopbgr50133.outbound.protection.outlook.com ([40.107.5.133]:23957 helo=EUR03-VE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcU-00051Z-8t; Thu, 10 Jun 2021 06:09:03 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6502.eurprd08.prod.outlook.com (2603:10a6:20b:335::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.23; Thu, 10 Jun 2021 10:08:55 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:08:55 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:08:54 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MYgXZ0tjfNpmaN9PyU8lbaIAtzcZNrXiglqcyxEBcCBvg/LNjaMbq+7hxEYWW1yo9/2LygV5Er8L/RnOzMUQMNdksogkHLPO3AtVS4kvqUjJxulZO/xsiy8enBvHn0mnTvgxy53Oph7+19yY5yJZYzV842ytrC68pY+RkY/2GYl9G35GSaDGL71mHVoR3Pvoz2X9+hs46+d3ZD6k9WgRCc2Z5BioVVf8APyzhEH7gMtrxMP8wL5aog6m/yEUbWm7JJfEA2MAd0jL5QLZsv3DpDRbAu/Yuj0tm7TGHsOgYigrHjIk6jnMBjNGzE5fEiPXPVUHV+FgGz+WMEmK0LxTng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8qtL1Vqw5gCkHfoQob5NHNm3VCDQStHuKLQ8twf8Nv4=; b=l8iDeCEeq2zSZCDGKLTl7kisNKcG0OEwxYXkxs5DQxZXkf2IAV7koXrqMtN3r17WC3/Mt65a+XRrCaW+JZ2oh7wUcpwQvVgSeV6hdXBHsRu94E3iWaznadPktQyzquaSDsb1t8FHWxDj3VxxAkjK0yM9Uo1tczJj+8+ZzwGvSIpVESjlG9gq2ULaXsObsfmUM1zP9jNrFGbeS9ge3wvnL11UL16RG8TC8Hqvv5jC0i0UTaWZoN/pztTOaZxDkAeWvx/60Nlqx5ZoVjPl10heqGLSF0VmHb4laJksnXRgx3xjzmahyNv87yez2DpGUOy/dNBizx9D68r8/wZ7aXYw9w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8qtL1Vqw5gCkHfoQob5NHNm3VCDQStHuKLQ8twf8Nv4=; b=mo7Aw278SoFusr4f0GrGsYEhaSdijDuw4Qg/KysaYZNKuRmsTHeaAd28lK7bUqhdNoX9IqaDkUkoCj2MupHius7rzGOYEXfy7Lal9i97v/vH6RZVJjnJd4ZLtrsFM3n/2B0zswf1y7KOPpxAktklg7edc8G30WX1Jk+j0xskOas= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com, Roman Kagan Subject: [PATCH v4 09/32] block/nbd: BDRVNBDState: drop unused connect_err and connect_status Date: Thu, 10 Jun 2021 13:07:39 +0300 Message-Id: <20210610100802.5888-10-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a623c725-b51d-4b50-3ce5-08d92bf7c1a7 X-MS-TrafficTypeDiagnostic: AS8PR08MB6502: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:109; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bSKffn48QEV1VGx/pcfYV4cUy7W2nFvczaeyn8C5ngjXORIRq5rTBuES/uxZEg4DZeYQxlFW3O+/H7AfCPodzYK7KXczwcjHIhD4dZWsNOnj8CEouuRDzBAlKi4UkeAuAtUPu+uzfcZPF6ARXN3MnNH7JP7vKTncnBS+OvQJUn34Kwrv98lFqsge4+ZRPBj8JTOoIdcbyMz1bSkU84SNEgF/OYiNeISWRnDm7jFHvl3/QrcQ2LoBVkQJtcf4mTzu1BYdojS4V25+N4coTHal2/07eCoBOkfIGUnnY1gGVARpMvQVQ0Wy5NazPTetPO7eXddpbWT1JDzYpaC1E4DWkhS4cnT8342W48s17M1zlAdrXvAEJLyvNJ77GTrcId97UPTaIOeqqLCi3uFxzgsNo1nMjm247DeimSyOjArN2KcDW2dweXbWU2t/1VyRS8r3tC74cZ6ddJIt6TGoUpjNu1N5nqmf9dx/caoJ8icdCCA0gV1gDpBA41VZY6+SfXlx/Zmr/9R6/vB8fxuB0tJUzqVZWXJ0Owtjb2IFOf565joQslb6X543PrYOwUiK0YzHJv9HtrT6OgCGI+VI2A/4fIOTTvjNETTI2FZsorxHX4Onteg8GpSfvbMUSEIQcnfQArfYKTh7FhPR00pw86WM6jTIaAogzOP39uo6IN2PS8wIGRGJxHPNFVggJ6tCTjjC X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39840400004)(376002)(346002)(396003)(136003)(366004)(2616005)(956004)(6512007)(66556008)(2906002)(86362001)(52116002)(36756003)(6486002)(6916009)(478600001)(16526019)(66476007)(4326008)(186003)(8936002)(1076003)(8676002)(6506007)(26005)(66946007)(38100700002)(38350700002)(6666004)(316002)(5660300002)(83380400001)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?sybqOtRAa0tqFtcBJr14TwVDy1s4c+JnGM69kfPuxyuv4SNtBiv/oEJsftFp?= =?us-ascii?Q?E0cOJ+qCPsP0xkwXWGlIQOW52zLP0NbS4MXIjckPYDS+DbooVan+LaI/+K93?= =?us-ascii?Q?Iphxco4T0o+VF0hcaIUBK6wgFJIwgLqx+RJyjJdTNaCf58/ngh4F5AuKBCGH?= =?us-ascii?Q?4G+Px8o5zONQERT4Xr/P5xaMHT9wCqQ33WTmc3jhfdChc+FyhHH2uU9G0ivE?= =?us-ascii?Q?qgQyHItpFYHc7Fr5Ti6j8fs79DWAa+flq1Q4BksNfE3SGdTljJWLwgNr19OQ?= =?us-ascii?Q?vCLgpm8oRyFy15xxjycumznfIAQLiZ1hwi5RawNaPm6R7q4Bc9XbFJonvfjO?= =?us-ascii?Q?Ep56boD4+C31dhcQLnVdaWjs92edS/M21UJ1PNEd0BuOc/cDrxjgs2akhReT?= =?us-ascii?Q?PJ28ue/K9RWi15J9Ob2J9SkCoAK/wZweqsabfnckWEl2+Pb5bU684I5WIHta?= =?us-ascii?Q?y9y3CsxR4+ITy6kKFB80qE9y6Fc3d3bP97Fx8zHZoUdV+mS/v0EHSFdsb0D9?= =?us-ascii?Q?22FHylqkxNV69a0Jowg9y0onn15I3er/vMynpgaSW3MLGGAVLr8ibV31+zoT?= =?us-ascii?Q?rLoLeWYty5XyBa/inLL1NEYP5BAE3B8IzUTuxIajE4KhsvuR6aCibmTauQ9d?= =?us-ascii?Q?cXlbpmPxx0+BH9AjgBNlVZO3xGHBmCCWRTdtc18jqNndgZXrAhEtdZrIQEBQ?= =?us-ascii?Q?QWA3bw7HzdQMUVcYPNuXziFOrbYel/qCGaxQRpDgu1r6rgV8BXgHdZd09LIG?= =?us-ascii?Q?VTHiMvG09pYieOg1+A4f08O1I4x+cG92KPDPXRbcvnl6ubUKFujdHnnKAzaX?= =?us-ascii?Q?i8EdYU3z5RfVu2A1vPkNNdG9vToXZvz43f/i7jxISlkeWNM57NPJgpO0po3p?= =?us-ascii?Q?97oUzWoI6nJfg84iUjfFEuzAwaIM8XfCvAzB2kVgKUdE8EcZWss+LATQBgNs?= =?us-ascii?Q?Z9DStHG+ct7QYktR0XoqQ77EbOdkh+1kJTna1rWdAXu2xknJqLMtukJwDhrl?= =?us-ascii?Q?WXjGX5wgRhCi+JvGZ4Zk01wYyAf/ZXbbzykC3BYlZ5XysZJGV4OdFYu9OvYE?= =?us-ascii?Q?tmAd1bXrAcWUoHXymK3wlb5QUbV+wALmTF61pSXmBbTJJfT4PYm8vIz8v3p3?= =?us-ascii?Q?ci9hxyTl2CbtPAWazx8Hl120nZSkCFwFWpS/HOJ7ONKkYXhsFfdZuh26mWt5?= =?us-ascii?Q?XFRUkceeBIb0ps3DmqFjgrNzOH9tfC1NejpoXSVnjhB4ZXNtCNrQMlp2Qfrc?= =?us-ascii?Q?sYh1vLFo4esKxu/rlfYw5Ya+c/6H2Io5z9TXnrQevSk47/CUCra4HyGf1DGW?= =?us-ascii?Q?7tr9yHbgJIQioEpTEXN6okKy?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: a623c725-b51d-4b50-3ce5-08d92bf7c1a7 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:08:55.6779 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 7xvpfPM/L4isWZ+rTCgn/Xn3/xVnO9ykrYo8GzDDzP7u3AI4YWVjarXNQQluUgjaGaX+UVIS3HKCucLl/1f9BFpMCG1FZydwpq2tqn8EOps= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6502 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.5.133; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-VE1-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" These fields are write-only. Drop them. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Roman Kagan Reviewed-by: Eric Blake --- block/nbd.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index 77b85ca471..fdfb1ff7a1 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -121,8 +121,6 @@ typedef struct BDRVNBDState { bool wait_drained_end; int in_flight; NBDClientState state; - int connect_status; - Error *connect_err; bool wait_in_flight; =20 QEMUTimer *reconnect_delay_timer; @@ -578,7 +576,6 @@ static void nbd_co_establish_connection_cancel(BlockDri= verState *bs) static coroutine_fn void nbd_reconnect_attempt(BDRVNBDState *s) { int ret; - Error *local_err =3D NULL; =20 if (!nbd_client_connecting(s)) { return; @@ -619,14 +616,14 @@ static coroutine_fn void nbd_reconnect_attempt(BDRVNB= DState *s) s->ioc =3D NULL; } =20 - if (nbd_co_establish_connection(s->bs, &local_err) < 0) { + if (nbd_co_establish_connection(s->bs, NULL) < 0) { ret =3D -ECONNREFUSED; goto out; } =20 bdrv_dec_in_flight(s->bs); =20 - ret =3D nbd_client_handshake(s->bs, &local_err); + ret =3D nbd_client_handshake(s->bs, NULL); =20 if (s->drained) { s->wait_drained_end =3D true; @@ -641,11 +638,6 @@ static coroutine_fn void nbd_reconnect_attempt(BDRVNBD= State *s) bdrv_inc_in_flight(s->bs); =20 out: - s->connect_status =3D ret; - error_free(s->connect_err); - s->connect_err =3D NULL; - error_propagate(&s->connect_err, local_err); - if (ret >=3D 0) { /* successfully connected */ s->state =3D NBD_CLIENT_CONNECTED; --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623320014; cv=pass; d=zohomail.com; s=zohoarc; b=Tv4XKp4gB0Yx/eBQZORULvqklUCQ46cEgniXR/nrPWTWhjxVZ9RRv1ELk2+Oh6hDCPUPFFRarvqzU0yUzwvq85oHVcKry8sbyjqztMZsS5uIdwrAYmhHVz0xAsQC1TsFSsZUBAMRv7NuKw/LTuG1MZhnKPvp6Irb6iook1B6kJg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623320014; h=Content-Type:Content-Transfer-Encoding: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=pztZqVMD2QUFf7oIRrvMye00IO7L6FChelccjNwPYJs=; b=FkuLrFvlP8czYfJulIScayrOXv+1Smus/pbRrAxXdHWCZnG8kpRewYj8U1KXNE7oGZ/LYYMR/lM0h5jyETzd9SSuf7JlwfN/2EYuEOFUsI63wkoULVK46ytMhg8A2zdmNYkjLTY5d9g/hZbxJnbJ8OGK6Y5ynu34qaHSFkOaeMs= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623320014781262.5353564801634; Thu, 10 Jun 2021 03:13:34 -0700 (PDT) Received: from localhost ([::1]:49330 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrHgr-0006pc-MQ for importer2@patchew.org; Thu, 10 Jun 2021 06:13:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44988) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcZ-0005Rw-Ro; Thu, 10 Jun 2021 06:09:08 -0400 Received: from mail-eopbgr50093.outbound.protection.outlook.com ([40.107.5.93]:61171 helo=EUR03-VE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcW-00056j-T8; Thu, 10 Jun 2021 06:09:07 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6502.eurprd08.prod.outlook.com (2603:10a6:20b:335::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.23; Thu, 10 Jun 2021 10:08:56 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:08:56 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:08:56 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NzmuXHFeGvGTsLhXu6HaN7vFfXP4F+Etaj5LOz7D5vJIS5Gu7ZDSizSzTHtiVeOCr7hogJQ6ENoMidN6AwQgHjb75sRZgvA/SjT9ZNWEszBG2jtRD0LlJNbiXqMIyfV2Izae3jhkIKwOK/mhvAN9jYie417pfUF2YHf6ckTcYXyVfx013i2PRfafjKfHDao6e1V3W/tutkBONhoigKS9e5moGWNkgxwLFDAJEV42f+yfJzxohvs1l05X600O8sgkvOxFzwoRdTFb5ADFgzHPKjWqjRNKS1KS1P8Ej2xpa9+v1/uCodJxbrlZ/iaXeCWq+ZxqeUKhRl5zv/+B5G5huw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pztZqVMD2QUFf7oIRrvMye00IO7L6FChelccjNwPYJs=; b=kxEgRc1PA1PVxCu6+s/p/2kBJchvtMnCGI5Ec/UXRaHlxwL9oQezM4D9FdqpuXO3eoh6PBFTyVdU/CUrwf5uGFIwh9ZgBpeps0JGiwseFd64vg3d36GUnlm+LGvrgY3Hsl86a9Qh1HhvV8oNJEpdKkujmp0eFgzDuJGC9hagxFF6l9ZWI8xQ7ahb14gHrkrw4ksWtHc1qDwmglBRweXRQVvvmkqgLM6w+TmjIsOJ5EU51pUjInu7ly+g+uurWxQ+B22LGW0zv9IsVQWaD8rmCRmJpUuXlHx4+zZ6f86js+uqIaaxk81KpG6iediR/lwrnHQYW+9lrkwqf8461WQsAQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pztZqVMD2QUFf7oIRrvMye00IO7L6FChelccjNwPYJs=; b=s9YmEZCFnkMLzRWnL8hwuosNeUKDYMNkWutqjwQUMTxwpAQo94Aa3QZu7NdPrHth3bIEaPtQdvc4pdV8/aLGRPF3ND56f9xSJsezMk8FmcaKACAleLcl3uQ0DIeA+zd4bZAiyqXfJj+qR5n0KU9TRurkzF72jas7IE3V/WrjOAU= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com Subject: [PATCH v4 10/32] block/nbd: simplify waking of nbd_co_establish_connection() Date: Thu, 10 Jun 2021 13:07:40 +0300 Message-Id: <20210610100802.5888-11-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: cd6893ab-5202-411c-4d0e-08d92bf7c252 X-MS-TrafficTypeDiagnostic: AS8PR08MB6502: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:181; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WUALQ8/3CeRe+mn5RQcGnwqCRWjTViYqmUpMjQs4A2yXBRmIjUEQYlXrwqry2+5afMvEmgXzvXERfugtewalzD9Yqzc4JErbS6/onAWVUYL8n8CUnMRXtJnkzGV3vGorww4hXQEPr46ffmFqBASog8jtZ2NmPPvlX3+FMe8AW//9flIWHZUhBm7DWzkEgYvJxvC9lBoG5yc/ylALztnPv0tpQb62jqVXopznrBydB+QYEDlwCqOx22eDi5bYK0pPexSfGe84U7Kl7F0ZY8aR40jfzN9R2iwcTbGe5osmpbCglVifGb9ISy1xOE6leRtgKFkopfMEon54Np6PAf8gzue1B4E8u8fyzfSo+VGaCVTuMuEM5wrDuVVpyvItc9FSwgkq+Guh9trIENIxlJJGfx57zDQka0wF5ZqxvQw1Mtxtt7C3wWGF8pqB/l+5UQIAVzegryD3phqudmzAToHxac6D4j2tB+cEP4/OrEssLawzf1luMBAWlbQYpl+3USKzNzTL9kjqpX+qWl3aUc0dMFZDtjBH4D+Kd5IhT+RFWVPVW+9hH7oK78+UbwI/kbhNW3GlfKBWQjw0w86ipGFfhGakWLLMXyjU/LSsz6ckIC1iCHph9g1RhO7d3sA07R/RiecY3bESN5MPKGBhHCOPu3cvXd/8ABn43BMrv320uaHOlZ4d1vSi/KbdO0vJ1Xu2 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39840400004)(376002)(346002)(396003)(136003)(366004)(2616005)(956004)(6512007)(66556008)(2906002)(86362001)(52116002)(36756003)(6486002)(6916009)(478600001)(16526019)(66476007)(4326008)(186003)(8936002)(1076003)(8676002)(6506007)(26005)(66946007)(38100700002)(38350700002)(6666004)(316002)(5660300002)(83380400001)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?uQiA9lleRXNvbf9PNboJ/KVIRJXOZRVLWWQi46O9WYeyjFIzO1glvJmqm/CO?= =?us-ascii?Q?6c5F7hQhVtyIeNZL0K26UNwJmFx+qdZOebCdu7HBEvyiCkthhy3fMKNeLHVM?= =?us-ascii?Q?f6ge5GL6+8dK4hswdTUwAEmO5Fk6qp+X6xxIjxrr7yEcB2RFfUY9n2LxYjHz?= =?us-ascii?Q?HMoMQpjXj33fBSUDuuQmoSawNQG2bBhY1fZLilwm0tbXjIdUHNXCdmaK0i+7?= =?us-ascii?Q?siqLbCE2/gGec+0+xiu0TZ2XTSHpRSpjw/WJDE8NV+mCRM/neqLFAuSi/MhT?= =?us-ascii?Q?1PA9SzY3vIInGVTEv6/7PxWs5X8VqjKV4mzjPqve14uo38OVvpI7ooeyvDNq?= =?us-ascii?Q?w7j0NIt2wNRjYt1ZkGfbMuXUTduw40x2+KQOWafZv1kLTmhvacq3rVIz+ghr?= =?us-ascii?Q?VuMqnKi3J9/s5xnfwXRPDoxBRX0+FDhEW5z2WJPYlFp+FotAiEJOjkGiYCjG?= =?us-ascii?Q?FLOCtGJB4N8tABuHngcfE6Tz5tOfiug1tGXFPCzWQVpKZXwahSzbMTwjch5H?= =?us-ascii?Q?YPo58Q75IjUDfkCuiEpo7kcX9+gHpNBf0hQmNeV3hSbg1KwQeYcVjH2+xwpY?= =?us-ascii?Q?0hS/JsgLpfkpwOyR7SS58Jx01alh+3+26ej463bIuLB3FBmSLqTN/O6+T4Qi?= =?us-ascii?Q?2zKiPXXuNCyOOg8oObkEteFI7uHCty7LDC/boiNx4fJFJy8XqaA/XEsx3JBm?= =?us-ascii?Q?cEYzYC0m/LbbboETLtw7r9dIg+mIgyxXdkpBRd00ipYhGFX+cEb/UwACpo2d?= =?us-ascii?Q?dk70h4Kgbd/3af+M7IXHU0qgT/ZtJgEHLs/TjqCqIoSgIK8StQeZ3Tw4wxBk?= =?us-ascii?Q?5O69ASodKL7MOPfMeuy4Z5gtzJiqm1NCLeBwLImvHpMTpZM3jemTJVt7mkkc?= =?us-ascii?Q?HudiIV9pI4BXjzewS/d07TpR+sDBmDhqAjo5WwpBnYIDx3CzZbwRsvTRs+xR?= =?us-ascii?Q?LkQ0m1Mjej6sFfRrrdyxMVO0fXehCZj/fverKvVrmPxJMjaLo3LADdRCtZJm?= =?us-ascii?Q?OHhlr9fvXcGcvszg5wV27th1cH53kBMOHqQlNLFH2PtuAI/fq7JPtHOnRAoI?= =?us-ascii?Q?0bTZNTiVaosYfUlYQ3xz+wBCxmyPA720zOKZYkDQ19AgqjpM9tVPlE1xiDa9?= =?us-ascii?Q?ociLh+rel5TEiN79fx3UA0e0OH1XMO6LDAC1sTNYsDBmP8gj8c7YmCvd8Yxa?= =?us-ascii?Q?ETuU5Cj+t3E4IwrObFZmjzX1sDNVVX2Bs+ZrFhaHPoDP0DaNe2/GdfKdzKtn?= =?us-ascii?Q?GBnUQ6oZ+5NbL3Zcuq4RcyViAvUlci6vuQjJG8ACUhnMXxFn5YxdU5qK405L?= =?us-ascii?Q?L6+srEt0VXEqoYuHeMsFBgaz?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: cd6893ab-5202-411c-4d0e-08d92bf7c252 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:08:56.8249 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 6Ge4lCQ+E6lerz43yf6xOx36HsUI822f5RdaC1uET6exvCK00JdOBG1Tkg81CBAQQc1Yoo8GMVeWyF+XbJ0bFvuzf3P8c70j/cP9FzywThk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6502 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.5.93; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-VE1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Instead of managing connect_bh, bh_ctx, and wait_connect fields, we can use a single link to the waiting coroutine with proper mutex protection. So new logic is: nbd_co_establish_connection() sets wait_co under the mutex, releases the mutex, then yield()s. Note that wait_co may be scheduled by the thread immediately after unlocking the mutex. Still, the main thread (or iothread) will not reach the code for entering the coroutine until the yield(), so we are safe. connect_thread_func() and nbd_co_establish_connection_cancel() do the following to handle wait_co: Under the mutex, if thr->wait_co is not NULL, make it NULL and schedule it. This way, we avoid scheduling the coroutine twice. Still scheduling is a bit different: In connect_thread_func() we can just call aio_co_wake under mutex, after commit [async: the main AioContext is only "current" if under the BQL] we are sure that aio_co_wake() will not try to acquire the aio context and do qemu_aio_coroutine_enter() but simply schedule the coroutine by aio_co_schedule(). nbd_co_establish_connection_cancel() will be called from non-coroutine context in further patch and will be able to go through qemu_aio_coroutine_enter() path of aio_co_wake(). So keep current behavior of waking the coroutine after the critical section. Also, this commit reduces the dependence of nbd_co_establish_connection() on the internals of bs (we now use a generic pointer to the coroutine, instead of direct use of s->connection_co). This is a step towards splitting the connection API out of nbd.c. Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/nbd.c | 55 +++++++++++++++-------------------------------------- 1 file changed, 15 insertions(+), 40 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index fdfb1ff7a1..653af62940 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -87,12 +87,6 @@ typedef enum NBDConnectThreadState { typedef struct NBDConnectThread { /* Initialization constants */ SocketAddress *saddr; /* address to connect to */ - /* - * Bottom half to schedule on completion. Scheduled only if bh_ctx is = not - * NULL - */ - QEMUBHFunc *bh_func; - void *bh_opaque; =20 /* * Result of last attempt. Valid in FAIL and SUCCESS states. @@ -101,10 +95,15 @@ typedef struct NBDConnectThread { QIOChannelSocket *sioc; Error *err; =20 - /* state and bh_ctx are protected by mutex */ QemuMutex mutex; + /* All further fields are protected by mutex */ NBDConnectThreadState state; /* current state of the thread */ - AioContext *bh_ctx; /* where to schedule bh (NULL means don't schedule= ) */ + + /* + * wait_co: if non-NULL, which coroutine to wake in + * nbd_co_establish_connection() after yield() + */ + Coroutine *wait_co; } NBDConnectThread; =20 typedef struct BDRVNBDState { @@ -138,7 +137,6 @@ typedef struct BDRVNBDState { char *x_dirty_bitmap; bool alloc_depth; =20 - bool wait_connect; NBDConnectThread *connect_thread; } BDRVNBDState; =20 @@ -370,15 +368,6 @@ static bool nbd_client_connecting_wait(BDRVNBDState *s) return qatomic_load_acquire(&s->state) =3D=3D NBD_CLIENT_CONNECTING_WA= IT; } =20 -static void connect_bh(void *opaque) -{ - BDRVNBDState *state =3D opaque; - - assert(state->wait_connect); - state->wait_connect =3D false; - aio_co_wake(state->connection_co); -} - static void nbd_init_connect_thread(BDRVNBDState *s) { s->connect_thread =3D g_new(NBDConnectThread, 1); @@ -386,8 +375,6 @@ static void nbd_init_connect_thread(BDRVNBDState *s) *s->connect_thread =3D (NBDConnectThread) { .saddr =3D QAPI_CLONE(SocketAddress, s->saddr), .state =3D CONNECT_THREAD_NONE, - .bh_func =3D connect_bh, - .bh_opaque =3D s, }; =20 qemu_mutex_init(&s->connect_thread->mutex); @@ -427,11 +414,9 @@ static void *connect_thread_func(void *opaque) switch (thr->state) { case CONNECT_THREAD_RUNNING: thr->state =3D ret < 0 ? CONNECT_THREAD_FAIL : CONNECT_THREAD_SUCC= ESS; - if (thr->bh_ctx) { - aio_bh_schedule_oneshot(thr->bh_ctx, thr->bh_func, thr->bh_opa= que); - - /* play safe, don't reuse bh_ctx on further connection attempt= s */ - thr->bh_ctx =3D NULL; + if (thr->wait_co) { + aio_co_wake(thr->wait_co); + thr->wait_co =3D NULL; } break; case CONNECT_THREAD_RUNNING_DETACHED: @@ -485,20 +470,14 @@ nbd_co_establish_connection(BlockDriverState *bs, Err= or **errp) abort(); } =20 - thr->bh_ctx =3D qemu_get_current_aio_context(); + thr->wait_co =3D qemu_coroutine_self(); =20 qemu_mutex_unlock(&thr->mutex); =20 - /* * We are going to wait for connect-thread finish, but * nbd_client_co_drain_begin() can interrupt. - * - * Note that wait_connect variable is not visible for connect-thread. = It - * doesn't need mutex protection, it used only inside home aio context= of - * bs. */ - s->wait_connect =3D true; qemu_coroutine_yield(); =20 qemu_mutex_lock(&thr->mutex); @@ -553,23 +532,19 @@ static void nbd_co_establish_connection_cancel(BlockD= riverState *bs) { BDRVNBDState *s =3D bs->opaque; NBDConnectThread *thr =3D s->connect_thread; - bool wake =3D false; + Coroutine *wait_co =3D NULL; =20 qemu_mutex_lock(&thr->mutex); =20 if (thr->state =3D=3D CONNECT_THREAD_RUNNING) { /* We can cancel only in running state, when bh is not yet schedul= ed */ - thr->bh_ctx =3D NULL; - if (s->wait_connect) { - s->wait_connect =3D false; - wake =3D true; - } + wait_co =3D g_steal_pointer(&thr->wait_co); } =20 qemu_mutex_unlock(&thr->mutex); =20 - if (wake) { - aio_co_wake(s->connection_co); + if (wait_co) { + aio_co_wake(wait_co); } } =20 --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623320434; cv=pass; d=zohomail.com; s=zohoarc; b=jIRUBpuKavkmCDzfDgLhbH4jS5J9QSv7KHoObtpx/YmdLWm7kO7HuS8HE/FBscYsK++cvVG+lr4s+pliy+qC8tzTVRXArpXd0Tn9hfIGAz3mFWLVVkst0H46cBRQbU3tgaSi5DUs0LNjuZktxbkS6mcrD77G4d1e4NLL5Y7TCus= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623320434; h=Content-Type:Content-Transfer-Encoding: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=3FcJs+1Mn2iazVR5TQ1YhDZo+BXX3gsjpxUocRGJw20=; b=FGZ0AHITWNFncLNbdVmjPKty/QR3nKEi2ux0ZplVef2vW4CqE2UcWY4pT4Et1A4+Al5fksTb0cqOhosFW871MeI1lq25QVKk5EJrJSzbb55CcbBL/XQI+41rkAUL5rj2wJTcyUs4zSZCDFjlAKb9pMUoDNbf2c+p/BPy78nPyx8= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623320434333904.8613915852305; Thu, 10 Jun 2021 03:20:34 -0700 (PDT) Received: from localhost ([::1]:45644 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrHnd-0006f2-7n for importer2@patchew.org; Thu, 10 Jun 2021 06:20:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45034) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcc-0005WP-UU; Thu, 10 Jun 2021 06:09:10 -0400 Received: from mail-eopbgr50133.outbound.protection.outlook.com ([40.107.5.133]:23957 helo=EUR03-VE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcX-00051Z-E9; Thu, 10 Jun 2021 06:09:10 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6502.eurprd08.prod.outlook.com (2603:10a6:20b:335::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.23; Thu, 10 Jun 2021 10:08:58 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:08:58 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:08:57 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fnWwJBFu7R/wgEvnKOVoNnnenZvATXXsHtCymt6TU3VFyY/q+M7uvrsGwBa9kRTGwujhwNb6k0rNINHuH1xH44KgdcCH03+8OS+qw0wdzysGBCAFBJdiaMT0+gY6H+bDPCfta5E2PAU9/EP+VgvoI3X62yerBJ1/cAsCZlyXQfe4LIpmyDFj2Xip0OKz09TfPN+qPX1zFtkd+unxeEwk7LU3vjS9OeRV/qjISK1aYBmRLzaEp2RfIL/WA26CD+i0JHqn3wLeuhlKCbLpV5hJOaPrUHbZSVPYKmtAqb3LLi/s3S4R3sxNu800ORAxcL/lDzuodMtwjEZd8haD1foq4A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3FcJs+1Mn2iazVR5TQ1YhDZo+BXX3gsjpxUocRGJw20=; b=h51/wS95RCC30Eku3PMvx6BnDvvPHtd6UXyp10jh0i+mvlgEAHcA2LRR+7cILsuEIlCTv4rkB7WvYTAbZsVNxW9yp6F8/H9lBiyPtAv1PhBxUT4PI48F/ftKTA8iMI4RJpaPezOHHs2A/TGZGKmo1xuz8jcxi5XvkzePcAy4DsnOwzJrSh/dar52xdE45ooMIkwbLMWIlcpwEdpKgwQAxastkvUxnHd0xs+KhwpscFs1nRhmKjHbSpEcxL9RL0OgOy/7QenodV8ktK7G/fVNfcUMC9Lx5nO58ORkHAn6rSfdj3zCjyIkgesdxmCNXV3lYUk2JO7bPcmIkG9LayOR5w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3FcJs+1Mn2iazVR5TQ1YhDZo+BXX3gsjpxUocRGJw20=; b=pxY0PL1+HaZmAC/AQZAzDqL8YGOS4xZXVX+J4KHAYnmv9D4Jpt7wBO+EBL045kL+fXTW3my44PzCktvFQd9+Cgy0v8S7y+X7cV4OP89omlpNiIB6dGoT7ZRRV/d416VKE8SqP2m+LPHQUAQkoEp9pumF7jK+ZlVt1+bFfjdcFq0= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com Subject: [PATCH v4 11/32] block/nbd: drop thr->state Date: Thu, 10 Jun 2021 13:07:41 +0300 Message-Id: <20210610100802.5888-12-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 26e0d821-c014-4ad5-9ac2-08d92bf7c2fc X-MS-TrafficTypeDiagnostic: AS8PR08MB6502: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yazZin6QBmuDXX5iXlcNboPpqtVumgTp7P1mld6cs7poqcVKIj/BFPqrEupCuhvsjyLCWgKr4kqGRMm483qF0p/PVs7UtTLVN1glSl0mgAqBAahToA4dJ+9EzPi89o9t6mwCEiQhsl032DNFVauuVWt5P7WinV5aohQEMEZT7+VJWhERc0Bp3OBhx6TElQKBE4cXuBz7r/htzu2BmqOivxq0obRHwoc7i95LJ73MGuH3UgoH2JK+t/ShTL6UoekwNjJLI4EcF9p7fmx0lrOzba4/PwQfo73R/Wcr42Ox8edRnbOWe4tb0edLZkqbCaIoF0tatrX2qfbYh0pf5KGBnJ6ufUWiMc4CTaaHfjW3EmRVXtDcPn274CXKS/dTM8Kc4vyJvHsWX4RfOhEj5687gQzsoub2kMgXvLLsemIm4G7yAVIvKy7HYJ8PVVhFPtafysB/+UiHqAZGcs+qqEUMt1d9VsBp+rneeV6z8sZotmJA2UB12hsurSgdcTgaNsM4JLNXQVVbnwHmazcmlJaRU85SYqqckGAn0cekw5SkzKzgwkkY9Au/ywWXdI7dCus6zZkEgFG9L5rax7c0Yl6AZ0Spt4gZS46nBu4VivJOEOdW92lkqlTWjMTR9BEnsMEaZvi3arFCWrRnTyzDXlejezqoYm86PBnbD3gxyVEwtxp7ju7TAU+iiq2UAPBfeEG9 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39840400004)(376002)(346002)(396003)(136003)(366004)(2616005)(956004)(6512007)(66556008)(2906002)(86362001)(52116002)(36756003)(6486002)(6916009)(478600001)(16526019)(66476007)(4326008)(186003)(8936002)(1076003)(8676002)(6506007)(26005)(66946007)(38100700002)(38350700002)(6666004)(316002)(5660300002)(83380400001)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?XTrfHshCrbZgvdtG7KlhvBMRyzC/LMLV0fvVuIQajc6V+S1KoQe9UDkP39GB?= =?us-ascii?Q?3zxAPPp+aH1Pl3dGtPR652qIV7o8fnF4O7FlfaXiOdFtexrEETRz5V7cBGNv?= =?us-ascii?Q?wfInVmDawbTp46xV97W9DhxondjQobFqF9V0g8C2ZUVps/9LL595hMFrIcn+?= =?us-ascii?Q?L3V18wOReGXpjeqhxCdK9ePtWfCbjUia7AbkWjLeEZbR6JIzv/vTNWrjGsk7?= =?us-ascii?Q?kz6CqyuFLLUiXAZg3Grgt7EqnuHzEEh9ZKrqrjwHWtZytlcocuYqu5w4yEgv?= =?us-ascii?Q?TuHl2TUse5IrcJA3yo4C8uON7i/nKKGcbY/gmYbITyoVCMmnwTxQ0P2AnhCS?= =?us-ascii?Q?lHozyxzqi1UhwqdT/jTf2N+xySG5jdQTIlHr35DtWJXMaYsEzi5bCiMm9o3M?= =?us-ascii?Q?eIqHoCzQkoVRMhHgZ+YZ1ej3EbKi4xNPBf4ss692/C2VX2GWw3PVb3/RSpQr?= =?us-ascii?Q?4t/92RPZOc/1rvomsZECpnhsfF3bEKZIcKhUNAU330JvRuO3JrIKNLuS74XV?= =?us-ascii?Q?DHriVCCGI/HLqmS8eSnt644sHJ2TLyfSxi/8nld1jpKb8abYODbdR44SuCJ5?= =?us-ascii?Q?Xy9EVlPsg58+6VY+kiu9pGMarXcOO5C0SJzbsBDFbJyrldinq+pkBtVMfTE8?= =?us-ascii?Q?90LFbRq57OW4sa3cJjanYVZGioIJK5Kb1cqga2Mt8qq/pqKG5hMEg3Tjcwo+?= =?us-ascii?Q?pdJMoOqS5afwY25FZ3vX4va5a8uPowrfTDizlnfnbO+qMOJwDnxC8dwvjNf6?= =?us-ascii?Q?SuhUx0+M7NQB6qj29bCnNgeLn5E7hLonu9IM7V/CX9mQ+CMLHP5WztERfRSx?= =?us-ascii?Q?rXyDK4jyTdyBMtoOfwpJms3a7G05kygoMxh5+KEMNYlD8RJ2ltmj4zVjOYxL?= =?us-ascii?Q?AhDtFq/x/s7k/USBoG++Q75fL3Jq6Otb80tfp2UcZh1BQRQZ7gPyJ8p80P8A?= =?us-ascii?Q?cUIbSMajIBOdezmHKStmKjI0ZBe1MFmlNDNiB6fj0yew2NcMn2oKFB0EWl4p?= =?us-ascii?Q?JW4TV81aHuEA1ATyES82mK8+kLbHLxxXMiAdZ9ORYT+I1GboFuF27wD1lVEi?= =?us-ascii?Q?6rRXZlC45InWtugFm3xuz3kcn8B0QnfoNRxg6LoFor+EbLcXNWhlb6N3bT4p?= =?us-ascii?Q?XnSzmqdH7AGFLJcd4ASzbjwTK0akXyzjUW8GezkbItPysKdgtSNCSJpWzBG/?= =?us-ascii?Q?rQ3HKA3o9244N9yoIABt5ymDLV8PM2P9kdVXmnM3GzBtvRODlBuWYBxSo9VT?= =?us-ascii?Q?WJiglyVifu5q81b8BLII8ZRuyI9VYgEMWC1zDzEGuFOK865gHQezK+FIQtWx?= =?us-ascii?Q?GdaWKEv/uv0ic8B6F7IgQIaA?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 26e0d821-c014-4ad5-9ac2-08d92bf7c2fc X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:08:57.9430 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: gx4Bzab/g1amirvHrirjUYBtysyPi7AQKAfGtg++61Q/eaFDZk37sS+Z9hk7krm3h0OYsqzlaEmi+5BEfYLMnBmk6Taqc3vfKOvN8NqoLgA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6502 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.5.133; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-VE1-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" We don't need all these states. The code refactored to use two boolean variables looks simpler. While moving the comment in nbd_co_establish_connection() rework it to give better information. Also, we are going to move the connection code to separate file and mentioning drained section would be confusing. Improve also the comment in NBDConnectThread, while dropping removed state names from it. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- block/nbd.c | 139 +++++++++++++++++----------------------------------- 1 file changed, 44 insertions(+), 95 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index 653af62940..58463636f0 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -66,38 +66,24 @@ typedef enum NBDClientState { NBD_CLIENT_QUIT } NBDClientState; =20 -typedef enum NBDConnectThreadState { - /* No thread, no pending results */ - CONNECT_THREAD_NONE, - - /* Thread is running, no results for now */ - CONNECT_THREAD_RUNNING, - - /* - * Thread is running, but requestor exited. Thread should close - * the new socket and free the connect state on exit. - */ - CONNECT_THREAD_RUNNING_DETACHED, - - /* Thread finished, results are stored in a state */ - CONNECT_THREAD_FAIL, - CONNECT_THREAD_SUCCESS -} NBDConnectThreadState; - typedef struct NBDConnectThread { /* Initialization constants */ SocketAddress *saddr; /* address to connect to */ =20 + QemuMutex mutex; + /* - * Result of last attempt. Valid in FAIL and SUCCESS states. - * If you want to steal error, don't forget to set pointer to NULL. + * @sioc and @err present a result of connection attempt. + * While running is true, they are used only by thread, mutex locking = is not + * needed. When thread is finished nbd_co_establish_connection steal t= hese + * pointers under mutex. */ QIOChannelSocket *sioc; Error *err; =20 - QemuMutex mutex; - /* All further fields are protected by mutex */ - NBDConnectThreadState state; /* current state of the thread */ + /* All further fields are accessed only under mutex */ + bool running; /* thread is running now */ + bool detached; /* thread is detached and should cleanup the state */ =20 /* * wait_co: if non-NULL, which coroutine to wake in @@ -152,17 +138,19 @@ static void nbd_clear_bdrvstate(BlockDriverState *bs) { BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; NBDConnectThread *thr =3D s->connect_thread; - bool thr_running; + bool do_free =3D false; =20 qemu_mutex_lock(&thr->mutex); - thr_running =3D thr->state =3D=3D CONNECT_THREAD_RUNNING; - if (thr_running) { - thr->state =3D CONNECT_THREAD_RUNNING_DETACHED; + assert(!thr->detached); + if (thr->running) { + thr->detached =3D true; + } else { + do_free =3D true; } qemu_mutex_unlock(&thr->mutex); =20 /* the runaway thread will clean up itself */ - if (!thr_running) { + if (do_free) { nbd_free_connect_thread(thr); } =20 @@ -374,7 +362,6 @@ static void nbd_init_connect_thread(BDRVNBDState *s) =20 *s->connect_thread =3D (NBDConnectThread) { .saddr =3D QAPI_CLONE(SocketAddress, s->saddr), - .state =3D CONNECT_THREAD_NONE, }; =20 qemu_mutex_init(&s->connect_thread->mutex); @@ -395,7 +382,7 @@ static void *connect_thread_func(void *opaque) { NBDConnectThread *thr =3D opaque; int ret; - bool do_free =3D false; + bool do_free; =20 thr->sioc =3D qio_channel_socket_new(); =20 @@ -411,20 +398,13 @@ static void *connect_thread_func(void *opaque) =20 qemu_mutex_lock(&thr->mutex); =20 - switch (thr->state) { - case CONNECT_THREAD_RUNNING: - thr->state =3D ret < 0 ? CONNECT_THREAD_FAIL : CONNECT_THREAD_SUCC= ESS; - if (thr->wait_co) { - aio_co_wake(thr->wait_co); - thr->wait_co =3D NULL; - } - break; - case CONNECT_THREAD_RUNNING_DETACHED: - do_free =3D true; - break; - default: - abort(); + assert(thr->running); + thr->running =3D false; + if (thr->wait_co) { + aio_co_wake(thr->wait_co); + thr->wait_co =3D NULL; } + do_free =3D thr->detached; =20 qemu_mutex_unlock(&thr->mutex); =20 @@ -438,36 +418,24 @@ static void *connect_thread_func(void *opaque) static int coroutine_fn nbd_co_establish_connection(BlockDriverState *bs, Error **errp) { - int ret; QemuThread thread; BDRVNBDState *s =3D bs->opaque; NBDConnectThread *thr =3D s->connect_thread; =20 + assert(!s->sioc); + qemu_mutex_lock(&thr->mutex); =20 - switch (thr->state) { - case CONNECT_THREAD_FAIL: - case CONNECT_THREAD_NONE: + if (!thr->running) { + if (thr->sioc) { + /* Previous attempt finally succeeded in background */ + goto out; + } + thr->running =3D true; error_free(thr->err); thr->err =3D NULL; - thr->state =3D CONNECT_THREAD_RUNNING; qemu_thread_create(&thread, "nbd-connect", connect_thread_func, thr, QEMU_THREAD_DETACHED); - break; - case CONNECT_THREAD_SUCCESS: - /* Previous attempt finally succeeded in background */ - thr->state =3D CONNECT_THREAD_NONE; - s->sioc =3D thr->sioc; - thr->sioc =3D NULL; - yank_register_function(BLOCKDEV_YANK_INSTANCE(bs->node_name), - nbd_yank, bs); - qemu_mutex_unlock(&thr->mutex); - return 0; - case CONNECT_THREAD_RUNNING: - /* Already running, will wait */ - break; - default: - abort(); } =20 thr->wait_co =3D qemu_coroutine_self(); @@ -482,10 +450,16 @@ nbd_co_establish_connection(BlockDriverState *bs, Err= or **errp) =20 qemu_mutex_lock(&thr->mutex); =20 - switch (thr->state) { - case CONNECT_THREAD_SUCCESS: - case CONNECT_THREAD_FAIL: - thr->state =3D CONNECT_THREAD_NONE; +out: + if (thr->running) { + /* + * The connection attempt was canceled and the coroutine resumed + * before the connection thread finished its job. Report the + * attempt as failed, but leave the connection thread running, + * to reuse it for the next connection attempt. + */ + error_setg(errp, "Connection attempt cancelled by other operation"= ); + } else { error_propagate(errp, thr->err); thr->err =3D NULL; s->sioc =3D thr->sioc; @@ -494,33 +468,11 @@ nbd_co_establish_connection(BlockDriverState *bs, Err= or **errp) yank_register_function(BLOCKDEV_YANK_INSTANCE(bs->node_name), nbd_yank, bs); } - ret =3D (s->sioc ? 0 : -1); - break; - case CONNECT_THREAD_RUNNING: - case CONNECT_THREAD_RUNNING_DETACHED: - /* - * Obviously, drained section wants to start. Report the attempt as - * failed. Still connect thread is executing in background, and its - * result may be used for next connection attempt. - */ - ret =3D -1; - error_setg(errp, "Connection attempt cancelled by other operation"= ); - break; - - case CONNECT_THREAD_NONE: - /* - * Impossible. We've seen this thread running. So it should be - * running or at least give some results. - */ - abort(); - - default: - abort(); } =20 qemu_mutex_unlock(&thr->mutex); =20 - return ret; + return s->sioc ? 0 : -1; } =20 /* @@ -532,14 +484,11 @@ static void nbd_co_establish_connection_cancel(BlockD= riverState *bs) { BDRVNBDState *s =3D bs->opaque; NBDConnectThread *thr =3D s->connect_thread; - Coroutine *wait_co =3D NULL; + Coroutine *wait_co; =20 qemu_mutex_lock(&thr->mutex); =20 - if (thr->state =3D=3D CONNECT_THREAD_RUNNING) { - /* We can cancel only in running state, when bh is not yet schedul= ed */ - wait_co =3D g_steal_pointer(&thr->wait_co); - } + wait_co =3D g_steal_pointer(&thr->wait_co); =20 qemu_mutex_unlock(&thr->mutex); =20 --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623320242; cv=pass; d=zohomail.com; s=zohoarc; b=G+2Qeqo+rYfT09lFkaQ1ZY1vNhS/UM5CjnNFm4Q/gdbYwzCa48l2oeZ7Iqi7XDh+yibKrXlgD6g6KHnIwUzLjBPuBF54YT1rSFxDs6sqAU8wAxu39+LfePWRmj+lLKac38Of3Qjrhx8C72v7hzpA03NMMnvdf6vxp+LqkO5WhNI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623320242; h=Content-Type:Content-Transfer-Encoding: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=QghDeJqVYAhTT/1IK+bk20rlPQJutrEJpsWudBmcbfk=; b=MpkmrNQ2n/Av5SDcz+YmNwMEC38Vm675/smmnAc1U8nexMjduf9ciNNqQroQhz+QUCU2fnNBQkCVdTnptGRDH08B/qrUTyHH851FUnc0p1T5jWvY1Giixk6L9hleCYa9zxEoUIzuvFsLjNhAppWZXNNWDgRKQwbepYi8ScN4zLY= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623320242301625.8909314201189; Thu, 10 Jun 2021 03:17:22 -0700 (PDT) Received: from localhost ([::1]:60954 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrHkX-0006CL-4C for importer2@patchew.org; Thu, 10 Jun 2021 06:17:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45086) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcg-0005Zg-AZ; Thu, 10 Jun 2021 06:09:14 -0400 Received: from mail-eopbgr50093.outbound.protection.outlook.com ([40.107.5.93]:61171 helo=EUR03-VE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcb-00056j-Ab; Thu, 10 Jun 2021 06:09:14 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6502.eurprd08.prod.outlook.com (2603:10a6:20b:335::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.23; Thu, 10 Jun 2021 10:08:59 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:08:59 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:08:58 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cbnVm92Qf2SeMTHCSS6ach1TyTWM2Na+TndZkwfC2rehXhDjlTHPbJZ5UocbLCwLdUC05qVucW7xcDRDUtUePufRMAHLE6Rrzok63/U2+Gufu1Q9kwTjLEg23F9zDFipwezSakwA3x03Rdpxi1l8f4SVVqdJ9uJfaeovnyrtiVTQts5AIB98CbaPX+A8tCapcLzYdBIiyLYq46AtS0015BUc7xhcvA6SDacp1eY2Tz7N8HnFQj0CjBahKpxWOGL58LH37T8zVyC/QSu2LB6PVCsHgo20Fx/ZUf8a9RYovVggweP3gLazNy+oyT2NkdvPIv16nI0M5PEBltGLCast1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QghDeJqVYAhTT/1IK+bk20rlPQJutrEJpsWudBmcbfk=; b=ZvalgXb6F4pcHfRHnXG5BTbK61ZM0vtNi4G4PBwG7qq+hWXKhFrqeDP9EcjEqXuQiP4kRGvCJ8Olt6lAbmu0AEDoQlCujKMMUKu1LgJmOeId+SjFTAbWEI04JRRvD5JqWjOwm4eKRFFe+2lssi/UQNKZcack5YneAX8+rJto19fwQm3yvsqAkuaeX6ajoMEUVOpOsRzJ67RCzRoDEgEm1alpAtCB1928/b0fMd8cRYLE7dJwmbWlaJhaWHYaWOUljJ/hCRI3fFWUoBrKWD6af1eXH8LgzHFh030QRImQDFudqGz+Nk+aBUtIAeDsVF6yEjNwMuReZHf6zrcuzyC6Ng== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QghDeJqVYAhTT/1IK+bk20rlPQJutrEJpsWudBmcbfk=; b=HASNSLoCKMXZnWM3DxJRQMf/EocPBSE08THw/P/lImMc3NC2Bn8TKC/DO+ismBA2XZmt/6UPBusOFNpjTZI678vhhgl6HiWjZk+TGjlNMAroG5fQO8An7LMNHfeYcApbRVJqIQHAfRor65CYlv6e6EPmSzC6KfIKoll9bpkcMOY= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com, Roman Kagan Subject: [PATCH v4 12/32] block/nbd: bs-independent interface for nbd_co_establish_connection() Date: Thu, 10 Jun 2021 13:07:42 +0300 Message-Id: <20210610100802.5888-13-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4686f3cc-c7c8-416f-b4c0-08d92bf7c3aa X-MS-TrafficTypeDiagnostic: AS8PR08MB6502: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:644; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: SnXreWWZMvmD6Ui6naR5Sxbj42TbldQrCz1oesWaKFgvny5CuqvXuS0Vo1bjYPRbXG7lOyJmLbgdeicqkCTzwgXe1uiNyC9gvzW0wHvuLRRCenUqmsEwuBFm+/Z46RzX40iYf9cz9hHIHeMzLNfXJWx8JGzJ5LTJQbSB//KRVd3SzJ6OO57tk85ELItKMmDeE+Lx28lCD+eth2P0W5W7fQQbieAtA+DKs8UdCfPC97GgRL0Ic/TZlugB755xQtbZFiC6tc13qMxSCCv2NuSp8OKce3PO6M7ZLgetSZmVUezdx/04Gue+13CGjBWdUEwmm5MFd634oyD2Bh07HZl3qdqbYzSW3CGoaEZOcP0Ld5cj06fyx6cridtjmYYWUrpd/gq59Ur6mCjJoBfomMqKSEyCg+X/dO281Vi1SfBzR7I9EaEHhHJw6hKBRVSIltDffjN3BnJoetgGQuz5kzvVkWY6CFg6yGjCQhyJVZPWOPK0h0nas+9jGguFGiYc6xC20txcEf75z0wGMUyhR/UqdXZk9LS4gdvSRaE+WoklgUb4CI6A5LFS690zGEsToFftT8tS0TpvJwdWqlGlF7oMlEsqNwibDWrw8BOI06Q7xmcs5nhhUF6Q0IaNXazn83pwxt4ojDcKrDqSXHoRSEiZZcoE0HvmGBkAbiEhh5ltOePDG/mQ/5nVUmC0GwhUSiN/ X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39840400004)(376002)(346002)(396003)(136003)(366004)(2616005)(956004)(6512007)(66556008)(2906002)(86362001)(52116002)(36756003)(6486002)(6916009)(478600001)(16526019)(66476007)(4326008)(186003)(8936002)(1076003)(8676002)(6506007)(26005)(66946007)(38100700002)(38350700002)(6666004)(316002)(5660300002)(83380400001)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?MdmtAJzHIDZO6gZu5rIvdgXcG+NCelDkhI2ozz3GQegm+0iH0YSGFxI37a8R?= =?us-ascii?Q?qxtVaLxylS+CxzNbdsAaqx412pjE4vbGe4/LoaYkffjYObv5kR1haQLyRgIs?= =?us-ascii?Q?CkWSjqDMfaTdqmwz788z3ySlUtifPOvtSHm6+ljBDvsorNddPxETZvauP4lt?= =?us-ascii?Q?R1EdsVyGQ7Z8DjL4aP+vsDfdyu+NzMv6oOhfa7cIH58Wv1Zh1efus6Ns7Ksg?= =?us-ascii?Q?egHdlo5Ce59Zvt5hEwnTjIB8KMIbZuLzJRBJ9lkXh1V+pph42yyEKCvb09gy?= =?us-ascii?Q?6yzHb75umoAwr+FTehWG6g/QfiYp7h5DgG1b236cZvlNOh60hduTOyCJ/iND?= =?us-ascii?Q?IaEcS/kRBHNtCf2AxuASoR6yscvMZ58tV5W+gS36k+5lVn6aFR2eCRzkcqQ0?= =?us-ascii?Q?I4hCWkQ5yJJS8k1JUp1p3S/RB9jxX30IeIiqWsMUd/EIzx4+0BcPugPTxU29?= =?us-ascii?Q?3WY3tFh9pfC2ONUuGaFNeerwO9pgKNhqfY6xew2QTrxtHeYmlFGpJTXSSmHP?= =?us-ascii?Q?s6PW4Zqzxowozt/cdQUCMxRVUVVvZbY2VqPnzEb3TDYut1Ge2uOe+6Qfsqz/?= =?us-ascii?Q?p+aIvPluNcDkw70Jf1+0bALUdU6IPpJ8WsCR916h1SjuOUHvSsYtQX6RuZBJ?= =?us-ascii?Q?rUoRFOmqkaZgu0TAaCm3dqsfb5HuMH2zSSubQZfmeEPvcx2bVcu6rY8wGqiG?= =?us-ascii?Q?rmSr/19glXkHy1Tpv+AWFKjLlx01vLe3FarFhFIRxpOeylzHzAa1kXCqajY5?= =?us-ascii?Q?/6BaBKfQ5fSAnoOLCmj/ula/tzc1sW8mEXLd39Qg8i4o9rOHoJ3QyO6gP5Uh?= =?us-ascii?Q?S75Q1ejZrwD8WxbCmDBSRXtrXtwAXTtLlAhYayaPv1iDoYIegxaYcI1J0w+G?= =?us-ascii?Q?A/EeZSXjYhA68Rrz036tthkDFoqwEGg5AfiBb15FXQwlQmXzz4DUF7f+Ec1f?= =?us-ascii?Q?dMAGnplUTqVx4RGxnz8vKNeJFjbczlXGsL5XsKdGbTKwrOItLZ6Bo7J+y+fJ?= =?us-ascii?Q?aQy0sKcFORKLiasRJYq13c56KjafaSTVyNdTy1LmD3D+A4w24HbKi/voyMgx?= =?us-ascii?Q?meRaCAoCflDiEOJ+bR2dFb+ZAvH69iAP+2vWfxjaLwmrASYCDuEvL3T01MLn?= =?us-ascii?Q?7XX1qZcjZXrnwyJVhjbu+yeGzYj+XL1lMLqZdvsv9x1REUaTNTUgv0DsIhKZ?= =?us-ascii?Q?WNJG+PYso/AF1BEenXsT7In213gFnvF63wIs1oBps2jd96eztYTbZNEuOYyP?= =?us-ascii?Q?qQ33mPJb0N6hw9O7dxgNa3zN/j/P60Uxg1A45T6K1D+TKtGUBl7YYoXKHdEG?= =?us-ascii?Q?LD45eE2XpZ9jzTFKatcyFGaa?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4686f3cc-c7c8-416f-b4c0-08d92bf7c3aa X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:08:59.0780 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 4Eb8lRUSOFVgKRxrAkvwDqP/RWQ40blxyJGzJWxtDLUaXaKbTTaRQtlujsICHy/UdWCO1YlReJ+awayCxqnKjQD4bHA/+fVgPUPo21Nn+nM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6502 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.5.93; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-VE1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" We are going to split connection code to a separate file. Now we are ready to give nbd_co_establish_connection() clean and bs-independent interface. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Roman Kagan Reviewed-by: Eric Blake --- block/nbd.c | 50 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index 58463636f0..9d43f0f2e0 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -129,7 +129,8 @@ typedef struct BDRVNBDState { static void nbd_free_connect_thread(NBDConnectThread *thr); static int nbd_establish_connection(BlockDriverState *bs, SocketAddress *s= addr, Error **errp); -static int nbd_co_establish_connection(BlockDriverState *bs, Error **errp); +static coroutine_fn QIOChannelSocket * +nbd_co_establish_connection(NBDConnectThread *thr, Error **errp); static void nbd_co_establish_connection_cancel(BlockDriverState *bs); static int nbd_client_handshake(BlockDriverState *bs, Error **errp); static void nbd_yank(void *opaque); @@ -415,22 +416,37 @@ static void *connect_thread_func(void *opaque) return NULL; } =20 -static int coroutine_fn -nbd_co_establish_connection(BlockDriverState *bs, Error **errp) +/* + * Get a new connection in context of @thr: + * if the thread is running, wait for completion + * if the thread already succeeded in the background, and user didn't ge= t the + * result, just return it now + * otherwise the thread is not running, so start a thread and wait for + * completion + */ +static coroutine_fn QIOChannelSocket * +nbd_co_establish_connection(NBDConnectThread *thr, Error **errp) { + QIOChannelSocket *sioc =3D NULL; QemuThread thread; - BDRVNBDState *s =3D bs->opaque; - NBDConnectThread *thr =3D s->connect_thread; - - assert(!s->sioc); =20 qemu_mutex_lock(&thr->mutex); =20 + /* + * Don't call nbd_co_establish_connection() in several coroutines in + * parallel. Only one call at once is supported. + */ + assert(!thr->wait_co); + if (!thr->running) { if (thr->sioc) { /* Previous attempt finally succeeded in background */ - goto out; + sioc =3D g_steal_pointer(&thr->sioc); + qemu_mutex_unlock(&thr->mutex); + + return sioc; } + thr->running =3D true; error_free(thr->err); thr->err =3D NULL; @@ -444,13 +460,12 @@ nbd_co_establish_connection(BlockDriverState *bs, Err= or **errp) =20 /* * We are going to wait for connect-thread finish, but - * nbd_client_co_drain_begin() can interrupt. + * nbd_co_establish_connection_cancel() can interrupt. */ qemu_coroutine_yield(); =20 qemu_mutex_lock(&thr->mutex); =20 -out: if (thr->running) { /* * The connection attempt was canceled and the coroutine resumed @@ -462,17 +477,12 @@ out: } else { error_propagate(errp, thr->err); thr->err =3D NULL; - s->sioc =3D thr->sioc; - thr->sioc =3D NULL; - if (s->sioc) { - yank_register_function(BLOCKDEV_YANK_INSTANCE(bs->node_name), - nbd_yank, bs); - } + sioc =3D g_steal_pointer(&thr->sioc); } =20 qemu_mutex_unlock(&thr->mutex); =20 - return s->sioc ? 0 : -1; + return sioc; } =20 /* @@ -540,11 +550,15 @@ static coroutine_fn void nbd_reconnect_attempt(BDRVNB= DState *s) s->ioc =3D NULL; } =20 - if (nbd_co_establish_connection(s->bs, NULL) < 0) { + s->sioc =3D nbd_co_establish_connection(s->connect_thread, NULL); + if (!s->sioc) { ret =3D -ECONNREFUSED; goto out; } =20 + yank_register_function(BLOCKDEV_YANK_INSTANCE(s->bs->node_name), nbd_y= ank, + s->bs); + bdrv_dec_in_flight(s->bs); =20 ret =3D nbd_client_handshake(s->bs, NULL); --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623320608; cv=pass; d=zohomail.com; s=zohoarc; b=c0j8uX3mVwjqxLaU0dwlkJEB1o/ZFYRfGvSTBctLdnX/FiUHOZ1JGeAwZ9hfKUNG3vn5o08n8RiCFuGODNRPjm5PwtJDf5NquJcniqwq3LvYjU7ZwD9132h4ZkjcwgtBk3RXfqiqHCLL6vV/Uskspz7JjQfND2kbUEzK4UWnAy8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623320608; h=Content-Type:Content-Transfer-Encoding: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=zg3lNdEE6aZ2Y+cydKvSap+R1f1hOeBv3Rmn5dA05Lg=; b=UZkW4OvkVqs1GNfnE/dWFSoefW+DMUI/mUy9XysZcTU9FEVLP6Ot9o22nzN+j13Er1tQ9yWFThXK63oHS+uon/tKRwXXrT0wL5M1nmwQisKZd+5z3ZvopIemqQxmPFxS+p56pB5Bx7KhFSzzNqpYRReW+/l64mbU1su+ypK5/2M= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623320608765617.0505293414394; Thu, 10 Jun 2021 03:23:28 -0700 (PDT) Received: from localhost ([::1]:54176 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrHqR-00049w-In for importer2@patchew.org; Thu, 10 Jun 2021 06:23:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45098) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHch-0005bl-1H; Thu, 10 Jun 2021 06:09:15 -0400 Received: from mail-eopbgr50133.outbound.protection.outlook.com ([40.107.5.133]:23957 helo=EUR03-VE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcd-00051Z-NE; Thu, 10 Jun 2021 06:09:14 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6502.eurprd08.prod.outlook.com (2603:10a6:20b:335::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.23; Thu, 10 Jun 2021 10:09:00 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:09:00 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:08:59 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=F/NGiwvddkeSEE0hKpi5M2NrUO5A4PwKI7QwZvWwPEymA5YPL2xL+5fZTvwoCBrnsK0F0PZsZPiEmwRCZzqNk0tFIlv5d/EKGwaRsHe2K3C1cec55oZ81lDYFcRWuEkf5YM1G4qHPjIhJGlcmK22KNdzH+7IaYPa7TezkZo8i+BW/4uCxOVdVUjgH2fa21Klp9XWIzl7FCGb9R5WlACPbKCBUDU/WdjxbgE8GR5azEg6Atzmfj37pvxknPuOlPSrMe9qg+7hybRt4wstIYHQun+cmYE6KvCmzN6wzIktf5ErwograV5VnwDWvzHMOaaFQeSUKbhq7JPqkx2UtwcV5g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zg3lNdEE6aZ2Y+cydKvSap+R1f1hOeBv3Rmn5dA05Lg=; b=eLPlrIIlPY6QM3QjDD6BEDN7niZDueBHcVmVb0bFTYOXarNJpf+DzBSjEaZLy/fd9oYwV35stESB5TwnyOVR4qf4avr21PBVh402+GYX+8Uq8qN/s1EnJNkyXrBA1v3faGoWDCecbUsu6DG+Cjj3uvs84L69bU3Y3A2oH645rJ8RrgmWOeT7s5MczoRb5wleRa59wk8pcjBMof8oZEqQ2wQxesb70ubRWW+gmuBGqg8g5TZyzx3Xkic0WzC/JYxj6LtQvHhhQXzfS03BMBwD+VHzytkRsvjgEK7QF5uwIj6+15QygOVBnbzv2DoJ5T4cnAO+BeUNZIp9HF203SK4Ug== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zg3lNdEE6aZ2Y+cydKvSap+R1f1hOeBv3Rmn5dA05Lg=; b=wG5Kb5ZSOoROfI5UttoZT/wy8EhP3JgeoX1zFNLvBl1HPJ1ri8pQequ409UlKW04hUV0+Ir5V+kAAUjJmgO6l4mL7eZEfetKUl/BtNCmsksO1SafXjlJ8KcUeN0fUKE3ncItmeBeVsRkY8WPKXYLB+TYWk/yYsIMYFzQX7ZBPLo= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com, Roman Kagan Subject: [PATCH v4 13/32] block/nbd: make nbd_co_establish_connection_cancel() bs-independent Date: Thu, 10 Jun 2021 13:07:43 +0300 Message-Id: <20210610100802.5888-14-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 31de862b-8040-4a99-4368-08d92bf7c459 X-MS-TrafficTypeDiagnostic: AS8PR08MB6502: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:962; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: FfO/OCq+0edzXWdp6zAB8n5vA4JDPqb89eznV/xzssHl9ZoWNywOS+Sb4DZp8zprREkMbCT2WrnBD4upHuWFfjFtCxSkYWHdI1hli3a6qs12AgdxamCpBcDhWMDK2J7+I1dVrpOhYzaEO+/mfweJfoQD/bk3ibcESK80wyT/iPFbrLURPGhBxzvmEt5qSPD2xQ5W3dnYKUzeysC3UmeAMA7dvAay4aKlrCo+I4DocE0D4U4Gjv2os+CHzsXFBsqv8HHOGbdlVcbr4zyaGaBEYZmkxa7Z7ZqKvVmAcKTISI5xwS5IUF/Y167CDKML07dMOrzByMSZU+M1oqTY0CBUKt/tWoA60rs4sGSXIvnmvjIwzJyt3Uja21/DYTO1SEbDoTE2BSXxrVAhofRgiQCv+ajIC0h9J79RjoeyBAunV07N8WKK876RXmPDBZxi+sbjWFsasH5trdmPG/lAgKa9GvkU55OgyPH+K1jXq2v5BqWuQHmQruP07QQaVWiO+qSeNlPnfIcTDlpCutcQDaWIf6Hj+usVoM7Dxra/ngScTyS63PCKEUGx/Ae5mQvnD8NN/Nr7nb1KR7Lr95pbXCA0XjNtr2rKOEQ3C0IcTNXt0HOAdBD6UoyeBocVlZPJCeabH8r+6vgKi5QeDC0Y0gDa1mixAw7kvYlnkkMVjy9F4IXvbXc/dZBDd+WnumTsWlJi X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39840400004)(376002)(346002)(396003)(136003)(366004)(2616005)(956004)(6512007)(66556008)(2906002)(86362001)(52116002)(36756003)(6486002)(6916009)(478600001)(16526019)(66476007)(4326008)(186003)(8936002)(1076003)(8676002)(6506007)(26005)(66946007)(38100700002)(38350700002)(6666004)(316002)(5660300002)(83380400001)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?bw/MnDEsSLxR1c9b8x1d9Jf3xx64Pzm6Xv3nAfpsOEmt1LP07eBL5B4HvAdO?= =?us-ascii?Q?1nGA0vufkM6zVluLEexfTFUwezhns5nDIliZBvtDBjOMzAMZ4fL9xkZ/1244?= =?us-ascii?Q?zpLDWOUKBIb65emqypOf2wo3KfeLp5KIQGoPj9ul2p9ZSipU0Ajyc6spGQsY?= =?us-ascii?Q?3jn5zOFPnFix3jYz6JbTyL6JZtaSwafEkuYpynj9EY2ZuvoPNypNqHKG2ZqB?= =?us-ascii?Q?CCyG5bqILGsIvKHGkFGdHraIKW9gCiG3qkBgjCDeXU0BqhJBWzszwcvLEpeK?= =?us-ascii?Q?uER48PzGNiNztCosB4KbwjPGOaNM5jOxJXQWq0tov/VYsU76aMXY1X9xPBdz?= =?us-ascii?Q?rlCRuQCZ9uHytG/lWq1USVEAURKJvuB8tfKwTminVJBrOLhceY6ItzCksmDb?= =?us-ascii?Q?6GC/vD5aMT028XKCd30tapyLLyeKyn1E6KIbeNruvvWyDxGY8jIyaz9fPqHj?= =?us-ascii?Q?VYZVUTlQmPcs/Iv/Z92Rl7zHg3Zot+bQIvrumif8EmfZBflRRx3Tf4FWpoqW?= =?us-ascii?Q?QBaH04M4mYntrjiR5Q1tHaGNGNB6XKOUSWoTUwlL2byiJANVJ/eUd413vseQ?= =?us-ascii?Q?w7jXak6F6U9+1W6oSHw2GUZj1pH2ygEQxr/W28oEHWQUXwus8NjG4EpeTgMc?= =?us-ascii?Q?L/KVM1n2OkEe44RPal+PkZf85lmEFumPVrXvJ/881VVM4ccPx4xq5zPdPWPJ?= =?us-ascii?Q?d1uYQRQbiuTfwcNPWxlVDzg4F4zn2GAcV8Yxxw+BqnxzA69ABkeM4YnS7kwY?= =?us-ascii?Q?JEO79+F1ORNYWZYpDyyZxgwoPd9mI5d0ISktgGUiasBtkwIkJiuVtk1gJ4aF?= =?us-ascii?Q?M7ICYLosI0+4OTb+M9rNQS75f7bI9dlzPF0cYbmQ0ktvnwhdHYpZtjKwCxnW?= =?us-ascii?Q?Fbzf7YsgtwKR4Q1dWu2djSS9/CMmiktJmOJtfpb8C4SugFNptZT6C9OSSrTA?= =?us-ascii?Q?b9nmNeQDlU7LUgaS5u8UIGxhPSuaMHlQ47HLeLaublr8rKJXUH9Du8lvKW26?= =?us-ascii?Q?4vBoWJy3Z0jI0o51nHtGPl8KQ9pSHkRWynu+5KV7MNR0/CNwaIza6uQiZUAm?= =?us-ascii?Q?ecq/7PK0TVEdafQjUlYp8Di/V/0WQzxLVn9cHK1pA47ABP7i9AGwF9vWmNrP?= =?us-ascii?Q?g0nOZGk0GmRMZykzL0YOoVyvKlv6Qnpzyftucl8NDv0PK1DJYv8izzVgQ0Jp?= =?us-ascii?Q?4Fu2akXypQ8CskiC2JJHmrTj3mSlOOa0sTdG2vUz4agRmif5xdRwVoJg9Rei?= =?us-ascii?Q?MXesUkQq5YDrJ/DCyKUbaKYeS6f1h8xHS2tvgdSh4iYXmTImN4JJb6PeBYm5?= =?us-ascii?Q?SmoHeRHP18YPt5sBaljzmIS0?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 31de862b-8040-4a99-4368-08d92bf7c459 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:09:00.1921 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: eHJBAUl/hZ5PIU6vOJ+kez/qGg3Q6rD9iDkbsQ3xhrKihg8OwGkqZDhQQwpq1AGgji/rO1jMgp/w2afcJZnhSC9HUoFhOtMiOzIHQl4lgC4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6502 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.5.133; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-VE1-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" nbd_co_establish_connection_cancel() actually needs only pointer to NBDConnectThread. So, make it clean. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Roman Kagan Reviewed-by: Eric Blake --- block/nbd.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index 9d43f0f2e0..40e8d5b425 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -131,7 +131,7 @@ static int nbd_establish_connection(BlockDriverState *b= s, SocketAddress *saddr, Error **errp); static coroutine_fn QIOChannelSocket * nbd_co_establish_connection(NBDConnectThread *thr, Error **errp); -static void nbd_co_establish_connection_cancel(BlockDriverState *bs); +static void nbd_co_establish_connection_cancel(NBDConnectThread *thr); static int nbd_client_handshake(BlockDriverState *bs, Error **errp); static void nbd_yank(void *opaque); =20 @@ -294,7 +294,7 @@ static void coroutine_fn nbd_client_co_drain_begin(Bloc= kDriverState *bs) s->drained =3D true; qemu_co_sleep_wake(&s->reconnect_sleep); =20 - nbd_co_establish_connection_cancel(bs); + nbd_co_establish_connection_cancel(s->connect_thread); =20 reconnect_delay_timer_del(s); =20 @@ -332,7 +332,7 @@ static void nbd_teardown_connection(BlockDriverState *b= s) s->state =3D NBD_CLIENT_QUIT; if (s->connection_co) { qemu_co_sleep_wake(&s->reconnect_sleep); - nbd_co_establish_connection_cancel(bs); + nbd_co_establish_connection_cancel(s->connect_thread); } if (qemu_in_coroutine()) { s->teardown_co =3D qemu_coroutine_self(); @@ -487,13 +487,14 @@ nbd_co_establish_connection(NBDConnectThread *thr, Er= ror **errp) =20 /* * nbd_co_establish_connection_cancel - * Cancel nbd_co_establish_connection asynchronously: it will finish soon,= to - * allow drained section to begin. + * Cancel nbd_co_establish_connection() asynchronously. + * + * Note that this function neither directly stops the thread nor closes the + * socket, but rather safely wakes nbd_co_establish_connection() which is + * sleeping in yield() */ -static void nbd_co_establish_connection_cancel(BlockDriverState *bs) +static void nbd_co_establish_connection_cancel(NBDConnectThread *thr) { - BDRVNBDState *s =3D bs->opaque; - NBDConnectThread *thr =3D s->connect_thread; Coroutine *wait_co; =20 qemu_mutex_lock(&thr->mutex); --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623321148; cv=pass; d=zohomail.com; s=zohoarc; b=XHTg4q/xdSs6WF+3v9w2DK3mS+PBPd8xS6bLJ843yCdMso1wpDJs0brGQiMOYN3GSmfgoCtL/eXCSrXso2T71sE5pffNAZv/oQGEKRo48ZvA8roMnPsjR83q37glu6B/WmogmxVxlImUWGeGKwDUfDG4r4Ap0iUIKMj0kqANgSk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623321148; h=Content-Type:Content-Transfer-Encoding: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=XWtRIvHl0T1kdIj285luwrU/yUDfA8kXsLel5Rv3AzM=; b=mdpWBICgFoL+4ZiF9CuU63ao7fqX+4yBaLK/KiK1rHJ0TEybEL8jgiiJNuIXyNfSdRnj906KAFCwGJCTwJ8ji7ejzp6oamp/bHSrdSOBgajm3h4/vpP0kdLVKnOvwcQmMXu3lOYSAAm+4fpK7OAHhTgKuYQWvdPcIeMVrb5udfM= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623321148791450.5269121304949; Thu, 10 Jun 2021 03:32:28 -0700 (PDT) Received: from localhost ([::1]:51576 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrHz8-00050E-Lt for importer2@patchew.org; Thu, 10 Jun 2021 06:32:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45254) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcr-00061i-Hk; Thu, 10 Jun 2021 06:09:25 -0400 Received: from mail-eopbgr50093.outbound.protection.outlook.com ([40.107.5.93]:61171 helo=EUR03-VE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcg-00056j-Tz; Thu, 10 Jun 2021 06:09:25 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6502.eurprd08.prod.outlook.com (2603:10a6:20b:335::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.23; Thu, 10 Jun 2021 10:09:01 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:09:01 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:09:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kQb/4JMzYoWW9wXrY+uxC1pKDPorRnKIrowpzx8N0O5cLLrrcuQ01/bGCFG7lbmAS/cdMQ0dzDpP2XfcpwmZ39yrpAzR/oEOMBklXKf2pLc93tRH1vCRjdRE0dBNRgLn1bGF1eHYo+ZxeZNrHiUjDrb1gy26wTFnioi7+EOKJa9dDP+0ztg/lTteedTrAO4z34nMurtn6uOKQepRukdCCMg5KeVcbTG9f9jofdN9IOtvgHng5csgRvny1t4QVFOS32O1aSbYD45eHf9ZPtiVyzXIZQBRNz63QRsAv64Q+BYDsLBf0eTtKNUvoC0HotFnDk/FdPpgMqu1HhHK9Iwb+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XWtRIvHl0T1kdIj285luwrU/yUDfA8kXsLel5Rv3AzM=; b=mM5vNvCn5eNMEg8xGjUrzB4EabODTmNltF4LpKknVKhgR7zXTPdFDFUn5SuiWRRZbyV2TNnFvseYBq+pE8UQxQfObHtCotXd9+5+Tzgpnet0qWNTDgNThCrvHUPhekg2oseaah5F1Vot50VDLwteOzh/jo6LXtA7EZRexRb49kEtEsjXxEHJZyNpO616+C3P+quMOkDCETspdcUUpYBbJvFtVHgkKSj9foGbxDPN3WL9qbLCTYZAEbtizmGYggXNbCWqCCJsP109Bqvb5kVUsT1S+dH2Nll7O9DQo5OxlHihhCOy6GHftc+gN03d1Y3xOeHfftSLfddsIrnjUwUkJQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XWtRIvHl0T1kdIj285luwrU/yUDfA8kXsLel5Rv3AzM=; b=oBtcSe2+XkQmFKmM+nsHY8Hx7tffnDg7a1kBr61DSK0N2fzlhPF80hYkWkQ6JXYOFXzM8NXyz1SL0Mi1/UaElghaDPQdWj9Fzcj9s3JGJkMz6TKCdYrm13ffl3izpcLH3ww+bGquYfuBi9bKh9K0e0RIz88PIIR8fpUJnUSyN6Y= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com, Roman Kagan Subject: [PATCH v4 14/32] block/nbd: rename NBDConnectThread to NBDClientConnection Date: Thu, 10 Jun 2021 13:07:44 +0300 Message-Id: <20210610100802.5888-15-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c780915b-b3f5-4c70-63ce-08d92bf7c505 X-MS-TrafficTypeDiagnostic: AS8PR08MB6502: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:299; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DxKhdtg95A2lG5qJIStqeMQ3NOk+JtDo/P5+PBH2eD5i8YYGRRKXdfJE7ZgrZ+GwcQYyWHLpD+GvwPmg+pUaR3yf4UoP6+dyAApv1RnjiZDEGdL48rScR+BJrpY9nJZBkARuOUbPMjgqdEys6X30nyQO12GKmTDKq/mZmNone81sDdcat74JsnV7wtyi3vU9ecCouWFADUOfhU9Egvfvu2j57MKr3v+KS3LNiHlJqq32mo8P6lBcLBnG+A//OTqGYIHyy74S/uJgUmVpWlLrID/S2TXYekisc1ovYFlLBetEDw/nbxlguTvqIsBEyFyHLSXD/SHelxcsa9bOSQCLKmfBZ8dMabBP/p/KScub2+s0n9IDSGaAnXw0EEeIsLNIGD2F1TxifuaXMFrLLfHSgrjzHtNW5C5V8WeSTBJOyFeDfseczTUkWUSscG+62fuem4+ljexQObnED/3oCq6zc9k+snmf3k0TwoDurIV8NnKI4X2sW4DjUh70Vu3LcayRJnxMzH/1tal00LHPwdbHg5Rq/mwVf+w3DuSdj9x8h2YSHenRiH0SIYcb7fLc854fIwkiY5vcjYR7QU9BOE+LGyOFnVW33uvd+NjA9nLaK7K5YgEdwchE4gBB0zjOdCB5joVCezU/0BwMr2CPSoQdNSwenWRPM1UQrLp6cuVRAW64+qVM15tKrXgBXllZGDuz X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39840400004)(376002)(346002)(396003)(136003)(366004)(2616005)(956004)(6512007)(66556008)(2906002)(86362001)(52116002)(36756003)(6486002)(6916009)(478600001)(16526019)(66476007)(4326008)(186003)(8936002)(1076003)(8676002)(6506007)(26005)(66946007)(38100700002)(38350700002)(6666004)(316002)(5660300002)(83380400001)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?m9YFiVVUYP/s3cesgysaQAouooPLvJqU3vR56HaOkFxXgiDNNOdv2I5IZgui?= =?us-ascii?Q?xBoJy9WQcE+Og8iSg/wggCNqGupH6dpsj/HDLR6xx9Y3X6PNpiuqcXSEaGHD?= =?us-ascii?Q?w3JysLXz3W2b59WkUlZ0X5dXA7t3980rgZYbhTOSkp1bFS3UePV0U2oZATeN?= =?us-ascii?Q?l6DueumtHBjuPJVp9ZbnCrdDpNOrsZf17WBoCQbdmDnhdrwV2xZF9tRqHexF?= =?us-ascii?Q?4DNhNsx55Mo17GKukhJ2UOf5IF3KJSDDhHx84XM60synJKqcCtqnhrVQi5z3?= =?us-ascii?Q?iUMxVKWEHWm3H91KUwp2ON9TM393qFeUMU6F+3Ii0qz7/Q91XHX/iwsi4gJ3?= =?us-ascii?Q?gNHAE3lCWzauLhiG1xlbNeuno5paY/XeWAg5iMjJZSgYceyMf5YVzipp8R60?= =?us-ascii?Q?7DRH7Kvj5tsnAACGT6R0lE7rVHwzrl7GVPx8XueB/893WGp0z+INxaMBkBaV?= =?us-ascii?Q?WvmH6NXwG+YQLOD5wbfsXIAO91dGOFJAi4cgvf4YbElKROjqhP/P5BVt8lnD?= =?us-ascii?Q?OPkCriNQChTShlyuEzJFBslWGVs4JvR1llaxYYBZ8GbXJv3DzWNqxhO51CCn?= =?us-ascii?Q?dejlrnaO1BSExb0zow9aRCrWQgvvJ1Gxo1nL+7r43ys6YzoC494e7yEiz2sl?= =?us-ascii?Q?TqoW57ygsoK/ZkvuAnhZtTYvOZS0t+0UrfnNgsCTbcZGVtqelrtVzZIaKjWp?= =?us-ascii?Q?RxV7P5Z4ioW+Lw6VFP9jn5/UR6kDDBmnML2GbV8rVX6pj5DofrnDcKPkkToG?= =?us-ascii?Q?0I+mI6war7HCHn6t2QAPTlEkYm/Jhnv6ULrRIkGjwDa8/+3MxhCa7Hlhj2Ml?= =?us-ascii?Q?7dSde+EFx1QPbLMf8ScRDCXaLDDNanuEC+WqKXPfzvPj62WPzenKuYWAKgJr?= =?us-ascii?Q?ZmtWSqq+Z3F9iPFEut1rFNuRZf5Z/PifjdEjZHpugQVJRnDnI9UAUNfrAdMI?= =?us-ascii?Q?3Z41W1c2F5x/y1B3+QT9ZNhzLO3zzqIgrGcwlsW8SdYoDRuz7Uj7H0AU5dWW?= =?us-ascii?Q?ydY5Ym+XsLdT01vTxZNpTJoUQ8fVCifp4nWfSwqKquHs1fdwuDeK3teWbYCk?= =?us-ascii?Q?DGLyDpwor5uytrL4JV1ta1wuRzBott3/2+dZoV0WWHNw8mrj1SmslrJDb/2+?= =?us-ascii?Q?YLCRj1AF96nwkpTlsV/ZZF5qr6UGi2iIewF+JuqjucmNowMmUyWTk5ipNkCT?= =?us-ascii?Q?8S3hRvri+6yw3IyVk29tYsxEZ1fzwgGQabIObG/vbv+snyvFhlURTJfFucU1?= =?us-ascii?Q?9cQPhy8WfVCIm0me1x1U1SJHAoJGiTqcZ4zWcE2WyqGkFMazNUqmQCAj0b0W?= =?us-ascii?Q?F/2mjBhJWTC7Dx7UutRELKyj?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: c780915b-b3f5-4c70-63ce-08d92bf7c505 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:09:01.4526 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: m8t5NZpzifUS8BY5InW5xTsqpfsdakskgnszX/+UJvhRkbbYzc9Co7KY/jsgeovdCGYrilEWLKwheh7e34OblB4mNX36fN6a0d22Igys7gU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6502 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.5.93; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-VE1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" We are going to move the connection code to its own file, and want clear names and APIs first. The structure is shared between user and (possibly) several runs of connect-thread. So it's wrong to call it "thread". Let's rename to something more generic. Appropriately rename connect_thread and thr variables to conn. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Roman Kagan Reviewed-by: Eric Blake --- block/nbd.c | 134 ++++++++++++++++++++++++++-------------------------- 1 file changed, 67 insertions(+), 67 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index 40e8d5b425..a7f1e4ebe3 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -66,7 +66,7 @@ typedef enum NBDClientState { NBD_CLIENT_QUIT } NBDClientState; =20 -typedef struct NBDConnectThread { +typedef struct NBDClientConnection { /* Initialization constants */ SocketAddress *saddr; /* address to connect to */ =20 @@ -90,7 +90,7 @@ typedef struct NBDConnectThread { * nbd_co_establish_connection() after yield() */ Coroutine *wait_co; -} NBDConnectThread; +} NBDClientConnection; =20 typedef struct BDRVNBDState { QIOChannelSocket *sioc; /* The master data channel */ @@ -123,36 +123,36 @@ typedef struct BDRVNBDState { char *x_dirty_bitmap; bool alloc_depth; =20 - NBDConnectThread *connect_thread; + NBDClientConnection *conn; } BDRVNBDState; =20 -static void nbd_free_connect_thread(NBDConnectThread *thr); +static void nbd_free_connect_thread(NBDClientConnection *conn); static int nbd_establish_connection(BlockDriverState *bs, SocketAddress *s= addr, Error **errp); static coroutine_fn QIOChannelSocket * -nbd_co_establish_connection(NBDConnectThread *thr, Error **errp); -static void nbd_co_establish_connection_cancel(NBDConnectThread *thr); +nbd_co_establish_connection(NBDClientConnection *conn, Error **errp); +static void nbd_co_establish_connection_cancel(NBDClientConnection *conn); static int nbd_client_handshake(BlockDriverState *bs, Error **errp); static void nbd_yank(void *opaque); =20 static void nbd_clear_bdrvstate(BlockDriverState *bs) { BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; - NBDConnectThread *thr =3D s->connect_thread; + NBDClientConnection *conn =3D s->conn; bool do_free =3D false; =20 - qemu_mutex_lock(&thr->mutex); - assert(!thr->detached); - if (thr->running) { - thr->detached =3D true; + qemu_mutex_lock(&conn->mutex); + assert(!conn->detached); + if (conn->running) { + conn->detached =3D true; } else { do_free =3D true; } - qemu_mutex_unlock(&thr->mutex); + qemu_mutex_unlock(&conn->mutex); =20 /* the runaway thread will clean up itself */ if (do_free) { - nbd_free_connect_thread(thr); + nbd_free_connect_thread(conn); } =20 yank_unregister_instance(BLOCKDEV_YANK_INSTANCE(bs->node_name)); @@ -294,7 +294,7 @@ static void coroutine_fn nbd_client_co_drain_begin(Bloc= kDriverState *bs) s->drained =3D true; qemu_co_sleep_wake(&s->reconnect_sleep); =20 - nbd_co_establish_connection_cancel(s->connect_thread); + nbd_co_establish_connection_cancel(s->conn); =20 reconnect_delay_timer_del(s); =20 @@ -332,7 +332,7 @@ static void nbd_teardown_connection(BlockDriverState *b= s) s->state =3D NBD_CLIENT_QUIT; if (s->connection_co) { qemu_co_sleep_wake(&s->reconnect_sleep); - nbd_co_establish_connection_cancel(s->connect_thread); + nbd_co_establish_connection_cancel(s->conn); } if (qemu_in_coroutine()) { s->teardown_co =3D qemu_coroutine_self(); @@ -359,65 +359,65 @@ static bool nbd_client_connecting_wait(BDRVNBDState *= s) =20 static void nbd_init_connect_thread(BDRVNBDState *s) { - s->connect_thread =3D g_new(NBDConnectThread, 1); + s->conn =3D g_new(NBDClientConnection, 1); =20 - *s->connect_thread =3D (NBDConnectThread) { + *s->conn =3D (NBDClientConnection) { .saddr =3D QAPI_CLONE(SocketAddress, s->saddr), }; =20 - qemu_mutex_init(&s->connect_thread->mutex); + qemu_mutex_init(&s->conn->mutex); } =20 -static void nbd_free_connect_thread(NBDConnectThread *thr) +static void nbd_free_connect_thread(NBDClientConnection *conn) { - if (thr->sioc) { - qio_channel_close(QIO_CHANNEL(thr->sioc), NULL); - object_unref(OBJECT(thr->sioc)); + if (conn->sioc) { + qio_channel_close(QIO_CHANNEL(conn->sioc), NULL); + object_unref(OBJECT(conn->sioc)); } - error_free(thr->err); - qapi_free_SocketAddress(thr->saddr); - g_free(thr); + error_free(conn->err); + qapi_free_SocketAddress(conn->saddr); + g_free(conn); } =20 static void *connect_thread_func(void *opaque) { - NBDConnectThread *thr =3D opaque; + NBDClientConnection *conn =3D opaque; int ret; bool do_free; =20 - thr->sioc =3D qio_channel_socket_new(); + conn->sioc =3D qio_channel_socket_new(); =20 - error_free(thr->err); - thr->err =3D NULL; - ret =3D qio_channel_socket_connect_sync(thr->sioc, thr->saddr, &thr->e= rr); + error_free(conn->err); + conn->err =3D NULL; + ret =3D qio_channel_socket_connect_sync(conn->sioc, conn->saddr, &conn= ->err); if (ret < 0) { - object_unref(OBJECT(thr->sioc)); - thr->sioc =3D NULL; + object_unref(OBJECT(conn->sioc)); + conn->sioc =3D NULL; } =20 - qio_channel_set_delay(QIO_CHANNEL(thr->sioc), false); + qio_channel_set_delay(QIO_CHANNEL(conn->sioc), false); =20 - qemu_mutex_lock(&thr->mutex); + qemu_mutex_lock(&conn->mutex); =20 - assert(thr->running); - thr->running =3D false; - if (thr->wait_co) { - aio_co_wake(thr->wait_co); - thr->wait_co =3D NULL; + assert(conn->running); + conn->running =3D false; + if (conn->wait_co) { + aio_co_wake(conn->wait_co); + conn->wait_co =3D NULL; } - do_free =3D thr->detached; + do_free =3D conn->detached; =20 - qemu_mutex_unlock(&thr->mutex); + qemu_mutex_unlock(&conn->mutex); =20 if (do_free) { - nbd_free_connect_thread(thr); + nbd_free_connect_thread(conn); } =20 return NULL; } =20 /* - * Get a new connection in context of @thr: + * Get a new connection in context of @conn: * if the thread is running, wait for completion * if the thread already succeeded in the background, and user didn't ge= t the * result, just return it now @@ -425,38 +425,38 @@ static void *connect_thread_func(void *opaque) * completion */ static coroutine_fn QIOChannelSocket * -nbd_co_establish_connection(NBDConnectThread *thr, Error **errp) +nbd_co_establish_connection(NBDClientConnection *conn, Error **errp) { QIOChannelSocket *sioc =3D NULL; QemuThread thread; =20 - qemu_mutex_lock(&thr->mutex); + qemu_mutex_lock(&conn->mutex); =20 /* * Don't call nbd_co_establish_connection() in several coroutines in * parallel. Only one call at once is supported. */ - assert(!thr->wait_co); + assert(!conn->wait_co); =20 - if (!thr->running) { - if (thr->sioc) { + if (!conn->running) { + if (conn->sioc) { /* Previous attempt finally succeeded in background */ - sioc =3D g_steal_pointer(&thr->sioc); - qemu_mutex_unlock(&thr->mutex); + sioc =3D g_steal_pointer(&conn->sioc); + qemu_mutex_unlock(&conn->mutex); =20 return sioc; } =20 - thr->running =3D true; - error_free(thr->err); - thr->err =3D NULL; + conn->running =3D true; + error_free(conn->err); + conn->err =3D NULL; qemu_thread_create(&thread, "nbd-connect", - connect_thread_func, thr, QEMU_THREAD_DETACHED); + connect_thread_func, conn, QEMU_THREAD_DETACHED= ); } =20 - thr->wait_co =3D qemu_coroutine_self(); + conn->wait_co =3D qemu_coroutine_self(); =20 - qemu_mutex_unlock(&thr->mutex); + qemu_mutex_unlock(&conn->mutex); =20 /* * We are going to wait for connect-thread finish, but @@ -464,9 +464,9 @@ nbd_co_establish_connection(NBDConnectThread *thr, Erro= r **errp) */ qemu_coroutine_yield(); =20 - qemu_mutex_lock(&thr->mutex); + qemu_mutex_lock(&conn->mutex); =20 - if (thr->running) { + if (conn->running) { /* * The connection attempt was canceled and the coroutine resumed * before the connection thread finished its job. Report the @@ -475,12 +475,12 @@ nbd_co_establish_connection(NBDConnectThread *thr, Er= ror **errp) */ error_setg(errp, "Connection attempt cancelled by other operation"= ); } else { - error_propagate(errp, thr->err); - thr->err =3D NULL; - sioc =3D g_steal_pointer(&thr->sioc); + error_propagate(errp, conn->err); + conn->err =3D NULL; + sioc =3D g_steal_pointer(&conn->sioc); } =20 - qemu_mutex_unlock(&thr->mutex); + qemu_mutex_unlock(&conn->mutex); =20 return sioc; } @@ -493,15 +493,15 @@ nbd_co_establish_connection(NBDConnectThread *thr, Er= ror **errp) * socket, but rather safely wakes nbd_co_establish_connection() which is * sleeping in yield() */ -static void nbd_co_establish_connection_cancel(NBDConnectThread *thr) +static void nbd_co_establish_connection_cancel(NBDClientConnection *conn) { Coroutine *wait_co; =20 - qemu_mutex_lock(&thr->mutex); + qemu_mutex_lock(&conn->mutex); =20 - wait_co =3D g_steal_pointer(&thr->wait_co); + wait_co =3D g_steal_pointer(&conn->wait_co); =20 - qemu_mutex_unlock(&thr->mutex); + qemu_mutex_unlock(&conn->mutex); =20 if (wait_co) { aio_co_wake(wait_co); @@ -551,7 +551,7 @@ static coroutine_fn void nbd_reconnect_attempt(BDRVNBDS= tate *s) s->ioc =3D NULL; } =20 - s->sioc =3D nbd_co_establish_connection(s->connect_thread, NULL); + s->sioc =3D nbd_co_establish_connection(s->conn, NULL); if (!s->sioc) { ret =3D -ECONNREFUSED; goto out; --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623320871; cv=pass; d=zohomail.com; s=zohoarc; b=apD5sYQN81dcUGINOeaZGXCMot233h1aDuPCeSGw0wFkJQV2jSVZfiW1W6LwbICkuJ1yFftvMngryDQHkqUOMX5kdt66YmaFZs4uH9nMSO3Pn94Knla7v3zSXlVAh9ZA7Kvw01/K7WSE0iLelTOQ71AVFGXPwINgpNt1Wt40fN8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623320871; h=Content-Type:Content-Transfer-Encoding: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=p3Xh+L13NpA5OJsyK5mcKeXTGfdp0dFKgj1ke2TWB8g=; b=BlNtbeHmSxHHk8qh97kfxxyI9V9x6q0f2T8pT4JWSE7WZOQ2T1BzbotufSHD6pQ7qYLeJdZxZQIeBnIZZ5xbgARmowZPCXJ5EdeRj493PvxXtWXRJO+RzRMDAFRx4e8cTiGoYDpHLVCEX4g/0Emg9CDs/q+Gl9dHtbwtNBiiBvw= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 162332087198094.98698555337978; Thu, 10 Jun 2021 03:27:51 -0700 (PDT) Received: from localhost ([::1]:37394 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrHug-0003fh-Ty for importer2@patchew.org; Thu, 10 Jun 2021 06:27:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45160) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcm-0005kP-3M; Thu, 10 Jun 2021 06:09:20 -0400 Received: from mail-eopbgr50133.outbound.protection.outlook.com ([40.107.5.133]:23957 helo=EUR03-VE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHci-00051Z-7v; Thu, 10 Jun 2021 06:09:19 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6502.eurprd08.prod.outlook.com (2603:10a6:20b:335::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.23; Thu, 10 Jun 2021 10:09:02 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:09:02 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:09:01 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UrpaYCnrHPjUv5qPji1OiPVRnSyJYbSDfB5Dexh44WX+TJkrMQxpjOLraK1A3CnjkE83NZIm28t+HG1UYSm55/zIZri1LXvNZ1dT4P/NcXVMgbNSM8QTjWJDND6cU6+BcsOT+PwZEzMWoSECMdX7SUVrlcExCuywMuTMrYeYBey/KXksD6mVThqPQ2bZQ7/yJTX9XmVk/CrYJX8q1qzomRnGBW7icgSKvJRItsnICvOF6fY26FVqy5ZJCGkm8U0EJzavTJw8Zd6GSu9MjE93Xx7nuIogIqnZg80wF7sK/LoKoJhx0mva7U9Wj6qzBZa1MPYthnz7OPnwTBb/GnyEVA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=p3Xh+L13NpA5OJsyK5mcKeXTGfdp0dFKgj1ke2TWB8g=; b=mV7ZDOEp3A3TBgPuKAJOdxseAvqsVGHoaZB/Qe+DOFdWZguDnrPoABnBVxiu3Cp2VWNurgd1K98ot+erqV2Nr71Hx5cHm9BlUu7IrBCe7OfDJhu77D+LcXjttmHEeDBX+g95hMKDiTf9MqrjzXbP9LD9T762lPrU6ueNdVY2LtdfoYDJr9UkvBnKVHOPDpSm2TtVS0x7H6dU5aqXHNnExp/NkZaoy/RD2vGD3ixvD0SILyL7mln79a9FhT4QaQcaUwdJtHnyd63zLnrp4aBJE7l7pT8rNvAX959wtZppJSupRy81Y/PlqqjXU5vm+Huxit63ud0XOPjWKcIrg67Gkw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=p3Xh+L13NpA5OJsyK5mcKeXTGfdp0dFKgj1ke2TWB8g=; b=TDoBj/o713LNqhR8mYqSrEsqB7VfcmSw6SzlXUT8kt5xS2vr+zgZYCi9O82e9P8jFektrRFFsPsU9+10kbeFsMoeZyrRX85/hsscERtHoMAm58UQAWIvWx/gJ2hgYpVNuHdfEIL90YsoUfFsLG/v7j0X6xTURFIRWV0hUMqUpZI= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com, Roman Kagan Subject: [PATCH v4 15/32] block/nbd: introduce nbd_client_connection_new() Date: Thu, 10 Jun 2021 13:07:45 +0300 Message-Id: <20210610100802.5888-16-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ac8a6788-a971-444e-37bc-08d92bf7c5d5 X-MS-TrafficTypeDiagnostic: AS8PR08MB6502: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:92; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ZnO70OnEFPt4SRZ6u4FolO+rj+yvWYi5YAPYsHNFjdKbidK+53F1zcsURpk95htXd9PkY4lN8ZiDqLWpmt3kP9uVZSm3wpWxK8wxCF0kUHsbYs1ybuHotcZ2iLxLPLDdej7NIbYBdpuUEI6PnKNlsQLkx1gzfgVC6O1nctC5IRHq1rBmW9mDrxMNhAKA3gI7lE+pw6uGtbv9vKRegYA37kxckf+iLBZc+8FtWY5BYKX0q4lnMaooXbk6+sXEljuPWtgE45r3LHnG7gyj88k3jOJtZ3I/Ffm/ySaO+1G0bWX9VeDmzUbWYHRlneeUsSpcJw7GBakziWHzVWGgDtuy4i1nBlKZ9/+Le6KgpNkFaNot2yzCXNjcwhw/6i7uibWnvfOTpEGnxoxFajMK1n4ijDWS/fhMtAGhbuMdBeWOPTcNtmyahh7Exklk9K8qs/Z6EJI32XEZHmoOfJsePds3Tax9ffbCfUNOgfwCjHv6Oi9fwQVFQGi0P/maOZiy+ud/yMtaw3oNx6xnyS8fi6Nb1YEv/R00mYhJoPoLbwwoq/xl9FC4+kVDJae5cuQRSQiQ0PtiZWe6ikOGb0xD77453H8IPizMvU/2Gy7b2ObtmcHdWvRFD+0zS5mhvKQKzUAnQC73bdWkmmXfuuB+NtpQHYhBt3izJ3za92xTyEcSmkcUmTnLgidXU9OyQ2VW8HuT X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39840400004)(376002)(346002)(396003)(136003)(366004)(2616005)(956004)(6512007)(66556008)(2906002)(86362001)(52116002)(36756003)(6486002)(6916009)(478600001)(16526019)(66476007)(4326008)(186003)(8936002)(1076003)(8676002)(6506007)(26005)(66946007)(38100700002)(38350700002)(6666004)(316002)(5660300002)(83380400001)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?Gsz+1vNNMwL/pmujLMt2tf4MYw8mDi1148E3rH9pi7ehMpDGP/srm7qXco67?= =?us-ascii?Q?aZ67hzI8lMNKVHgZ6SMfqHDQQWNW3G2Vjf2c41utbdGzxvHUYLX++Z9f8bgk?= =?us-ascii?Q?kxvDysE+v5DS3R3NQTDJvaEyGtNxkji9mV6Hskj1/2Yxq7L2IfUlAns7Xx1q?= =?us-ascii?Q?dJpVoEuhfnK5ZfgJBA7irv572D6u+dH9P8hb+j8Qxp3m1rR1gq5syPsrnXj0?= =?us-ascii?Q?rHCNqbVrsr6E7gl95NUKIHWFbgvGlDrEla7nB0+NWImZkjnCW0+jxlXqWaNR?= =?us-ascii?Q?XNwOvuSGfjGHEew4905sI15JlH2Aipcorxf8g6U5gyXHt2pxns6x6/TQLuJ5?= =?us-ascii?Q?TIzY/z4yLaB1H1KK+mBnHIh3hZdUfqXVmIYHdrClVns5hZrwTFVUKj7S1iDy?= =?us-ascii?Q?ggUtQ+3vaEGe/hcZJs8zONyluF0Jt4q9b48bYvwYi6cQjnbjjf37zm3ooagw?= =?us-ascii?Q?CHYo2ncDxDYVY1EmkBZmA6pjE8+WsgQEVT5cS7TRRWIHRkTh+bCyBNo6dGqx?= =?us-ascii?Q?nQ1h7fmHI6oAqyQI9JIv9mEPlw26vCz22tIGLJquMfZnp83rm0J+K1jPoY5y?= =?us-ascii?Q?VfYF3+Tv8ULoRQdbG3TnvWzoZenA/4EZ+UkcPbo7vXJhcsGf/qv5wd3f4dfU?= =?us-ascii?Q?aRDJXS2Mi/X2Wbw1Z2RvfTGsfRyhag6EbSJGrj9GYhlfmeZlPBGZIB8LaP0t?= =?us-ascii?Q?Ry1tzmMXwTMhQorzaXKzg5PVaw7sLqWrn8iv2i+zw2zHZPGeuJPhS8KPnKBn?= =?us-ascii?Q?QUhJ5Ow2NGZ2xZMVG4Mxl+lNj6BHNhb8NACze9E+g74lQQ/EoihJ2kayaVUG?= =?us-ascii?Q?1nMH+rRxCRHWLapwkYvkTorgGsSswxkeHYSVEXqGZ9RPdwYj9cibIfxxWWfX?= =?us-ascii?Q?5PXHyH4ES6me9tqbFKELrvlaF+XHNN9MEMnvvhVaIjq1kx/j0bjpWRyZYHq/?= =?us-ascii?Q?X3ZWbYmO6At8JaUZDmbp32f8rIpOpQsyB8z1SJ+8Bdhq84fuw6d6F/qod0TW?= =?us-ascii?Q?0hZeNiZ+lPxcEg/BSj4qWmcfgJvzNsL3+ZftCDG5LYEfUw1u9CvLc2bZGnq3?= =?us-ascii?Q?Ad2ucByXjAZbO74igH+zSshpoTXxKBizGkDw0EssZUsNIM5EaNcCXZIkMv9Q?= =?us-ascii?Q?Wiio/F/bkP0ddv5g0YHv3pqgaQ2Xvu6EcdpwZtE45s6AQ7Gz0xy+xn2vtHPD?= =?us-ascii?Q?VfWcxl145N1vwwHROVB3M7U1JnaWRYCz9vmxIOiq/Mrir6MpRtyzbIWAYQN8?= =?us-ascii?Q?OOaod3iq8Jd8hUyObsk/3FO1BtSoWccY5qPldbnPZEisOczZwbJln56916Ao?= =?us-ascii?Q?RFRxZFBaPRx+tAGYndy6eWzq?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: ac8a6788-a971-444e-37bc-08d92bf7c5d5 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:09:02.6981 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 51vReQuG1TrHAilug3gLp/5JiFfuscoCOi1toyctRFPi/r0MycSBnBaeaqr+YaFIyXpysKBXM5C7ZtXWkpOg0aLk3RY+9Ra26VHPvpWEZ4I= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6502 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.5.133; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-VE1-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" This is a step of creating bs-independent nbd connection interface. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Roman Kagan Reviewed-by: Eric Blake --- block/nbd.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index a7f1e4ebe3..1acac1953e 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -357,15 +357,18 @@ static bool nbd_client_connecting_wait(BDRVNBDState *= s) return qatomic_load_acquire(&s->state) =3D=3D NBD_CLIENT_CONNECTING_WA= IT; } =20 -static void nbd_init_connect_thread(BDRVNBDState *s) +static NBDClientConnection * +nbd_client_connection_new(const SocketAddress *saddr) { - s->conn =3D g_new(NBDClientConnection, 1); + NBDClientConnection *conn =3D g_new(NBDClientConnection, 1); =20 - *s->conn =3D (NBDClientConnection) { - .saddr =3D QAPI_CLONE(SocketAddress, s->saddr), + *conn =3D (NBDClientConnection) { + .saddr =3D QAPI_CLONE(SocketAddress, saddr), }; =20 - qemu_mutex_init(&s->conn->mutex); + qemu_mutex_init(&conn->mutex); + + return conn; } =20 static void nbd_free_connect_thread(NBDClientConnection *conn) @@ -2229,7 +2232,7 @@ static int nbd_open(BlockDriverState *bs, QDict *opti= ons, int flags, goto fail; } =20 - nbd_init_connect_thread(s); + s->conn =3D nbd_client_connection_new(s->saddr); =20 /* * establish TCP connection, return error if it fails --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623321118; cv=pass; d=zohomail.com; s=zohoarc; b=g/D/wY2j94a2ZijbG2i14jNudLkwz43JNRIxlL5pO6sYaXVb9Mdo+pW2HrqwdOWAbqY5Psmcp83OE62OMoBc0xwcDv3GoJhrr9Cp2qHZzv6pp26Q0lEJJ6wDZaTPSCFl03DlMVR8XZuNFplNxMLOOoxPZkY8F/VxBMZZWSiRuT4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623321118; h=Content-Type:Content-Transfer-Encoding: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=wQl4POOm4eFa/mCJybXKz8r1GwYz17pkC/3A8Ox+NUE=; b=ArbMK8FcNQzP7YKgUZDYqtX/9fQ0tMLE1S8bldCZ45TaGlrQD1SgvQFY0WyPETBi7mJSuJU1HSmMHmrTPHgCgTwtMxseStm5ZqxX/6mxBqAmhCPb7myx5TM2wIqeXeSA85SUP5P5DSOJSe5fTAoHq9C5OnKbsy2Gi0pRv7tEOQc= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623321118886603.1887156913658; Thu, 10 Jun 2021 03:31:58 -0700 (PDT) Received: from localhost ([::1]:49902 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrHyf-0003rN-PM for importer2@patchew.org; Thu, 10 Jun 2021 06:31:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45216) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcq-0005wV-3f; Thu, 10 Jun 2021 06:09:24 -0400 Received: from mail-eopbgr50133.outbound.protection.outlook.com ([40.107.5.133]:23957 helo=EUR03-VE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcm-00051Z-W3; Thu, 10 Jun 2021 06:09:23 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6502.eurprd08.prod.outlook.com (2603:10a6:20b:335::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.23; Thu, 10 Jun 2021 10:09:03 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:09:03 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:09:02 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MAmCkuCNCZozeEIWaEEoiehW5zQIo76u1OH8VnKg2MbLDXZWlDOadhAsZVQrsbQS07xe6fkk4WdsfZoBKkDxQKgp2bv4UEnoTANkCMYHOevekihPOeF7/Z2UUzY1i/cyIbryC0oUpykLc9lRvxx8bc5Bv3CRYsSNk/ZgLQTYg36RXU7Md+jepNvOZpcf9LDvOlrKCuRvJEObf1ScpDsCx5dhqb9aq2IlRPxm7B+SmkkPVANjplLq1Kehspbe9yYycGrJHgffxmINKDP9Zebixm0UyIUysq3yn04Zd+NilDpZ1s8sI6TpzOnt9PKUBs77ZqNyxyzS8dTMYoCXWP9mCw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wQl4POOm4eFa/mCJybXKz8r1GwYz17pkC/3A8Ox+NUE=; b=bsiXzyx4VifwvW6AeiZTStTRTXnVsnDlguJobVKAKMro7EZrqhmn8yts4uwp7N+94eGp3y5Z8orbO+3s3OtRLHjEMubOe07S7pqeGZ+pzxT+xEzOHcC8PY9ruEBWIFiTQjoWwSKmCtw4vtP94tu/JbGVHlF000m2mJSEs0i4wDzWfp42A9xxAOxckHmSJ7o5e5/C6CZgC1MVn4DelpxiwTOw80tVMMyu9PV2fuPZr7rHGmKmerdWOo/rAwEJc495WQUo9Hm3v5Dl5U9eVgzm59k9+5D5BFExqQyA6h+SIXEq7Kh0QcQLC6gTXfIB+kZzEGboc7ugJ2lPLGk1i598tg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wQl4POOm4eFa/mCJybXKz8r1GwYz17pkC/3A8Ox+NUE=; b=k/ZJHGVGBUSx08IdTa0HQK4rwQjEqvs2JqztFYiI4DGXp4YY+G9MQo/BIbYcYUtY+Glu4TW3ewhVuoiQzB0h+FDB/IemNvanr6fFyUgOQuFkTVftE0QabRBm7LKlPH095jYRZK4AbOHk+JXKd2w3C94bxT6HgfbyUmdQz+ROnT4= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com Subject: [PATCH v4 16/32] block/nbd: introduce nbd_client_connection_release() Date: Thu, 10 Jun 2021 13:07:46 +0300 Message-Id: <20210610100802.5888-17-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 473b498c-99d6-4060-f6b6-08d92bf7c67a X-MS-TrafficTypeDiagnostic: AS8PR08MB6502: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:40; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rCP5ptP+5sNa2J6ak47n7TYHBNJ19qkm28roIZsgOAPqE5VlmuamTO44VtXoNA7AVVbKLUh7DcE7cwV/D016xEzyY7wMCNyUkv13I7mPSz3rFriyKfblBkc8IVjKhE6vmhhV7UoX9Q+bwu4ao/edYksfIP6UBTaDgtlhYLfiMuSUg7itRYrgYEDnUR5vi+F3UtYW9lRje2x6CrOUCjBgJYz5zD5LliF62Yf84Hb0jkuxZu++F+45ezBXZ2iHi/+IUhdSipa0tk+2Q/Mcqn618kK800YIwuIxOExRbwSGFy56h3NdYle5bE3zD76gfID0jGybtzw7BVAate4EtHwh4O2Hae6NemFhJ7iUY5KqdJGV3tMvDwAE9iO5BWRQwEnpqj4vpa0VlNUirbQnuJ1FHy3S/CeggBNLEBeYDrNUK+aJI/APnj4H36Le9uJIhQIbqvfJZ+bdegsS7+2aDsQ8xD74guzBeMiu8t5pG2q+n1l/NyobcK+Lb3SL3aQV0SWN0PsF3AbuijysRrxZXOskMKMGcUa46AgJHnygStgW4kuXqJalJe2vzn8Z9p72P/0qcY+HC3+iyD90f35BB9VPPMaXnJPY44AOz/romHvrwgNAkXFTr1QB51Qqzhmwhyr3ApsYa/f4my+ffQdkBsxwqKMz7vnzzNiEeYLAEyKc9/tmLCzh+CHxQbow2H5HIMQS X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39840400004)(376002)(346002)(396003)(136003)(366004)(2616005)(956004)(6512007)(66556008)(2906002)(86362001)(52116002)(36756003)(6486002)(6916009)(478600001)(16526019)(66476007)(4326008)(186003)(8936002)(1076003)(8676002)(6506007)(26005)(66946007)(38100700002)(38350700002)(6666004)(316002)(5660300002)(83380400001)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?PQs8GLwYBMJXrXWUyviz/r78148NbPi0tzU7VKxbRCE2F6JhJIRWtQqgpp6o?= =?us-ascii?Q?Yn2OtNmamE5GtieWDX9N0p2b9/SPZSOoYY+cFNUY+P5Q6qNCgT8kwlmogDDR?= =?us-ascii?Q?JTza76x9HXaWlbcoMWSDim7WGRuB7FnhggmFP1LEkq0k5k5uEqGGkFRBleNq?= =?us-ascii?Q?oIIl5zwnvStgxh0BXKnGvkgDFazMDnmEnwxQ0S2LPrFp/tbmzvKfD57HmlYC?= =?us-ascii?Q?4ncZXh1icAUktX15zvQj5BTosYi6BGKQe4h7ycGfUbGbRdjmI83QgJD8s6ZN?= =?us-ascii?Q?KojlXYabFoV/so2HzNK5SCXiVX7oWULest/kiUloehN21sGL6AWhFGVEnMIc?= =?us-ascii?Q?ivkaxYZQ2WvssiKa54T1wglz24s8lAiJBhS4yOYDCiFvvRzujGSwc9dCSyPP?= =?us-ascii?Q?qHB9MpkMzC6JweauYLg/Akxjb/YFoMk3s8SPci3Nr5Fm2+y3g2bWinUUXIQp?= =?us-ascii?Q?xfvbhh+wnnAyuyL5knIqdBKxx06YYuskn/HKX3IMNYe7P8HldiK5aUMdmX4m?= =?us-ascii?Q?XCbQwBHJeX6/FFHO1w/KSyCvSJGuPdoJELUph7i3AJYNQpbSg68P7VCHp3GK?= =?us-ascii?Q?yp+RqWmPlNDXmcQ3XFrGyhP7FHpGtz5lsdO+DA3QFADlQ5qwYXl09k8M7liP?= =?us-ascii?Q?tftrQ1sVpqommR0GMeg8UXATypvZ3SeYy7svmUzyFNCj9cG4BTlR52mW7Ezn?= =?us-ascii?Q?SSA5CLeBbyXrZrTBq1OuqWQS8vEwHgm6YwZ0p/6cnF8wDlpLfB6z1Yr9zbN5?= =?us-ascii?Q?kUbFkkRIrZjFXD/obifaPVYyklYjF8XgyijF3PLIhCk1ztoDRiwizMfGkfH1?= =?us-ascii?Q?CjX8H0Aex914wXZWqnD3CL2M6BhkJLkqFc5ZpCBDpaypCmrWFz5QyipQDakU?= =?us-ascii?Q?dCIzOhrfhykF8L3CMH7vSuX+AEiKFVUThc9E5Z/1eemE9ZuQhXiqtLnWLh8W?= =?us-ascii?Q?s4Y8BFISWc8ANZ7mjPhrsmM34fYG8lKhgTgnaZik4YE+LFGaKW4Er03EkDMM?= =?us-ascii?Q?V09O3IOZvEVg8ajZbnNFardVWZjczbCsO2jX7GBZdLN5zXqGORQik+Czmkwt?= =?us-ascii?Q?z9lAZtnlS1keHIkiSNbMw28c+Wjeo/OyUW7/wCnstxMGsjtW5KILpTgnt/ZC?= =?us-ascii?Q?XkI5Tt9FsBMTHbP1HDKhrkUxEEwwjfr+afSsUYLzZRxLttPRTT0GExTtVzue?= =?us-ascii?Q?ZZa4NL7riJ+6YAYs5TCqIq38v9Zq4ScGHW9sk78bEOxZ85RqFYLG04PupoDo?= =?us-ascii?Q?cB6kNZg6HxR011iRcamlzxBe7wQf2KQkQGlVnQyIs42429uuDYlnR4gO6Fkn?= =?us-ascii?Q?tv+dHDNZwkJ5vDpmXIqkaW+p?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 473b498c-99d6-4060-f6b6-08d92bf7c67a X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:09:03.7943 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /1ndi0jAhq5nJE9nBq2o5bEFXEabm49O2Qfc/wcLaLlShYJMKuaLq2Esew3O0TuKhPXEcjAoDZtdtmeyag+aGjq2ngngknXZB3lI3io+nzs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6502 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.5.133; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-VE1-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" This is a last step of creating bs-independent nbd connection interface. With next commit we can finally move it to separate file. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- block/nbd.c | 45 +++++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index 1acac1953e..b34957e464 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -126,7 +126,7 @@ typedef struct BDRVNBDState { NBDClientConnection *conn; } BDRVNBDState; =20 -static void nbd_free_connect_thread(NBDClientConnection *conn); +static void nbd_client_connection_release(NBDClientConnection *conn); static int nbd_establish_connection(BlockDriverState *bs, SocketAddress *s= addr, Error **errp); static coroutine_fn QIOChannelSocket * @@ -138,22 +138,9 @@ static void nbd_yank(void *opaque); static void nbd_clear_bdrvstate(BlockDriverState *bs) { BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; - NBDClientConnection *conn =3D s->conn; - bool do_free =3D false; - - qemu_mutex_lock(&conn->mutex); - assert(!conn->detached); - if (conn->running) { - conn->detached =3D true; - } else { - do_free =3D true; - } - qemu_mutex_unlock(&conn->mutex); =20 - /* the runaway thread will clean up itself */ - if (do_free) { - nbd_free_connect_thread(conn); - } + nbd_client_connection_release(s->conn); + s->conn =3D NULL; =20 yank_unregister_instance(BLOCKDEV_YANK_INSTANCE(bs->node_name)); =20 @@ -371,7 +358,7 @@ nbd_client_connection_new(const SocketAddress *saddr) return conn; } =20 -static void nbd_free_connect_thread(NBDClientConnection *conn) +static void nbd_client_connection_do_free(NBDClientConnection *conn) { if (conn->sioc) { qio_channel_close(QIO_CHANNEL(conn->sioc), NULL); @@ -413,12 +400,34 @@ static void *connect_thread_func(void *opaque) qemu_mutex_unlock(&conn->mutex); =20 if (do_free) { - nbd_free_connect_thread(conn); + nbd_client_connection_do_free(conn); } =20 return NULL; } =20 +static void nbd_client_connection_release(NBDClientConnection *conn) +{ + bool do_free =3D false; + + if (!conn) { + return; + } + + qemu_mutex_lock(&conn->mutex); + assert(!conn->detached); + if (conn->running) { + conn->detached =3D true; + } else { + do_free =3D true; + } + qemu_mutex_unlock(&conn->mutex); + + if (do_free) { + nbd_client_connection_do_free(conn); + } +} + /* * Get a new connection in context of @conn: * if the thread is running, wait for completion --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623320678; cv=pass; d=zohomail.com; s=zohoarc; b=eXphM7KC4NCJXhni0GSw5af7mcXIVlDyFxQJNmiIZDmXbxT7E74+p6MzyKK+nGG/rX+o+fJFBExbpVAmWwehGeoFdWmpTwlByCYhTOkW8rIQ0fGmqrD4RNT/TZRSXDMkaCU052se3nGhlx8+hXeDM02qzBsV3cl5fxLVrdAdLQY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623320678; h=Content-Type:Content-Transfer-Encoding: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=yUWCcFPP+WFX9JPlDLXCdRQOGbTi+FlvG0pYsiWQRs8=; b=NAk8CQt5Rh7v4kz8Dk2QhIUg+duq0WbvvYZKgzHVHmBGB2q612IMZ/J/kE9Wwy91EeTL3wFsWPn2VgCds70Y9icuP/3P/t4wZYS96dXemQbSBnAPBARrRqmoFZkncYW56sWJO9Yysq5sB/0T+1GuU6AGcoGKeuJGvmhIQW4yK5M= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623320678920235.091095670678; Thu, 10 Jun 2021 03:24:38 -0700 (PDT) Received: from localhost ([::1]:56264 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrHrZ-0005b0-QT for importer2@patchew.org; Thu, 10 Jun 2021 06:24:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45036) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcd-0005XH-9p; Thu, 10 Jun 2021 06:09:11 -0400 Received: from mail-db8eur05on2124.outbound.protection.outlook.com ([40.107.20.124]:62941 helo=EUR05-DB8-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcZ-00058S-DV; Thu, 10 Jun 2021 06:09:10 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6790.eurprd08.prod.outlook.com (2603:10a6:20b:397::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.20; Thu, 10 Jun 2021 10:09:05 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:09:05 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:09:04 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RMv8e47ZujOZxJYKan9Ml0zBCum5ay7WKW8zrM+dMJ4W6BbOYxGawRJs4RGyTZ+seKDoU+ZghThjVKmXXyByFFFVsK1snWwlkLp7Q4WRcuJ7UwiQXgEKHsrVLrynyLxHJmvpstkl24YMCUkIiMuyOC3O4ibSNmDK89h4f1W9gjbH395PvYGzgog7+zTK6NJxv6X4wfT5CoxIT49uv9CN8rbVp9tMTZI5UOkj7378zIxJ2VaBde0HZ38LHSIEWfomg/jQhidBfW7teFxfbtE5g5SsB96KjL6XPzNXOvl9VZWczXwwFRrE2gmdBtD8nhooJmBd1zv0XHtQy5UNMkN6nA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yUWCcFPP+WFX9JPlDLXCdRQOGbTi+FlvG0pYsiWQRs8=; b=NJeLf9HQb8qZIns3FOyx1ZA7aOf+2kP5LkDbDi+Rq03FTPTOyUHYxZevomXU7e0h8KRGpCDSgnaEVoFciOW5LImkl/KansxCX7qZ93KszEAiX2/afOBJqQkADuYWhaLEuNcifwP7bzTztCHZuxjUGSEFQjCGFQTv1WuBGz+VSF62liI/uImjHI8QGHrKf7DgWgYT0oFFrDoJ+m6SPP/qqbeK21AUROoRc3p/MH6i9+2gcgjde7OEzspQZf00v3afQroq1QT+NY2M4hj5h/Fmm59wbqKLLNGUWnrzmOvjpz1kog2iOzus5DXA+kzaPBOgkDsrvKQjgaXkf4tGTGnU5w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yUWCcFPP+WFX9JPlDLXCdRQOGbTi+FlvG0pYsiWQRs8=; b=SCRGafQVqSWhn05QzmBZA4M8xwOyaus9TKV/vAwHRL2vUMMClJxD1JdIZCH0vb/X6plo957/iU6rV/ErU2Maj5XIG5AumjXDLbB3GDyIM74by+QDSOfGlxqNFNBiMC2wNbeVrsgPszDXgC1239NxX/0ttYM1q7yGfP5yBY/1tEo= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com Subject: [PATCH v4 17/32] nbd: move connection code from block/nbd to nbd/client-connection Date: Thu, 10 Jun 2021 13:07:47 +0300 Message-Id: <20210610100802.5888-18-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 64297251-90f0-4d9c-71a3-08d92bf7c723 X-MS-TrafficTypeDiagnostic: AS8PR08MB6790: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:989; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9B9y7wnJ/g5rwADJY9ire5669Hhn2sNmfr4AL59HdoGpZtPQTtLOwksKEuBjMl5xcNc60TJFelHlFScPvlIthAmY056/ouu65pfqtWeIL+LZD2qGgSLlqlODOFtGRTyuGUC5mZq17jqVv+gV9934sGYa6v0gSsahkEnB8BlnDt7O132pNkFduEgzgLuYOS30zRCDZkbfp6BhOD8yGFJzT/FgXr4efbFgHqRfucUdXNC6N+5zqrNfGjOOo5qX+1dw6jdnFBsTK0wkrfqbzS1laLwrLM0Kma8HAl1InB8lvPGkdxZrM/DBMj+2sKQ4Zss/3mePgKlKDYban9ZQC/JL7CMNAgF4kxC97aCKLeq82Iws6qzeY8d0NWOeI6HD/e5vTEZjUtcr1y74y/rLSLo+Svn1dnzb2X/1qkBJnKV4CVrmN3dwhdt3Y1HkeawizTxWpST+9yewOg6VCrNmc6MB+r8E2jh11yR+3NVekl1aOUuwXRRO/IfPd7izYE1QVgw2FKkeT69OjNBTCWjaHLp0x8h7F+JIZ9rOxKPWWrd1gASWwWyGLearYROs7wtxKOoO+N2qvOukcnInHdk3WAPrIS3DW/eZLUoiTqwJD8zfELrUhH+T+CkCFxBwngw+omVopwi8xXrDYFmcdAUYP5szR5M2E8Wic/POl91uuf7L6vjgdXnP4SYKcxNvJgA14jVi X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(346002)(136003)(366004)(396003)(39840400004)(478600001)(16526019)(6486002)(6512007)(83380400001)(6916009)(30864003)(66556008)(6506007)(66946007)(26005)(66476007)(5660300002)(2616005)(8936002)(38350700002)(36756003)(86362001)(52116002)(8676002)(316002)(186003)(6666004)(4326008)(956004)(2906002)(38100700002)(1076003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?h5k8CS57OuOZJMruopr9JA1jFgDJJD7u3xyIcTvDCvDF18Ui3BeEY4PPsF0B?= =?us-ascii?Q?mtRuotaPAO6ZPBUBdqr0CUNzmI2Gh2w+5sNQLv6lQwXihhyMTE7RrxH43uDT?= =?us-ascii?Q?EwiGQRWWtG1BEswP/9fH7yq0i5+302m6qHdHaQUGke+niyJcGQWzwJXinX9c?= =?us-ascii?Q?+XQJ3lRk/oiQNosIHBYyS4sSq0/ZL51IjjiFqlNpAyKo4vJuYNmAJyxGy5JJ?= =?us-ascii?Q?ygbpuXLxQpkzqQFDId0C8BRYLEBmfWPbskAsbHjeER2dYkjrsG6uWOfpyEKn?= =?us-ascii?Q?3uncdZ1DSD2Lk8Y9mVsaUUAF5VFc+m47mtGEyvdLstRA1vN6xa+hDCDrwW/w?= =?us-ascii?Q?xHN93dphF6qYodt9RFEPf8E+B0KW7vT6jIqufsyZY1xXJMouMyDVXlItq8rA?= =?us-ascii?Q?5C6VMGjRT6v/hVm+x6TDrplUwO+fjtkwcBM+1IvPgO1taYqvFidLWPga2VPd?= =?us-ascii?Q?j8U1e1mXHGRi4eobm1TH/mqcG5X+GNg4TQHPAa5FWzn1NQU6WAN+le44qnW3?= =?us-ascii?Q?Zi/Y5V9jIZHJ/Yi9rBL9CkmZ1qqkyLuhWa0cPN8rdvyAP6cDagaYdFhBlZZm?= =?us-ascii?Q?q6xL00YiDl7185lJidUypCAZUkU4sXATRzFjTWBcwIfVekJbe7N5ZnIEwvT5?= =?us-ascii?Q?LDuIYGD679d7GH3TV9yAnXxkZk6WdaUj6tIDnBxbAwxcvG9xzUk5pE8S94hj?= =?us-ascii?Q?IkPQ88oS/pohDDGeJa/X7tRiy70lOP6qXDx0jPg9+tz9LVfXYvwgU4xUuF/D?= =?us-ascii?Q?IHmD9PdnDL+RlazBVSJudbZvLyx2tj40Fkrp8mwCiMZ/T9j8LIVfqBbrK8Mt?= =?us-ascii?Q?UwlNDN95ISMIuGETUT03F1lIK56yVL1BpQIKHjs+gQe2MxIX0omufG9lBTbh?= =?us-ascii?Q?EdFQ4eTiTbiiMEZHYbsZrefuRE64NLT31v3NAgHEYT1BZ44Awo+YAxSNUpHJ?= =?us-ascii?Q?MWV5GLtXzIHbCKTvz3uhBQGDFkQ4arY1J+B83JGZOLWDwigZck/V44HTeRKq?= =?us-ascii?Q?7hwTls6hb1T+JNk35w8PwhjD+1FghccXnJPB3lTu+zR+nTLlD+A8jwpwj+Ye?= =?us-ascii?Q?C48ZzOBVjBDgQeJ+e9CZCv8BgiWNzp6YpeDdATamT1VHAyCp4DJge0hNvGDq?= =?us-ascii?Q?yDNdHDGNOTDOXCHu8floIwZPK0FrtlTMBWl7drG7YTBrdGQYFb973lGqzXrM?= =?us-ascii?Q?HMeFqBgTj3zd/fiDa2BCYEl19E+wcVO9AGDJL93qET863rEZvP2DvrIH21fF?= =?us-ascii?Q?Z2k4w/YMt5fT56qebHzBxe5u2FplQ6m+zcmPpu1y8jGfGGUiSxZ7FWiWQl9q?= =?us-ascii?Q?cW7wTVxH9sIxr+PFdAncraJq?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 64297251-90f0-4d9c-71a3-08d92bf7c723 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:09:04.9393 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ZLAIQ2FiZO17txtxL25Or8OTzPsAjXPCGm2QnBJ/bzF6/NG4Jlrbik6vy1eONfTR8kWGyAueFq2yO5/L0F6cYXnn98GzF0yL0I9HWNpgqKs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6790 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.20.124; envelope-from=vsementsov@virtuozzo.com; helo=EUR05-DB8-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" We now have bs-independent connection API, which consists of four functions: nbd_client_connection_new() nbd_client_connection_release() nbd_co_establish_connection() nbd_co_establish_connection_cancel() Move them to a separate file together with NBDClientConnection structure which becomes private to the new API. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- include/block/nbd.h | 11 ++ block/nbd.c | 206 ----------------------------------- nbd/client-connection.c | 231 ++++++++++++++++++++++++++++++++++++++++ nbd/meson.build | 1 + 4 files changed, 243 insertions(+), 206 deletions(-) create mode 100644 nbd/client-connection.c diff --git a/include/block/nbd.h b/include/block/nbd.h index 5f34d23bb0..57381be76f 100644 --- a/include/block/nbd.h +++ b/include/block/nbd.h @@ -406,4 +406,15 @@ const char *nbd_info_lookup(uint16_t info); const char *nbd_cmd_lookup(uint16_t info); const char *nbd_err_lookup(int err); =20 +/* nbd/client-connection.c */ +typedef struct NBDClientConnection NBDClientConnection; + +NBDClientConnection *nbd_client_connection_new(const SocketAddress *saddr); +void nbd_client_connection_release(NBDClientConnection *conn); + +QIOChannelSocket *coroutine_fn +nbd_co_establish_connection(NBDClientConnection *conn, Error **errp); + +void coroutine_fn nbd_co_establish_connection_cancel(NBDClientConnection *= conn); + #endif diff --git a/block/nbd.c b/block/nbd.c index b34957e464..26914509f1 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -66,32 +66,6 @@ typedef enum NBDClientState { NBD_CLIENT_QUIT } NBDClientState; =20 -typedef struct NBDClientConnection { - /* Initialization constants */ - SocketAddress *saddr; /* address to connect to */ - - QemuMutex mutex; - - /* - * @sioc and @err present a result of connection attempt. - * While running is true, they are used only by thread, mutex locking = is not - * needed. When thread is finished nbd_co_establish_connection steal t= hese - * pointers under mutex. - */ - QIOChannelSocket *sioc; - Error *err; - - /* All further fields are accessed only under mutex */ - bool running; /* thread is running now */ - bool detached; /* thread is detached and should cleanup the state */ - - /* - * wait_co: if non-NULL, which coroutine to wake in - * nbd_co_establish_connection() after yield() - */ - Coroutine *wait_co; -} NBDClientConnection; - typedef struct BDRVNBDState { QIOChannelSocket *sioc; /* The master data channel */ QIOChannel *ioc; /* The current I/O channel which may differ (eg TLS) = */ @@ -126,12 +100,8 @@ typedef struct BDRVNBDState { NBDClientConnection *conn; } BDRVNBDState; =20 -static void nbd_client_connection_release(NBDClientConnection *conn); static int nbd_establish_connection(BlockDriverState *bs, SocketAddress *s= addr, Error **errp); -static coroutine_fn QIOChannelSocket * -nbd_co_establish_connection(NBDClientConnection *conn, Error **errp); -static void nbd_co_establish_connection_cancel(NBDClientConnection *conn); static int nbd_client_handshake(BlockDriverState *bs, Error **errp); static void nbd_yank(void *opaque); =20 @@ -344,182 +314,6 @@ static bool nbd_client_connecting_wait(BDRVNBDState *= s) return qatomic_load_acquire(&s->state) =3D=3D NBD_CLIENT_CONNECTING_WA= IT; } =20 -static NBDClientConnection * -nbd_client_connection_new(const SocketAddress *saddr) -{ - NBDClientConnection *conn =3D g_new(NBDClientConnection, 1); - - *conn =3D (NBDClientConnection) { - .saddr =3D QAPI_CLONE(SocketAddress, saddr), - }; - - qemu_mutex_init(&conn->mutex); - - return conn; -} - -static void nbd_client_connection_do_free(NBDClientConnection *conn) -{ - if (conn->sioc) { - qio_channel_close(QIO_CHANNEL(conn->sioc), NULL); - object_unref(OBJECT(conn->sioc)); - } - error_free(conn->err); - qapi_free_SocketAddress(conn->saddr); - g_free(conn); -} - -static void *connect_thread_func(void *opaque) -{ - NBDClientConnection *conn =3D opaque; - int ret; - bool do_free; - - conn->sioc =3D qio_channel_socket_new(); - - error_free(conn->err); - conn->err =3D NULL; - ret =3D qio_channel_socket_connect_sync(conn->sioc, conn->saddr, &conn= ->err); - if (ret < 0) { - object_unref(OBJECT(conn->sioc)); - conn->sioc =3D NULL; - } - - qio_channel_set_delay(QIO_CHANNEL(conn->sioc), false); - - qemu_mutex_lock(&conn->mutex); - - assert(conn->running); - conn->running =3D false; - if (conn->wait_co) { - aio_co_wake(conn->wait_co); - conn->wait_co =3D NULL; - } - do_free =3D conn->detached; - - qemu_mutex_unlock(&conn->mutex); - - if (do_free) { - nbd_client_connection_do_free(conn); - } - - return NULL; -} - -static void nbd_client_connection_release(NBDClientConnection *conn) -{ - bool do_free =3D false; - - if (!conn) { - return; - } - - qemu_mutex_lock(&conn->mutex); - assert(!conn->detached); - if (conn->running) { - conn->detached =3D true; - } else { - do_free =3D true; - } - qemu_mutex_unlock(&conn->mutex); - - if (do_free) { - nbd_client_connection_do_free(conn); - } -} - -/* - * Get a new connection in context of @conn: - * if the thread is running, wait for completion - * if the thread already succeeded in the background, and user didn't ge= t the - * result, just return it now - * otherwise the thread is not running, so start a thread and wait for - * completion - */ -static coroutine_fn QIOChannelSocket * -nbd_co_establish_connection(NBDClientConnection *conn, Error **errp) -{ - QIOChannelSocket *sioc =3D NULL; - QemuThread thread; - - qemu_mutex_lock(&conn->mutex); - - /* - * Don't call nbd_co_establish_connection() in several coroutines in - * parallel. Only one call at once is supported. - */ - assert(!conn->wait_co); - - if (!conn->running) { - if (conn->sioc) { - /* Previous attempt finally succeeded in background */ - sioc =3D g_steal_pointer(&conn->sioc); - qemu_mutex_unlock(&conn->mutex); - - return sioc; - } - - conn->running =3D true; - error_free(conn->err); - conn->err =3D NULL; - qemu_thread_create(&thread, "nbd-connect", - connect_thread_func, conn, QEMU_THREAD_DETACHED= ); - } - - conn->wait_co =3D qemu_coroutine_self(); - - qemu_mutex_unlock(&conn->mutex); - - /* - * We are going to wait for connect-thread finish, but - * nbd_co_establish_connection_cancel() can interrupt. - */ - qemu_coroutine_yield(); - - qemu_mutex_lock(&conn->mutex); - - if (conn->running) { - /* - * The connection attempt was canceled and the coroutine resumed - * before the connection thread finished its job. Report the - * attempt as failed, but leave the connection thread running, - * to reuse it for the next connection attempt. - */ - error_setg(errp, "Connection attempt cancelled by other operation"= ); - } else { - error_propagate(errp, conn->err); - conn->err =3D NULL; - sioc =3D g_steal_pointer(&conn->sioc); - } - - qemu_mutex_unlock(&conn->mutex); - - return sioc; -} - -/* - * nbd_co_establish_connection_cancel - * Cancel nbd_co_establish_connection() asynchronously. - * - * Note that this function neither directly stops the thread nor closes the - * socket, but rather safely wakes nbd_co_establish_connection() which is - * sleeping in yield() - */ -static void nbd_co_establish_connection_cancel(NBDClientConnection *conn) -{ - Coroutine *wait_co; - - qemu_mutex_lock(&conn->mutex); - - wait_co =3D g_steal_pointer(&conn->wait_co); - - qemu_mutex_unlock(&conn->mutex); - - if (wait_co) { - aio_co_wake(wait_co); - } -} - static coroutine_fn void nbd_reconnect_attempt(BDRVNBDState *s) { int ret; diff --git a/nbd/client-connection.c b/nbd/client-connection.c new file mode 100644 index 0000000000..31a129bf11 --- /dev/null +++ b/nbd/client-connection.c @@ -0,0 +1,231 @@ +/* + * QEMU Block driver for NBD + * + * Copyright (c) 2021 Virtuozzo International GmbH. + * + * Permission is hereby granted, free of charge, to any person obtaining a= copy + * of this software and associated documentation files (the "Software"), t= o deal + * in the Software without restriction, including without limitation the r= ights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or se= ll + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included= in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS= OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OT= HER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING= FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS = IN + * THE SOFTWARE. + */ + +#include "qemu/osdep.h" + +#include "block/nbd.h" + +#include "qapi/qapi-visit-sockets.h" +#include "qapi/clone-visitor.h" + +struct NBDClientConnection { + /* Initialization constants */ + SocketAddress *saddr; /* address to connect to */ + + QemuMutex mutex; + + /* + * @sioc and @err present a result of connection attempt. + * While running is true, they are used only by thread, mutex locking = is not + * needed. When thread is finished nbd_co_establish_connection steal t= hese + * pointers under mutex. + */ + QIOChannelSocket *sioc; + Error *err; + + /* All further fields are accessed only under mutex */ + bool running; /* thread is running now */ + bool detached; /* thread is detached and should cleanup the state */ + + /* + * wait_co: if non-NULL, which coroutine to wake in + * nbd_co_establish_connection() after yield() + */ + Coroutine *wait_co; +}; + +NBDClientConnection *nbd_client_connection_new(const SocketAddress *saddr) +{ + NBDClientConnection *conn =3D g_new(NBDClientConnection, 1); + + *conn =3D (NBDClientConnection) { + .saddr =3D QAPI_CLONE(SocketAddress, saddr), + }; + + qemu_mutex_init(&conn->mutex); + + return conn; +} + +static void nbd_client_connection_do_free(NBDClientConnection *conn) +{ + if (conn->sioc) { + qio_channel_close(QIO_CHANNEL(conn->sioc), NULL); + object_unref(OBJECT(conn->sioc)); + } + error_free(conn->err); + qapi_free_SocketAddress(conn->saddr); + g_free(conn); +} + +static void *connect_thread_func(void *opaque) +{ + NBDClientConnection *conn =3D opaque; + int ret; + bool do_free; + + conn->sioc =3D qio_channel_socket_new(); + + error_free(conn->err); + conn->err =3D NULL; + ret =3D qio_channel_socket_connect_sync(conn->sioc, conn->saddr, &conn= ->err); + if (ret < 0) { + object_unref(OBJECT(conn->sioc)); + conn->sioc =3D NULL; + } + + qio_channel_set_delay(QIO_CHANNEL(conn->sioc), false); + + qemu_mutex_lock(&conn->mutex); + + assert(conn->running); + conn->running =3D false; + if (conn->wait_co) { + aio_co_wake(conn->wait_co); + conn->wait_co =3D NULL; + } + do_free =3D conn->detached; + + qemu_mutex_unlock(&conn->mutex); + + if (do_free) { + nbd_client_connection_do_free(conn); + } + + return NULL; +} + +void nbd_client_connection_release(NBDClientConnection *conn) +{ + bool do_free =3D false; + + if (!conn) { + return; + } + + qemu_mutex_lock(&conn->mutex); + assert(!conn->detached); + if (conn->running) { + conn->detached =3D true; + } else { + do_free =3D true; + } + qemu_mutex_unlock(&conn->mutex); + + if (do_free) { + nbd_client_connection_do_free(conn); + } +} + +/* + * Get a new connection in context of @conn: + * if the thread is running, wait for completion + * if the thread already succeeded in the background, and user didn't ge= t the + * result, just return it now + * otherwise the thread is not running, so start a thread and wait for + * completion + */ +QIOChannelSocket *coroutine_fn +nbd_co_establish_connection(NBDClientConnection *conn, Error **errp) +{ + QIOChannelSocket *sioc =3D NULL; + QemuThread thread; + + qemu_mutex_lock(&conn->mutex); + + /* + * Don't call nbd_co_establish_connection() in several coroutines in + * parallel. Only one call at once is supported. + */ + assert(!conn->wait_co); + + if (!conn->running) { + if (conn->sioc) { + /* Previous attempt finally succeeded in background */ + sioc =3D g_steal_pointer(&conn->sioc); + qemu_mutex_unlock(&conn->mutex); + + return sioc; + } + + conn->running =3D true; + error_free(conn->err); + conn->err =3D NULL; + qemu_thread_create(&thread, "nbd-connect", + connect_thread_func, conn, QEMU_THREAD_DETACHED= ); + } + + conn->wait_co =3D qemu_coroutine_self(); + + qemu_mutex_unlock(&conn->mutex); + + /* + * We are going to wait for connect-thread finish, but + * nbd_co_establish_connection_cancel() can interrupt. + */ + qemu_coroutine_yield(); + + qemu_mutex_lock(&conn->mutex); + + if (conn->running) { + /* + * The connection attempt was canceled and the coroutine resumed + * before the connection thread finished its job. Report the + * attempt as failed, but leave the connection thread running, + * to reuse it for the next connection attempt. + */ + error_setg(errp, "Connection attempt cancelled by other operation"= ); + } else { + error_propagate(errp, conn->err); + conn->err =3D NULL; + sioc =3D g_steal_pointer(&conn->sioc); + } + + qemu_mutex_unlock(&conn->mutex); + + return sioc; +} + +/* + * nbd_co_establish_connection_cancel + * Cancel nbd_co_establish_connection() asynchronously. + * + * Note that this function neither directly stops the thread nor closes the + * socket, but rather safely wakes nbd_co_establish_connection() which is + * sleeping in yield() + */ +void nbd_co_establish_connection_cancel(NBDClientConnection *conn) +{ + Coroutine *wait_co; + + qemu_mutex_lock(&conn->mutex); + + wait_co =3D g_steal_pointer(&conn->wait_co); + + qemu_mutex_unlock(&conn->mutex); + + if (wait_co) { + aio_co_wake(wait_co); + } +} diff --git a/nbd/meson.build b/nbd/meson.build index 2baaa36948..b26d70565e 100644 --- a/nbd/meson.build +++ b/nbd/meson.build @@ -1,5 +1,6 @@ block_ss.add(files( 'client.c', + 'client-connection.c', 'common.c', )) blockdev_ss.add(files( --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623320817; cv=pass; d=zohomail.com; s=zohoarc; b=gAIAqKXmUQZB7SIB1Ga87xYmhl54kgj/iBE1jFcPn5fZCYGBQNfsGOYdEtZ75f1MXFt49rt3qa9AnCq0dC55rwRPFN7EY3kXa5dJh+JJook4NKDDP7VjOpEfh6coKyLaHMasJHo+oLOZT9vHgzCWlduiuMg+RPOVMup/8QOHer8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623320817; h=Content-Type:Content-Transfer-Encoding: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=xhlYVTRDWP0iJSwzop4mhjRG6J8aSWLEZfS0I6YcjHU=; b=kI41lju/g+5xNStcYIbe1lxGkf+CJLTzWx9Fky0Jk3NCI+ABCn9zP7Cmo8WcD1BRi+tlYo6Bcbhh34Gy4M0QgbayZ1s1XMAx3gCFXzCw3X8liDs2aa0IFfnT5R0sCnLh11nQRDOJLLhWifrajHSDZMywARMXe7UZXRiGjy7HtCU= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623320817423898.4133232919837; Thu, 10 Jun 2021 03:26:57 -0700 (PDT) Received: from localhost ([::1]:34388 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrHtn-0001Wq-Tl for importer2@patchew.org; Thu, 10 Jun 2021 06:26:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45134) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHck-0005gS-6I; Thu, 10 Jun 2021 06:09:18 -0400 Received: from mail-db8eur05on2124.outbound.protection.outlook.com ([40.107.20.124]:62941 helo=EUR05-DB8-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHce-00058S-Uh; Thu, 10 Jun 2021 06:09:17 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6790.eurprd08.prod.outlook.com (2603:10a6:20b:397::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.20; Thu, 10 Jun 2021 10:09:06 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:09:06 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:09:05 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=A+3lCEkO/kciejhWSa8lWQlcoZQXMoeEyHLPgfNhpcjlZs4lJhz3JhXlh7bwdNWuUNUXJH9gczhLFewItuJgH25K7E2pOvfqhuI7ZmHAGqS9m8yO5r9SiLA2H1Q9RqZ7XxUjQRkwXhxsRsOlooq4N53gvnX1g3YX4FpoSshX6QDq/vaEw8Fzl8pBC0u8o7fhgG10alPNcg2QRUzsz75iBIPie5lpd6XOhwDVj02sdQfHtsOm9Zv3FovvYLwrZnKp8JmHv4Zad/FNWAPOTcCJfuxKr5ACPbP8SscaEUfk28vYt4QxmG2i7sD1CVEUu68fBgpEl5eAH1VQZ2ZP10fU0g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xhlYVTRDWP0iJSwzop4mhjRG6J8aSWLEZfS0I6YcjHU=; b=LC5v3Wg2V3efb3sy0giKTNq6s/9yDPN924LV7nlP9MUuRJSlJJlIuIYnaqU2WRDJP8WH/X2XSNeKYAW8aj4/y1qArK8C5rjz86Gk5eGHO+kboi6iN6QboaHJtaFRE/38Y5mdh9stdod0czAE0q1IeLt+jWEJI2tIG6jAVGaFDKMgSWRpRAIgX5b0/YfTWwWa9jEifkjLl0UfjALA+mDqzhALRrsHIpIWVi42plRmApbknaaFnw5W0Q9oy8QWfwpfhAhLEgGqXMFXPUDiSgaKsKhEyxcqumnrfelEG2st/m3NUEqE6CoJ4iMb6lz5FBsMQCDpneWJ5CXW2Wt+H21YrA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xhlYVTRDWP0iJSwzop4mhjRG6J8aSWLEZfS0I6YcjHU=; b=iyQUC8nkcG00eYkPLAt20O4sHLijLIREjgv13vch/S7uYCpVE12RhVDen/3pZx4TJWUYp9BYYIgJuBwMoorvjXgpuwiIevS7iLX6dH3OOgHLl7JUo4oWWSdDJw60+twXzZPfPVbqYAz+bKWfil4DHkf5WzX6ei/hVHddGDWsjzE= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com Subject: [PATCH v4 18/32] nbd/client-connection: use QEMU_LOCK_GUARD Date: Thu, 10 Jun 2021 13:07:48 +0300 Message-Id: <20210610100802.5888-19-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 36d560ed-4932-4ecd-dce0-08d92bf7c7d6 X-MS-TrafficTypeDiagnostic: AS8PR08MB6790: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1468; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KSQYgBzdBCOnLNxIHkqRNIgzBG4hlpwiBvhMWgBju39Ea30BIRdjXv5ArPaeBcNNj9plB+j9zKEHk+A9VXJ2JJvLB+Q34RC75trieD06HJ7CaraNY6xEnm11lVsFN0nNCRczafe6ISS7bLQYo66/3dCoav3xWohfq8EjCxiiiZnfHFiGT5SafJLZESIqD62iUwVzg/sT44ioHsw1YYymN8s0KaICRcR+qCuQ7NWCfIyvTAvL092XB/w6VIMP6MNxKEYB466ruq/2vIZ6AxpunLPBNemwPPM5Jf9yVd7r7QOmEb6WpKN6MmHN5ArXbrm72+eCJi9nbZYDqZuQitGJ0dbMDj4G6BAri2gh5npamg7UyGSf45vKyNM0Po7CcvZ6EMCiBMOq1224YVsRFbNJMPXV3I0osHeqEpZuV85AGU628rKLqIqSD8sUs6sQnMGFZyfOVqXMaoprx/XxKXIidln36Hti+8/hHD+LhZBnimH31Eo9V9IrwIMSlEjnBX8UyI0AVaZsjyo6S+bW4AYuKH/6PF+bnNNHhmq2ylgoN3J+k5tTZbI5k0k/UmSyCnEQhm0hpEdg3CZMLvM5CWj36OAbeTVklkPfwCbzpQst6JQYSWKwnik0deHSUAVPNLgoxuzkULVlLdHs99T4r8THqq/nTokPE4faBE3ElcLPGKTgG+vrPlDGprG5HPdCQYNH X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(346002)(136003)(366004)(396003)(39840400004)(478600001)(16526019)(6486002)(6512007)(83380400001)(6916009)(66556008)(6506007)(66946007)(26005)(66476007)(5660300002)(2616005)(8936002)(38350700002)(36756003)(86362001)(52116002)(8676002)(316002)(186003)(6666004)(4326008)(956004)(2906002)(38100700002)(1076003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?upXCGEfa06nFhZ5KLRbje7QO29V63PQdzVc3yrZAsw95O3XdzSFUCUabu/z1?= =?us-ascii?Q?qv6pL+Y9sLJlfe2kM3eZ6vw6MhNuiw8RXqUhAYu3ekEC3h3O5OXI2pDgiMrL?= =?us-ascii?Q?owSlmS7U3Fg+UXAW/Xbg97+NptEa39BsTIvZYE1b2T/mzE54DogcboKDXNnv?= =?us-ascii?Q?WYeqfevlFvhnz/GwtN8HT1fEqu+cLALdpFRiAMEDaRQ9piv7o3Hrl2S1dRt3?= =?us-ascii?Q?N8nYj9DnAPiyHW6xs0jlnUK+u+ZMfwsE4M2xe4UaFKZe9intcBEeKqFx6TTg?= =?us-ascii?Q?VanVuwSOz0KasxVMPkL534C9+MTylcaKAUDfLWk0fOyzHygbtx6bKbmHTI2r?= =?us-ascii?Q?wKJTbyq/J3Dwl007/y0HohKTb6lGXv38/r2wJDg0qNpz1Pg8SEYlJvwiTIzN?= =?us-ascii?Q?lumD6m3nE1KD67fwPIgv4E3vrGPfmJDi02jMnMMaBFB3QlZ7ivKBU9MeuEi6?= =?us-ascii?Q?uzu8tZW/PlVYTj5+AaffIntNs9l6+NDRPf2s9zB/2aNBQiAnZ7xhhczz5uxk?= =?us-ascii?Q?9Gok2yO+YjJNUVgUPi2M/ZPlXd3M3OCXZ3+GTVcrQDqaMK9UuC1H4Sk6OUb5?= =?us-ascii?Q?zpcVLmUF9Y04G6lOeoeHkhH2AYB6N8u9ebb/mDg8O4yNiAXdz79BG7pv0Jbf?= =?us-ascii?Q?Odz/WYalpU1ruNNhOj17r7PZdH2WBaWtS1LQlISYVfqCsVJ3LaHTndWXRDwY?= =?us-ascii?Q?4nKFZNxUfsuLlE+5clielysr0lguOxCnXvgfG9bWNusVkh6HZl/j6Dy8pcH+?= =?us-ascii?Q?xS9J2NSHXFlMgwMjCFNYrfuN3+Tmdf8JiGqoMgDOx1GuejCds46LbHnqttyV?= =?us-ascii?Q?uMwm3lmvkRNV1Hgj2iNjY/TTdyv9KhhfxcCqiy2U80T2DpItEecWEq6mN5Hq?= =?us-ascii?Q?3r+Iw6Xvht4F8O8uJOHtP17nWy/9FpByuUFDsxZXCaW1p/TRuAfMHK2w5UUF?= =?us-ascii?Q?WAtDUl2s5RzYUmUhIMGHH4rADU6T2iBVcfIZfIcueKyVTDROs3FM0RcZWaw+?= =?us-ascii?Q?qckhlbarHjg5qfAc5FtaEhOq9lFyXonknn0hqKPQwf0VtmiuFn1tdURLbKl4?= =?us-ascii?Q?S8TVlli/4GAINOINUohReA6MvNCJwEZfZzbfYrOotSFpWjCMP3Z57EuDSBEb?= =?us-ascii?Q?DbczXwabjcljD0bhwoj8GqN44KZCePqphOy8LcSKhuqMO8AsPkEOu7AtQF47?= =?us-ascii?Q?96GWy1GWPI3pscSRfI0nBHOqAqBPYgrxl7qnCHpdTGvp6BLYYuZn0jNSYkLX?= =?us-ascii?Q?SiG//1V5KRDCV+k+nux8rsb6FA4wiXL/kl8TtisQqWMcDuqHWHptgAVaraUz?= =?us-ascii?Q?Xd+T2fQeT81gUquGPpNYOeSY?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 36d560ed-4932-4ecd-dce0-08d92bf7c7d6 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:09:06.0802 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: EBEQYIGfdXt5WzVVEcfwfOciBmFyz89iIOXgWRdt+BrLBmfkE+EXbib3oKziHNTSZ+sJQUyOOwQDaGQeYBK+qxxJUBMYCEWfxfg0BSBefNE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6790 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.20.124; envelope-from=vsementsov@virtuozzo.com; helo=EUR05-DB8-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" We don't update connect_thread_func() to use QEMU_LOCK_GUARD, as it will get more complex critical sections logic in further commit, where QEMU_LOCK_GUARD doesn't help. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- nbd/client-connection.c | 99 +++++++++++++++++++---------------------- 1 file changed, 45 insertions(+), 54 deletions(-) diff --git a/nbd/client-connection.c b/nbd/client-connection.c index 31a129bf11..a18842a5a6 100644 --- a/nbd/client-connection.c +++ b/nbd/client-connection.c @@ -124,14 +124,14 @@ void nbd_client_connection_release(NBDClientConnectio= n *conn) return; } =20 - qemu_mutex_lock(&conn->mutex); - assert(!conn->detached); - if (conn->running) { - conn->detached =3D true; - } else { - do_free =3D true; + WITH_QEMU_LOCK_GUARD(&conn->mutex) { + assert(!conn->detached); + if (conn->running) { + conn->detached =3D true; + } else { + do_free =3D true; + } } - qemu_mutex_unlock(&conn->mutex); =20 if (do_free) { nbd_client_connection_do_free(conn); @@ -149,62 +149,55 @@ void nbd_client_connection_release(NBDClientConnectio= n *conn) QIOChannelSocket *coroutine_fn nbd_co_establish_connection(NBDClientConnection *conn, Error **errp) { - QIOChannelSocket *sioc =3D NULL; QemuThread thread; =20 - qemu_mutex_lock(&conn->mutex); - - /* - * Don't call nbd_co_establish_connection() in several coroutines in - * parallel. Only one call at once is supported. - */ - assert(!conn->wait_co); - - if (!conn->running) { - if (conn->sioc) { - /* Previous attempt finally succeeded in background */ - sioc =3D g_steal_pointer(&conn->sioc); - qemu_mutex_unlock(&conn->mutex); - - return sioc; + WITH_QEMU_LOCK_GUARD(&conn->mutex) { + /* + * Don't call nbd_co_establish_connection() in several coroutines = in + * parallel. Only one call at once is supported. + */ + assert(!conn->wait_co); + + if (!conn->running) { + if (conn->sioc) { + /* Previous attempt finally succeeded in background */ + return g_steal_pointer(&conn->sioc); + } + + conn->running =3D true; + error_free(conn->err); + conn->err =3D NULL; + qemu_thread_create(&thread, "nbd-connect", + connect_thread_func, conn, QEMU_THREAD_DETA= CHED); } =20 - conn->running =3D true; - error_free(conn->err); - conn->err =3D NULL; - qemu_thread_create(&thread, "nbd-connect", - connect_thread_func, conn, QEMU_THREAD_DETACHED= ); + conn->wait_co =3D qemu_coroutine_self(); } =20 - conn->wait_co =3D qemu_coroutine_self(); - - qemu_mutex_unlock(&conn->mutex); - /* * We are going to wait for connect-thread finish, but * nbd_co_establish_connection_cancel() can interrupt. */ qemu_coroutine_yield(); =20 - qemu_mutex_lock(&conn->mutex); - - if (conn->running) { - /* - * The connection attempt was canceled and the coroutine resumed - * before the connection thread finished its job. Report the - * attempt as failed, but leave the connection thread running, - * to reuse it for the next connection attempt. - */ - error_setg(errp, "Connection attempt cancelled by other operation"= ); - } else { - error_propagate(errp, conn->err); - conn->err =3D NULL; - sioc =3D g_steal_pointer(&conn->sioc); + WITH_QEMU_LOCK_GUARD(&conn->mutex) { + if (conn->running) { + /* + * The connection attempt was canceled and the coroutine resum= ed + * before the connection thread finished its job. Report the + * attempt as failed, but leave the connection thread running, + * to reuse it for the next connection attempt. + */ + error_setg(errp, "Connection attempt cancelled by other operat= ion"); + return NULL; + } else { + error_propagate(errp, conn->err); + conn->err =3D NULL; + return g_steal_pointer(&conn->sioc); + } } =20 - qemu_mutex_unlock(&conn->mutex); - - return sioc; + abort(); /* unreachable */ } =20 /* @@ -219,11 +212,9 @@ void nbd_co_establish_connection_cancel(NBDClientConne= ction *conn) { Coroutine *wait_co; =20 - qemu_mutex_lock(&conn->mutex); - - wait_co =3D g_steal_pointer(&conn->wait_co); - - qemu_mutex_unlock(&conn->mutex); + WITH_QEMU_LOCK_GUARD(&conn->mutex) { + wait_co =3D g_steal_pointer(&conn->wait_co); + } =20 if (wait_co) { aio_co_wake(wait_co); --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623320979; cv=pass; d=zohomail.com; s=zohoarc; b=hCko8cxqafvriIfab967ZYIKrrXcuVjg8puM9I7VLR6jL+mWhCvQtDtuZMkgb7QsF7j0iIsPchFb4lmd1XhqB3j/GE+NFAig/eFRxusoq6RNw0NvliLHFkWeIZZBQLjP58zJyOfsZ1VP1CwoBVQD7mrKObFkWkkbNpwRiCp5B7I= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623320979; h=Content-Type:Content-Transfer-Encoding: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=4fhfM43iw6BTPHi7Tif3aqur71TzbVFuh2Lm0gaX2Nc=; b=GZkiHD7tCmcsd0v3vG3LSaSEO8wYpwekHGyi1fVYQH/pxe6kT+rROS7Yhj/RYkeAluaypzzrRnu1uet/8kW2MuSHxvbqGkcbp6+fq8EbgG6peQCcoATBDkEmOb6Z2Kl/cxrP2NMojm1VzFhVdnj4pE7MF6QGXYsd7PgPKvqLkS0= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623320979869900.4201307299228; Thu, 10 Jun 2021 03:29:39 -0700 (PDT) Received: from localhost ([::1]:42872 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrHwQ-0007QJ-Kp for importer2@patchew.org; Thu, 10 Jun 2021 06:29:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45140) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcl-0005ia-10; Thu, 10 Jun 2021 06:09:19 -0400 Received: from mail-eopbgr80109.outbound.protection.outlook.com ([40.107.8.109]:1541 helo=EUR04-VI1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHci-0005Ca-8G; Thu, 10 Jun 2021 06:09:18 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6790.eurprd08.prod.outlook.com (2603:10a6:20b:397::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.20; Thu, 10 Jun 2021 10:09:07 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:09:07 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:09:06 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZGu8ULw0B8Cbt/bcRPcpRYi6SBSZdqWWNxWLoOLsZZ2Orn2kGDuWa4UGB1z86Y68H80Y1CQj82bnV6XblYe6xti6eXu8Lglll+uudhwEtMMtAMy/KgBkSwtWskXxO1eqnSlP3z6tzpjYBZKhcVYj2YV765FxbyYaP62FWgofsUCqKNl/96hHfgCz3T2TRuAuOyAnihAbyCMQrtFbxP2K2+ZKgJaBaZ5Th0J2RcL1/+bUi/rYU0u/hbl8v2vostX16kpduCGjRX+B80TXhXmnxC7fBx148pm92OZzEQoyQMEwIeg95FgyoLHpqUxR2aVbdpp5GAxC4SpXJPFk+WhX1w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4fhfM43iw6BTPHi7Tif3aqur71TzbVFuh2Lm0gaX2Nc=; b=B1ZBixKE4BVu/zWMqJx6/cWqjm7bgBlJsOSDq3Dg5hCdoIHltDzj6cWTh21WYGMUdTtUQTQbyIB2jDgSu2Rx0jw64oNY0dBmk8lUd7adPgORzht35cQzCuK24FbMVybiD4RXHphSpfkyi7CW1+lumJPvXJDC/pBzKKnjBzSZU9iGLcBanwt/6b2PxlygoV92EdhDsDGzr5VV9sWRLmmWKKHMcW9CfpRLG1SbsSmZiRudZWv62i8NP1TqQeKTAxOl/2hOQKwIlbf28jSPYYhiW1PTX7ojro40VKPm+GtolFVQDE8/Y5QFrtGjWG2hJ91dbBrRshPx6mTifWrYupQfYg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4fhfM43iw6BTPHi7Tif3aqur71TzbVFuh2Lm0gaX2Nc=; b=Td707UuSTViC1ADk0oc6Q+06yIg+X4dwdGl1dBhsiuGF4p1DJW7deEwnBwq2RjuIm5GVWrP/vm4UAMlww/PzkMFikOk5IK+jsHpEhGSa5Cyp42i14papxmsd4H4TkKw0c33b+GMITP5X5hloQccwvf2PivEpiAqMlPBHcbz326M= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com Subject: [PATCH v4 19/32] nbd/client-connection: add possibility of negotiation Date: Thu, 10 Jun 2021 13:07:49 +0300 Message-Id: <20210610100802.5888-20-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4bae7bc5-b737-4cbd-6221-08d92bf7c88e X-MS-TrafficTypeDiagnostic: AS8PR08MB6790: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:628; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3ChiO7G9aZwvaIVUqHMTtFDXujARoa3UYa2GeGQtQgNmRyIG0ERf4rVutmCkxCzQ9yH5YsjLr4w3hlW1G0ceA9k9J7XBQgvkX077I2CuHqGRlTL93ARubtIudLFmdOwGFAVrwKl/B2gxFbmfEkMLvO6PLxaGGLA4FofpPtbh1YmrsVR+VYoGZCu02sMOHgfPwNmjbV1yTwvxJF9Dk7MQoHycGtZPF5U2mJML77//lajdZgcRieoCDQ1oyRdU78o82OXtDRUn9nY4IO5Dg/FALTE0J5dSaVacXgGex2RY+2dL8JpFrtxwe2xEwYJC+2tBoxpZkJMFa/nBBQTXqz5W9jOLLVEg5aCZ5WH7Kb8wFQrFtnd2yJ1TIcuZK4dDTqEU2U3piZKt+ubt0aA4eg+UNTIBRpM1LtQRsy9BZjjXqiYbg1MZTCuOpTVhQuDpttaieLfu0W7ZcFSGz3+9XY8vR7BuGd9mR6cywe8FX5DlyljtGM/tZrmy3U3CF+hhKfImvLQdH71TpOncEcRGwOUHljzdS0+sb3YryDZeplwvIqeM4ykXDFELWv0Z2vddw1oMCp0fmqwINPTOXJQCp0jTc1L8IQbW3VNlLvCvkH+fZiqPm7Uxem5EB+Ka2VIzHZiP+e0yz2mjLuZAoRzDeH2tdvBecXCL+BuBbys3A5L6eRZNksxYcIyw71HJ0lnX3wSy X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(346002)(136003)(366004)(396003)(39840400004)(478600001)(16526019)(6486002)(6512007)(83380400001)(6916009)(66556008)(6506007)(66946007)(26005)(66476007)(5660300002)(2616005)(8936002)(38350700002)(36756003)(86362001)(52116002)(8676002)(316002)(186003)(6666004)(4326008)(956004)(2906002)(38100700002)(1076003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?NI+OAoM04WqJNjN2SQ7KF81X+j2TcJW9ELFiar8QxsUPMJ7RlJoLAzHlf+z7?= =?us-ascii?Q?bkU2nq+4XMhfrsRSPva4Dn5/kNabRSMcOxi+1gpLGPHKdXw/N7sq55zHr83Q?= =?us-ascii?Q?aK8aLMcw8Mzh2urQq9+/Z51MAHQ3ilGUTYoVgsXgYTIcOZzB0mJMTJFb2pq1?= =?us-ascii?Q?KZ5SyFms1yo8KMLCu+MkmVhqAox7d1xcJxZhYXxvR14rjdZrkfz6BGZvlYrZ?= =?us-ascii?Q?3UnamlItwOAP9eyNcA2F4rqBhXlPXD679lEbMy7v4A3Smqza40w09yatHb8X?= =?us-ascii?Q?kq/s3dVnboKMHnEUJjFz7hYOFZDP3I4SLyUirNUwPOPI94rQ/qxKN70mGyp/?= =?us-ascii?Q?V5fCKks6bbQ/HPjZAiFdfnN5QUYMrJ1ZmHKUfSotFmSPgJCmh5GbcwW4fKDH?= =?us-ascii?Q?mxJLN7lX8eFrbdNG4UNZXFD2DdIrrJ+bTzJ1PXNTqFm3FlyN9u/WGpuGLtcS?= =?us-ascii?Q?CR/XeMCwiJOspGvcwtQH0x/bdmE4kW9eFFf6MGXWIRl09ws9tqkNE3GzLX0T?= =?us-ascii?Q?GJ3o3lDGnJ9c2kAow2DUtE35ZIWbEWpKN+oNCHPOi+kn2wl/fLHVvA5WG9/z?= =?us-ascii?Q?P9G/ovkqPsiDVwQZtTWe1KBk/jGNBD3dgvGJJulfEhkyJs57dXcXOsd2qJHc?= =?us-ascii?Q?53egGXL2RjogEsjE4FwAKCYqDyukX5M9ko3BqeeXM0z+0Sj7spdSHZKO46E9?= =?us-ascii?Q?oA0TXOLPZYIG7E60RolqBLaUPWsd967RNieR8vJiPkB5D/lOmUD83WUbtlw5?= =?us-ascii?Q?UKTHwxAktceXI+br5AVTYWDun6qoGNXlYhkCh9b3P5F85OiwnJ+Ig1ML43wv?= =?us-ascii?Q?scsT/PlUQdRvdiY0KAkfHmzyJvDvndn8NejNekMgiK7gSnUSck7TQV9TcyFM?= =?us-ascii?Q?O5jzdDAad1d9UkdXrDmadlm4i3rTU3jDci7Q2PWLpTuVpKt5n3xpeq5Zl3xN?= =?us-ascii?Q?pSnl0HyW2Zpv/qbz/QBbDqGsHM1MRGYGFqvGqYx+hhcGLGABzDdkAHI3T230?= =?us-ascii?Q?P11+WnFCtO0D1W+8dpYNx4QuYffIXBurWiNcUwsBEEBIq5ckWK30mBYt7l6n?= =?us-ascii?Q?eNj14kb/psW6I6nMVMCKbUXgzq21pifYK8TAiNg+YGpRWUi9eYaLm/1AHBHY?= =?us-ascii?Q?inDkG+CGjUniTJMEdwLluyp0AFt15JaFVdwzcZ7iVuGX9qrbhcbvlmXxdvwI?= =?us-ascii?Q?EQvsVIrSJA/iW0XyTdpHt63L1YziU618+CMz/fpZVALCYk7A4Cb2O63QK4Kg?= =?us-ascii?Q?trBKGoGO7HdvmmGrqtUkRMGGkvfwFbdz3q/uZSTi58+M3FrPOwl8BgGn6sFh?= =?us-ascii?Q?67zEKYIK/uRH/QYu0GHZIlFD?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4bae7bc5-b737-4cbd-6221-08d92bf7c88e X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:09:07.3417 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: +jugZww52BWxTwBs6nFOWVGVPanid7GYAPHE/63NpHdX74OycQf5948Pzwq9ABEE762shj1jS0ybQPgFLG4rrFV+9tGpwo3buBiudTDRdE8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6790 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.109; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-VI1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Add arguments and logic to support nbd negotiation in the same thread after successful connection. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- include/block/nbd.h | 9 +++- block/nbd.c | 4 +- nbd/client-connection.c | 105 ++++++++++++++++++++++++++++++++++++++-- 3 files changed, 109 insertions(+), 9 deletions(-) diff --git a/include/block/nbd.h b/include/block/nbd.h index 57381be76f..5d86e6a393 100644 --- a/include/block/nbd.h +++ b/include/block/nbd.h @@ -409,11 +409,16 @@ const char *nbd_err_lookup(int err); /* nbd/client-connection.c */ typedef struct NBDClientConnection NBDClientConnection; =20 -NBDClientConnection *nbd_client_connection_new(const SocketAddress *saddr); +NBDClientConnection *nbd_client_connection_new(const SocketAddress *saddr, + bool do_negotiation, + const char *export_name, + const char *x_dirty_bitmap, + QCryptoTLSCreds *tlscreds); void nbd_client_connection_release(NBDClientConnection *conn); =20 QIOChannelSocket *coroutine_fn -nbd_co_establish_connection(NBDClientConnection *conn, Error **errp); +nbd_co_establish_connection(NBDClientConnection *conn, NBDExportInfo *info, + QIOChannel **ioc, Error **errp); =20 void coroutine_fn nbd_co_establish_connection_cancel(NBDClientConnection *= conn); =20 diff --git a/block/nbd.c b/block/nbd.c index 26914509f1..df9d241313 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -357,7 +357,7 @@ static coroutine_fn void nbd_reconnect_attempt(BDRVNBDS= tate *s) s->ioc =3D NULL; } =20 - s->sioc =3D nbd_co_establish_connection(s->conn, NULL); + s->sioc =3D nbd_co_establish_connection(s->conn, NULL, NULL, NULL); if (!s->sioc) { ret =3D -ECONNREFUSED; goto out; @@ -2035,7 +2035,7 @@ static int nbd_open(BlockDriverState *bs, QDict *opti= ons, int flags, goto fail; } =20 - s->conn =3D nbd_client_connection_new(s->saddr); + s->conn =3D nbd_client_connection_new(s->saddr, false, NULL, NULL, NUL= L); =20 /* * establish TCP connection, return error if it fails diff --git a/nbd/client-connection.c b/nbd/client-connection.c index a18842a5a6..4301099f1b 100644 --- a/nbd/client-connection.c +++ b/nbd/client-connection.c @@ -30,8 +30,11 @@ #include "qapi/clone-visitor.h" =20 struct NBDClientConnection { - /* Initialization constants */ + /* Initialization constants, never change */ SocketAddress *saddr; /* address to connect to */ + QCryptoTLSCreds *tlscreds; + NBDExportInfo initial_info; + bool do_negotiation; =20 QemuMutex mutex; =20 @@ -41,7 +44,9 @@ struct NBDClientConnection { * needed. When thread is finished nbd_co_establish_connection steal t= hese * pointers under mutex. */ + NBDExportInfo updated_info; QIOChannelSocket *sioc; + QIOChannel *ioc; Error *err; =20 /* All further fields are accessed only under mutex */ @@ -55,12 +60,25 @@ struct NBDClientConnection { Coroutine *wait_co; }; =20 -NBDClientConnection *nbd_client_connection_new(const SocketAddress *saddr) +NBDClientConnection *nbd_client_connection_new(const SocketAddress *saddr, + bool do_negotiation, + const char *export_name, + const char *x_dirty_bitmap, + QCryptoTLSCreds *tlscreds) { NBDClientConnection *conn =3D g_new(NBDClientConnection, 1); =20 + object_ref(OBJECT(tlscreds)); *conn =3D (NBDClientConnection) { .saddr =3D QAPI_CLONE(SocketAddress, saddr), + .tlscreds =3D tlscreds, + .do_negotiation =3D do_negotiation, + + .initial_info.request_sizes =3D true, + .initial_info.structured_reply =3D true, + .initial_info.base_allocation =3D true, + .initial_info.x_dirty_bitmap =3D g_strdup(x_dirty_bitmap), + .initial_info.name =3D g_strdup(export_name ?: "") }; =20 qemu_mutex_init(&conn->mutex); @@ -76,9 +94,61 @@ static void nbd_client_connection_do_free(NBDClientConne= ction *conn) } error_free(conn->err); qapi_free_SocketAddress(conn->saddr); + object_unref(OBJECT(conn->tlscreds)); + g_free(conn->initial_info.x_dirty_bitmap); + g_free(conn->initial_info.name); g_free(conn); } =20 +/* + * Connect to @addr and do NBD negotiation if @info is not null. If @tlscr= eds + * are given @outioc is returned. @outioc is provided only on success. Th= e call + * may be cancelled from other thread by simply qio_channel_shutdown(sioc). + */ +static int nbd_connect(QIOChannelSocket *sioc, SocketAddress *addr, + NBDExportInfo *info, QCryptoTLSCreds *tlscreds, + QIOChannel **outioc, Error **errp) +{ + int ret; + + if (outioc) { + *outioc =3D NULL; + } + + ret =3D qio_channel_socket_connect_sync(sioc, addr, errp); + if (ret < 0) { + return ret; + } + + qio_channel_set_delay(QIO_CHANNEL(sioc), false); + + if (!info) { + return 0; + } + + ret =3D nbd_receive_negotiate(NULL, QIO_CHANNEL(sioc), tlscreds, + tlscreds ? addr->u.inet.host : NULL, + outioc, info, errp); + if (ret < 0) { + /* + * nbd_receive_negotiate() may setup tls ioc and return it even on + * failure path. In this case we should use it instead of original + * channel. + */ + if (outioc && *outioc) { + qio_channel_close(QIO_CHANNEL(*outioc), NULL); + object_unref(OBJECT(*outioc)); + *outioc =3D NULL; + } else { + qio_channel_close(QIO_CHANNEL(sioc), NULL); + } + + return ret; + } + + return 0; +} + static void *connect_thread_func(void *opaque) { NBDClientConnection *conn =3D opaque; @@ -89,13 +159,18 @@ static void *connect_thread_func(void *opaque) =20 error_free(conn->err); conn->err =3D NULL; - ret =3D qio_channel_socket_connect_sync(conn->sioc, conn->saddr, &conn= ->err); + conn->updated_info =3D conn->initial_info; + + ret =3D nbd_connect(conn->sioc, conn->saddr, + conn->do_negotiation ? &conn->updated_info : NULL, + conn->tlscreds, &conn->ioc, &conn->err); if (ret < 0) { object_unref(OBJECT(conn->sioc)); conn->sioc =3D NULL; } =20 - qio_channel_set_delay(QIO_CHANNEL(conn->sioc), false); + conn->updated_info.x_dirty_bitmap =3D NULL; + conn->updated_info.name =3D NULL; =20 qemu_mutex_lock(&conn->mutex); =20 @@ -145,12 +220,24 @@ void nbd_client_connection_release(NBDClientConnectio= n *conn) * result, just return it now * otherwise the thread is not running, so start a thread and wait for * completion + * + * If @info is not NULL, also do nbd-negotiation after successful connecti= on. + * In this case info is used only as out parameter, and is fully initializ= ed by + * nbd_co_establish_connection(). "IN" fields of info as well as related o= nly to + * nbd_receive_export_list() would be zero (see description of NBDExportIn= fo in + * include/block/nbd.h). */ QIOChannelSocket *coroutine_fn -nbd_co_establish_connection(NBDClientConnection *conn, Error **errp) +nbd_co_establish_connection(NBDClientConnection *conn, NBDExportInfo *info, + QIOChannel **ioc, Error **errp) { QemuThread thread; =20 + if (conn->do_negotiation) { + assert(info); + assert(ioc); + } + WITH_QEMU_LOCK_GUARD(&conn->mutex) { /* * Don't call nbd_co_establish_connection() in several coroutines = in @@ -161,6 +248,10 @@ nbd_co_establish_connection(NBDClientConnection *conn,= Error **errp) if (!conn->running) { if (conn->sioc) { /* Previous attempt finally succeeded in background */ + if (conn->do_negotiation) { + *ioc =3D g_steal_pointer(&conn->ioc); + memcpy(info, &conn->updated_info, sizeof(*info)); + } return g_steal_pointer(&conn->sioc); } =20 @@ -193,6 +284,10 @@ nbd_co_establish_connection(NBDClientConnection *conn,= Error **errp) } else { error_propagate(errp, conn->err); conn->err =3D NULL; + if (conn->sioc && conn->do_negotiation) { + *ioc =3D g_steal_pointer(&conn->ioc); + memcpy(info, &conn->updated_info, sizeof(*info)); + } return g_steal_pointer(&conn->sioc); } } --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623320388; cv=pass; d=zohomail.com; s=zohoarc; b=gtEsGL+7YOjQSDcDsZY6E2Juc2CJRgAB8sPCjJID+AigVp0nhPINuFbxfW0GDgpEup/3/ReyG56xnRHQgJ6+pBLYobGQZDCsVtS51bESWyRaTuGGlvP67EXnMojacOvcvzMdgk9hrmdh6M5RMyhZyV30E0N/iikXrs0fqLGpZkw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623320388; h=Content-Type:Content-Transfer-Encoding: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=rw0bCr+9Q6G2GI7VVFwIKU27oWe3ZWJ04ySwl7wl4Xs=; b=RPn0FQczbTr4FWyTDLEyw1jG6cqFgazEhHSRXyiKFMhMNJPITOQE0AGx3TS+evjT/IVkBA9TKkCn+a+BlxMjeALlEp4HAaolWNz2OIDbW30TkavM1TZE3lq2UVRhd5LF00OYVjpIOBoGvddmq3Zz659zxQnSDXznWpBj14UDyfg= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623320388360926.097324802163; Thu, 10 Jun 2021 03:19:48 -0700 (PDT) Received: from localhost ([::1]:41910 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrHmt-00048g-9f for importer2@patchew.org; Thu, 10 Jun 2021 06:19:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45168) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcm-0005lG-ON; Thu, 10 Jun 2021 06:09:20 -0400 Received: from mail-db8eur05on2124.outbound.protection.outlook.com ([40.107.20.124]:62941 helo=EUR05-DB8-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHck-00058S-QQ; Thu, 10 Jun 2021 06:09:20 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6790.eurprd08.prod.outlook.com (2603:10a6:20b:397::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.20; Thu, 10 Jun 2021 10:09:08 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:09:08 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:09:07 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=H0ljRkeOMuL2wN82OR3TZrKJPn4wV5o9IWy8txOGbUvaMxvavqN2VoHhnnDe81W2hjiJ6W0ccpqLS6W1Hi1CSatG186QWZX+HNgMQOljkpdt/LdNJAabGbOseFTsprJUR2PAydtQcHkktI5DufHNtdB3L/YEfYqkdCu0lCBackNUvG/49PrbFU5J9diCvwhIbuWr053H5L2mvTSL6w8LxpYxiQfPqPCWjlp43vOlogDntcbM3kvmeF3hMz+OvvyNSq3hbD7t0etJyjC7y7yfgRrMzCfdQwfv2XtNWwTY2MShJZZYm+Jkiyz2dRkKKaMueuDNgu49aU3byyxv9tK7Ag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rw0bCr+9Q6G2GI7VVFwIKU27oWe3ZWJ04ySwl7wl4Xs=; b=L8m2r8tLXTgUOHgtWUAAaHQRHPDvco2aeVqhyH5/gYeydoiUV+M56f3yxP+DgH6ZtJvE+64PRPN1KeNOWVDr27GwcQcX+Yz5RBz2agMan97CTF7723hg7ryFtsUKf0A7xnhA27Z1bvAjRwjmMgM1slFFrI4/ZOVHqWt2hXL4fYOhs175nTeq0tJf+c+TV30D6ajwDEV9h3soOgfMYkqluefABeD2Wee27qtewm3xEScyzDcJ3C40qCeUY8rEB0zfm8W8kBLQeMMzY+V3tenfr/IuwT7g9zcPbIMxN/g5Elqjtpjp1M9fJNWiUsWl3nw0gLOFg2dcALUoHsStK/NAYw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rw0bCr+9Q6G2GI7VVFwIKU27oWe3ZWJ04ySwl7wl4Xs=; b=k6Ty34qJkIK+382ZcDfO1OQTng4ZuIQTUJHDKkQnT6pbNz8yvDriqmYxvSv9Ab6vmYjPi7FmnsUATjCXWxI2N/7hJtVNT2iu7JC0ZJpwZGNpGmXKD/K3Y/5TOibPcQNcmSWEF0FBhkYnFA41NhLDVrvPG2R64t55dGDsCtFt+kI= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com Subject: [PATCH v4 20/32] nbd/client-connection: implement connection retry Date: Thu, 10 Jun 2021 13:07:50 +0300 Message-Id: <20210610100802.5888-21-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 79977c08-c2e0-41ba-edd2-08d92bf7c943 X-MS-TrafficTypeDiagnostic: AS8PR08MB6790: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6108; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: S8C/P9JWDWbUN4+49jMtX3vw11UFxeIEMzMTpXyc8D993ha704CmACCcG2UY3nizEFHFiUQKKUS9ywpK+/p2p7yBl0AJ4PlMhb9DvywsOOI2f3363XELsXUJi9S4seeH6zEoUtSdAJq2/zSI5CxLRDBIX72qjXcBFxzmfp9PquS7br/7rZuC9S9X6lbxmrJ4uJZn2+VvQWQirXFjz7YW/gcrgZcpLIK30MRUf3li33+UW6+tXe0NTA3YBdawa3YQZJB/DAtOPRoe7CDd2O4VTKASeSRhYIZlpYG7AOT6EMIRn9TuCB0eYNRUZpcvnlF80LrIER4ZV+J4iu+5rXCEJDRak+Ycq/kIyoCPHtPvkCcUWy1xNXO5s4VZXmyP7rwk308/1/W4ItnxlUxX3y1Q8SWLrmnMsfmu3jxtq4Rdp2anDO6ZRrBDVAfLgRaSsx/dHk4Sye+j6qQ/yIKgY++vqE1kYroFLNzjyrh7P+VNy110irpYS2wEoFtqSAqZACiv031Sc70vrReAkWZz9go0RUUU2p+aXu78FQJYLlDMcvArCAOza0/+N9vw80IKVTlGDpVi0udUh/UujoWugs+mGB5qlwwA6GSXR2Wetl4ZOqBuD9O7TIwWXQ04bEAbAptwXzhAznnxb69Im0qXIjXqY4eySiZ2jYwGkDGSVqDFj8y9gBIPcizA9PA6jnMvvjxV X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(346002)(136003)(366004)(396003)(39840400004)(478600001)(16526019)(6486002)(6512007)(83380400001)(6916009)(66556008)(6506007)(66946007)(26005)(66476007)(5660300002)(2616005)(8936002)(38350700002)(36756003)(86362001)(52116002)(8676002)(316002)(186003)(6666004)(4326008)(956004)(2906002)(38100700002)(1076003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?TJlCkxWRMoLBZCHGdXhvYJkzYC/ckDr0ciNVGxF0+AY8+v/Ij+w1d8HR7XPS?= =?us-ascii?Q?8sF8uP+g+28RirbEi0hiAfq8YPwOsfpMG7NSFVh6AkUREMj6v5G0lCgikBNr?= =?us-ascii?Q?JSGh8y5UmBQz2oBmC2VuxWnVfibr2pKa6ihLa5hdzYlrdcfrMarzi+26zdez?= =?us-ascii?Q?8VbAMFvtF9Kjn3MPzkiWNzoc0ieau32wlssT80hseRWlrzANu3P0FeAAOdaT?= =?us-ascii?Q?ZJklZCNvjcrZAYDlxwJR2dB5XQKfsldInjZ3RfcspFkIe3aKv/2NHL6p2ugi?= =?us-ascii?Q?NTI+xw5n7JCCb8u2mJlVccDEvgEUAgoq+xf87HwCOX9XWGGl4zo8pMjOXd9n?= =?us-ascii?Q?KwRsFDRwLa/o1f4+BbGaglYwiqmEny3YkFjqh5/mem1TMOA+Z8kPgQPDXsac?= =?us-ascii?Q?Nfy5V4ZvXZH7bd36nlTCwKcOwe9y18Q2pV49FQHHRQzTpj4ydFxM/jbfwzSH?= =?us-ascii?Q?NOmqrnDynCIsDP3eX35MUIXaLmjwVb362JoRG7Qa8MO/Fv8aVOLD4xrgfIM0?= =?us-ascii?Q?OPooUCiagfQhvM19x9bl3vRWuP1be7PaJaxlhKzQ3NVREAOXGuHKE0Lmf/WC?= =?us-ascii?Q?yZXvJ7+kWrxaguUmPVwPpZGofTI4OhdoebGH5ikMwBToDZkwEWPFjonRRKrr?= =?us-ascii?Q?ChlDrMzxdqY9BiL3vIWOZAlOrRd4t1PUjGhr3t3Sq+5umrwHE0F4Fzp1YD7a?= =?us-ascii?Q?1huBfhNQ0Xixwb5UQGK0O8SCgUlc/DwuKLEmkniSEiJHIl53iseUVEMx1waF?= =?us-ascii?Q?kujkpTamFYP5z4rZs4/5yIb9p5gTK0XobCwnYciTz36ooGjTVH507IXLG98c?= =?us-ascii?Q?FBaplw8zGqiiJTrlxFPjRDUBCm+JDovl42Rl6p/g1lnXWpvb7i+bGzZFzbOB?= =?us-ascii?Q?2A2OOHYG0NZ5VqKpiH7XjRzE/IsTA54GidIVNxWe10N4GKwrAWGMcAe2Y6rR?= =?us-ascii?Q?VKhM6aNidC/EAETkECJtKZLirL33VJePVmkcDU575mlxPWTQbQpWO2GF2SDm?= =?us-ascii?Q?gFrAgxKeazwACzU+Cjv+tsmY7p2mEoFs0rCHXN6FVnRim3+9ujE42Wb6FmCS?= =?us-ascii?Q?D+izScaB7BmCIr22A7WJo+cp5Qjycww4q3ocLt7XXaSy/3bxU0+lVadx4opD?= =?us-ascii?Q?W5hd36RAo/2zOrKn/wsuCvLFhXmwvUlpWQbb2XNnkzLDY+W50/DAAE4KyFUo?= =?us-ascii?Q?rRilZbhHo3ZrFaYUjV8KGbfLS1l7U4wpz+J+mcw+Cpy7mlETamb5hh7oQ3r1?= =?us-ascii?Q?bPOmEvYKTzrQfIEy43QJtTUbySX2Ny2zKNpu+K17hZ1mOcR+7r5RZeMSgmol?= =?us-ascii?Q?eMMq/yehsbbY064yyk/Se6Bs?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 79977c08-c2e0-41ba-edd2-08d92bf7c943 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:09:08.4618 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 2hvxs0ivTceyQx01pmmz6QFSzh2e8xicIR/0sy6G8yRWjdwUTLxWwbJ5Hdd5F/AYMoDMLR3Rwb/Ev1vXSUeSLH3UCAvrTsM4Q1P2FvrGG7E= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6790 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.20.124; envelope-from=vsementsov@virtuozzo.com; helo=EUR05-DB8-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Add an option for a thread to retry connection until succeeds. We'll use nbd/client-connection both for reconnect and for initial connection in nbd_open(), so we need a possibility to use same NBDClientConnection instance to connect once in nbd_open() and then use retry semantics for reconnect. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- include/block/nbd.h | 2 ++ nbd/client-connection.c | 56 +++++++++++++++++++++++++++++++---------- 2 files changed, 45 insertions(+), 13 deletions(-) diff --git a/include/block/nbd.h b/include/block/nbd.h index 5d86e6a393..5bb54d831c 100644 --- a/include/block/nbd.h +++ b/include/block/nbd.h @@ -409,6 +409,8 @@ const char *nbd_err_lookup(int err); /* nbd/client-connection.c */ typedef struct NBDClientConnection NBDClientConnection; =20 +void nbd_client_connection_enable_retry(NBDClientConnection *conn); + NBDClientConnection *nbd_client_connection_new(const SocketAddress *saddr, bool do_negotiation, const char *export_name, diff --git a/nbd/client-connection.c b/nbd/client-connection.c index 4301099f1b..76346481ba 100644 --- a/nbd/client-connection.c +++ b/nbd/client-connection.c @@ -35,6 +35,7 @@ struct NBDClientConnection { QCryptoTLSCreds *tlscreds; NBDExportInfo initial_info; bool do_negotiation; + bool do_retry; =20 QemuMutex mutex; =20 @@ -60,6 +61,15 @@ struct NBDClientConnection { Coroutine *wait_co; }; =20 +/* + * The function isn't protected by any mutex, only call it when the client + * connection attempt has not yet started. + */ +void nbd_client_connection_enable_retry(NBDClientConnection *conn) +{ + conn->do_retry =3D true; +} + NBDClientConnection *nbd_client_connection_new(const SocketAddress *saddr, bool do_negotiation, const char *export_name, @@ -154,23 +164,43 @@ static void *connect_thread_func(void *opaque) NBDClientConnection *conn =3D opaque; int ret; bool do_free; + uint64_t timeout =3D 1; + uint64_t max_timeout =3D 16; =20 - conn->sioc =3D qio_channel_socket_new(); + while (true) { + conn->sioc =3D qio_channel_socket_new(); =20 - error_free(conn->err); - conn->err =3D NULL; - conn->updated_info =3D conn->initial_info; + error_free(conn->err); + conn->err =3D NULL; + conn->updated_info =3D conn->initial_info; =20 - ret =3D nbd_connect(conn->sioc, conn->saddr, - conn->do_negotiation ? &conn->updated_info : NULL, - conn->tlscreds, &conn->ioc, &conn->err); - if (ret < 0) { - object_unref(OBJECT(conn->sioc)); - conn->sioc =3D NULL; - } + ret =3D nbd_connect(conn->sioc, conn->saddr, + conn->do_negotiation ? &conn->updated_info : NUL= L, + conn->tlscreds, &conn->ioc, &conn->err); + + /* + * conn->updated_info will finally be returned to the user. Clear = the + * pointers to our internally allocated strings, which are IN para= meters + * of nbd_receive_negotiate() and therefore nbd_connect(). Caller + * shoudn't be interested in these fields. + */ + conn->updated_info.x_dirty_bitmap =3D NULL; + conn->updated_info.name =3D NULL; + + if (ret < 0) { + object_unref(OBJECT(conn->sioc)); + conn->sioc =3D NULL; + if (conn->do_retry) { + sleep(timeout); + if (timeout < max_timeout) { + timeout *=3D 2; + } + continue; + } + } =20 - conn->updated_info.x_dirty_bitmap =3D NULL; - conn->updated_info.name =3D NULL; + break; + } =20 qemu_mutex_lock(&conn->mutex); =20 --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623319938; cv=pass; d=zohomail.com; s=zohoarc; b=jIA/C9zfGDd+MIbksYH+VPtZj19rD1RFkQ8gQKXC+Jwvcqvf1CkvP4vR9CsEsoca+uObdbI9xmfpPTof/gnGjUmqGTJSRd/QFd4F3vgaJFhGIk9IdTQIsWL8Eof2+t4HUK7cfSIwgIHNLuBQQFIqnVnx1hj4Ni2xmcpmVD0YnD8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623319938; h=Content-Type:Content-Transfer-Encoding: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=fMl2+NCdwQZqbQ9Q/cMTfQ4GXwKU5TwfkTx+1MYtlEM=; b=SILUnUC6o+cELQjDJ6ctf3fSDy/QA6zTmGwqIHQeILJNV60q3hbBdeL9d9b1g2Vq6jbLewMjQrebDWn6m6Rh1CUwFtXD8KY+ZNVYT8AIRAwc7s3GxYs++zAmlS0pkhX9dp3tv0HlgSUEjEqEz6lfgiMSzkzb4cmzD5R/AXlW1UY= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623319938487410.7217929545445; Thu, 10 Jun 2021 03:12:18 -0700 (PDT) Received: from localhost ([::1]:43786 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrHfd-00038v-6a for importer2@patchew.org; Thu, 10 Jun 2021 06:12:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45178) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcn-0005oj-KF; Thu, 10 Jun 2021 06:09:21 -0400 Received: from mail-eopbgr80109.outbound.protection.outlook.com ([40.107.8.109]:1541 helo=EUR04-VI1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcl-0005Ca-N9; Thu, 10 Jun 2021 06:09:21 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6790.eurprd08.prod.outlook.com (2603:10a6:20b:397::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.20; Thu, 10 Jun 2021 10:09:09 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:09:09 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:09:08 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QQIf8nXkSex12NdKxkJKnPDoCU4++PLDwONEf1MEWkCERT5fL1M5Q2BpiHgUpkMqtAERfc3XjSE1GAtLvq0FcpEYlr5Q1Xgcyxtk4wSRc0SqCy0BRrJfhD5M6aT5ltce3NmYVGGA/s7xgYGq+Y0jI4P6tidDSiyTbLhrivjOQut7JHU6lMZGrd4VEF2EeVQ4/Xx/LIzXzZSPEe92o+60rxFbOHBhvwwUAMPRLA2MIfde8NSwGEabia+Ikos7pN3c6JkAbWBtpIwHwWC4BGJRKdVhyg5Nug3HCLR5dZBGb0Pa+SEquv7FUUGjF6X5U6/5fjefN93aZ8J6S2J3GwpC7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fMl2+NCdwQZqbQ9Q/cMTfQ4GXwKU5TwfkTx+1MYtlEM=; b=MJCDvWNllyE/L0bmBESQsY/rTmsbnUa6jcGT6LsMUCYn4uK9c4ow5fNwy9yKkrLnG9MZr3cILuudTOATQ63KlpRCmf1r3Mv0aFlRC3opAsAPtZ0JmOnbAz1CP/pWMOdh8DwuUM2RY+/vpeVsYLvFzQEaXMyv1X3XUXE11f0P9/XVTqw4HeA/6C2AhhBN8EXPF6l8yJWxmUvNHM9KDdL3jRxIN4Vo+JebZzW2Zi8OfBZp4MrCoXWgbEFAnsVmK5aXJM8s4CIPodJ9B5Vw5/Z06L4utsLhPSUVBoUJ/sIhm1Y1BCIhDuyYuBI38JOepSBJt2tkXwsfWjwAdgoa4h/SmQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fMl2+NCdwQZqbQ9Q/cMTfQ4GXwKU5TwfkTx+1MYtlEM=; b=f4iR7dfudQzJbcm+nzxn4/u3RTHUohELsod6HN7uFSVvoST7QBF8pST/fWnYKwcnUw1klpUz9wnqPla75nSrt4MmzBHb7XMEHE2+fD2Y1+f402758Awa1GAsOt0XoJb6bPxYmyh5bqBFYBB7owKE+7E6tpMcsJbHX6d9BnfNNRc= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com Subject: [PATCH v4 21/32] nbd/client-connection: shutdown connection on release Date: Thu, 10 Jun 2021 13:07:51 +0300 Message-Id: <20210610100802.5888-22-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3e7a479e-8d48-41d1-121b-08d92bf7ca01 X-MS-TrafficTypeDiagnostic: AS8PR08MB6790: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2331; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: mOXCtsLCvj8QtzdvBmmafDawXAJomx7Cbv7R9aNvHT9vy482ZpckPv34b/eZzq6Qn1r0vVi2hU0eLR8lFzJfeqpyBj09SKt4TlCynleiA0Xy9jeB/e2Yr7F33NqV6bzYBev96Y9xjgDjZbWZK1qkLotzND6uNo8Z0ObqIUKjiTQtRbdeMlFj2U/5m7BLhiRAAlCGJ5xMh4092AMoztFbGZH7/9rxEiQB+Hqk9XM9uyhglIx2b/7b0V5cikrzhFAOTDEGudCxn8cjJx6c22aAmFaxH0ODSDaV3VvA/AvLq4IAn7x1l+n6W8VNHr6dMDiQM8Lto45be8w7Mr9SyMZjPhjj/7kOX6xVw579hPFgm/suxbqa35upYE3Sj1Y1nbep7zfy8Ehg5RJ+KELd5AHZfjgFBVC5Al3PNAr9UaXyXFPQMnZnZLw2Ls2cwbEyp0ttaZKacHdSc6CIs1mQKAshE614OVSlWTxId/ZLi8t+kGaZFQVedaBlX5xOMUoFdcJ3GezwZ1QgRzuKWV4/RmXZoGEPSQE58M5mG3A6DX/hPntvXpWbLYmi2aRBu5hgLqB3KJQfZyn0fbvCm7gFLNbFMgkP1QdFsjnPqTummg8E8uQb0FHn2dVN99VJZp0gwBUhzRnDJVWBeIGRG8ywteLO4sIVd9K4nc6dh22xjB3gmzEuv7W2PXTWqSdzY4DEiv2c X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(346002)(136003)(366004)(396003)(39840400004)(478600001)(16526019)(6486002)(6512007)(83380400001)(6916009)(66556008)(6506007)(66946007)(26005)(66476007)(5660300002)(2616005)(8936002)(38350700002)(36756003)(86362001)(52116002)(8676002)(316002)(186003)(6666004)(4326008)(956004)(2906002)(38100700002)(1076003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?kP/rJ62NaSseSnI/widZ5qWqphZasqnXkWLUfWIkFFnj9Qq96Ar+Dj8tkTgI?= =?us-ascii?Q?j24ER4iFuuoi2gVXRCqALgvYR7QuFCdbi3B3wWqKicA48HOCmNeViIi3vgnh?= =?us-ascii?Q?U9TCDSyFSfx7GVHcpqbDlzBHycUDAD5+GP9fIf6XP9pUIvB2QTWFo6h8KC6x?= =?us-ascii?Q?jVH/rQInTytgMd1G7KAkgXKYvGiHZB1Czo10RkrmfMLJXK3Pi6WxCtC2sn6S?= =?us-ascii?Q?+TXj1DBkC1a3WskJr4ighUcM9uoZmzktV5RxPh+xU3RK5RW+pB/7El4cTjg3?= =?us-ascii?Q?y428BJEd191SSczNl2Qz7+hvCDtmv/4kPKwS2KAT4/aRI0tQJ6B2ht73Lcjz?= =?us-ascii?Q?ZJ2OqobCcJ+BmolasVz5hFIaYrORVZFbMfkj7YrdDdJ2cVFvoAJMGf3QO0gU?= =?us-ascii?Q?vzQVHBlC8qL7QnBQFiRRCwDNV2oy43g7dFxbc+kFoZxGh2KtZTECG6KxKWnS?= =?us-ascii?Q?LmxU3UUhZ8snU5yVuW3JQnGbn5u4RIIAVBYYEHmebeDLQ3iIIdwgEZf4vRN3?= =?us-ascii?Q?pKwwWWD2Mzt+2z2N5X7DiFRX/QFy9zyDXNWgNH32hF1oSts/33wFQCkEWEVp?= =?us-ascii?Q?73j+YBKontgRvMf1L5N6kC+y5nclL9E8iTNCKLy3Cmk67O2vOcTIEOb7Gd1T?= =?us-ascii?Q?VsK/dlWzoeWhX+oGOb8tlAkn1Gjijay/ZOxJXlalzI7nNY6macnxeR6OrfRx?= =?us-ascii?Q?aAUhXpt8qlvXg4TRzdTKzBxwuP1Mxu8MflClHFsYQpP52AbkHtoJIHoWUSPX?= =?us-ascii?Q?kGRQM3VmNNhVExbDLDIT9sk1hOb80/CDCa0el8uPV5aIBVL8caJ7rRlGK9fq?= =?us-ascii?Q?beoLzxM+yn+lj916ZODRyv1CE/KhCEVXCOfbyyxX4CWC8dDQIe7BUGXngUQc?= =?us-ascii?Q?0GeMUyhznoBm0JhrjI3Vlsv/Zk0qzAeR1qHKIO8G8SVbUTkhppW/PiVTw9o5?= =?us-ascii?Q?4tzsD4RKMJMLXxC2r/drt8jGi+HUkyNiBig3iF5rh7rR1Gba+Bd9H3f4jDv2?= =?us-ascii?Q?P+K3N0DWSzZeib1b3zgb0iaesFLRCt97n9Gr9lFbJhowj/rVckVUPszThdAs?= =?us-ascii?Q?QKWCMF4u1m95fz+L5GNnNYjSb0aA+SRx44OoFjxC9g36qK99aYo5mFVIXJqW?= =?us-ascii?Q?7+4FjD2gjtuSZJPtS+r+RTUfP+PgN5ZU1lo/UvePm3HfbELgxY9ru7WY6noo?= =?us-ascii?Q?zJMxDTwD6wM684ShkB09b5B2b8/IC8XA309T1HpQbhItxICGMJ4Cre80Zsrl?= =?us-ascii?Q?TKHEaP0CefWSp3N15XtdmgL6iX/nbkUZwj5ajjJ3RLfKsa100807tse1lkxc?= =?us-ascii?Q?Zg8L8+QWCrTIK7EucMBc36rc?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3e7a479e-8d48-41d1-121b-08d92bf7ca01 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:09:09.7033 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: lWAtw7zvzGtJnqtsHFYYjuxWk1bPI2oNR/8FmLNYUDvZcl0piBjOfsONrEl6nNNwPbYHOGKMsm45ysu1AxvB+20FezptLl5cEKLxJEZBRZU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6790 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.109; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-VI1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Now, when a thread can do negotiation and retry, it may run relatively long. We need a mechanism to stop it, when the user is not interested in a result any more. So, on nbd_client_connection_release() let's shutdown the socket, and do not retry connection if thread is detached. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- nbd/client-connection.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/nbd/client-connection.c b/nbd/client-connection.c index 76346481ba..80c19f4eff 100644 --- a/nbd/client-connection.c +++ b/nbd/client-connection.c @@ -167,9 +167,13 @@ static void *connect_thread_func(void *opaque) uint64_t timeout =3D 1; uint64_t max_timeout =3D 16; =20 - while (true) { + qemu_mutex_lock(&conn->mutex); + while (!conn->detached) { + assert(!conn->sioc); conn->sioc =3D qio_channel_socket_new(); =20 + qemu_mutex_unlock(&conn->mutex); + error_free(conn->err); conn->err =3D NULL; conn->updated_info =3D conn->initial_info; @@ -187,14 +191,20 @@ static void *connect_thread_func(void *opaque) conn->updated_info.x_dirty_bitmap =3D NULL; conn->updated_info.name =3D NULL; =20 + qemu_mutex_lock(&conn->mutex); + if (ret < 0) { object_unref(OBJECT(conn->sioc)); conn->sioc =3D NULL; - if (conn->do_retry) { + if (conn->do_retry && !conn->detached) { + qemu_mutex_unlock(&conn->mutex); + sleep(timeout); if (timeout < max_timeout) { timeout *=3D 2; } + + qemu_mutex_lock(&conn->mutex); continue; } } @@ -202,7 +212,7 @@ static void *connect_thread_func(void *opaque) break; } =20 - qemu_mutex_lock(&conn->mutex); + /* mutex is locked */ =20 assert(conn->running); conn->running =3D false; @@ -236,6 +246,10 @@ void nbd_client_connection_release(NBDClientConnection= *conn) } else { do_free =3D true; } + if (conn->sioc) { + qio_channel_shutdown(QIO_CHANNEL(conn->sioc), + QIO_CHANNEL_SHUTDOWN_BOTH, NULL); + } } =20 if (do_free) { --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623321288; cv=pass; d=zohomail.com; s=zohoarc; b=UF9mQUVb0PqnlafmgSZ66NerxeLH5Cudh3cofBNyOUg0dXrCk7PcMPj+sh/JQvpGnyS52Rhny3NTv2CFYB5E8RDM4S5s/taf7f1wtcOvpLFCrxXBe2qlQcA2+4KLwLIcnGmO7+WWYbLUz97yGJc5UYe0yGQNozCN0B7a3OkowKo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623321288; h=Content-Type:Content-Transfer-Encoding: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=Fz6SRuCgfgNVB/05skU5ckNzthy314XN27DPCVtzVZg=; b=QqryT4t6BaRTE1EAhCes8rf89fg9/AgufpBk9EMbD+qxemLaOzjtbqNoX6YZTmCr/nZyX0jGFxtr5xTXCKuKNMrrs8SELZDhC1F4JlewOJygquy6qljdErNz5/Wsdri1MMJlOFFLkTtJ7NJyPPL3RMKAZjZ3w+fq3lngwVMHTbE= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 162332128832373.35645530263184; Thu, 10 Jun 2021 03:34:48 -0700 (PDT) Received: from localhost ([::1]:57874 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrI1P-0000qA-2W for importer2@patchew.org; Thu, 10 Jun 2021 06:34:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45238) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcq-0005yo-Q7; Thu, 10 Jun 2021 06:09:24 -0400 Received: from mail-db8eur05on2124.outbound.protection.outlook.com ([40.107.20.124]:62941 helo=EUR05-DB8-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcn-00058S-D8; Thu, 10 Jun 2021 06:09:24 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6790.eurprd08.prod.outlook.com (2603:10a6:20b:397::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.20; Thu, 10 Jun 2021 10:09:10 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:09:10 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:09:10 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Snu0Y2qZNIAIXvn5BclRNcbbuxxKZonoAbLlXu8N9ayhpz/ljYOCXdTwvoTTG94/wMXreaPOJIOftxu7sNXqBU870tiUa2NMdB63bfXgYQBen+LBmTgeeWl1HBPGj2LVN5RpvLlkpBowmylQ5ksQwFYoJsDLJyTrDwjNflXpypgxpeD9mmsGcKqeBij28ZyKvagVdZC54XxTvUD9XLp7aXYSWtO7uxAiEgUuE/EEFLWwYrmKaFuzy+gunsgW8sW5mX+qbJHwuu1I7uMG+8gkBAtzNy4zfBVgBJIJNi1wWKZUVBWHnRhUXK79RObbXc0t5bCuAcz2294a6mR0+hL57A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Fz6SRuCgfgNVB/05skU5ckNzthy314XN27DPCVtzVZg=; b=MjaSbn+XGMxIzIRaR/4OecXLifJMobNqtdCmvj9FjRvrEQGGGMiTxCcw6WrRTXBKYYCX7RtMdvB9zhpF9DfypYQZQ8D7n4hFs9djjA35PWVzKbnnIOoI4/rt+LWUg8SsnWuIB29PQyN5d6EOP96AR5alS0dZI9XEmyZwS0oUBUNa39cBcDxmdp84Uav8WB8DRuQ1Z4njTQFcCKQCIb1IE2tR02cYVJmydArnWPZdZGV3zerVq4xSrS51A4kwmteYuj+JIEO0qPdlJgWefPlPj/TC7CRDodNFpp9rV3dQebSEuHdSsUb+BZcJsVZ8tIu3oXG+ce+aBAlODLGDJ4IdfQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Fz6SRuCgfgNVB/05skU5ckNzthy314XN27DPCVtzVZg=; b=t5HbCimYrGJOpuYmiYtMxzMoTdRQsqfZj/ylScXsbB91/vIRw2XcU4LQeB8mkE82hNKl2adbCp1F7fm5QmjUUf1iO3XrFZxp+EfYHYQPZP/+qpxVg4QmdJmw7ctsVbLFUAd5gFgBBwoe3o4EjKDOuLpe381aP806PACH8thjutg= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com, Roman Kagan Subject: [PATCH v4 22/32] block/nbd: split nbd_handle_updated_info out of nbd_client_handshake() Date: Thu, 10 Jun 2021 13:07:52 +0300 Message-Id: <20210610100802.5888-23-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c5f83693-5260-479f-25b3-08d92bf7cab1 X-MS-TrafficTypeDiagnostic: AS8PR08MB6790: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1824; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2JiDIsQRNESND225JVQ1mEznFNj7HimBJveL0G+z96neAersgQsi7ZyDP9wzSOzoDjB1iTWw6QWr+aaR39ZJW6j7+Mdp+VUK8ZGOA/ct607T+4j1h/Ti1klSB17z0vo63VlScYWYwF9B2ySp03VmeEyTsdXAq+Vtryeu3muVBKy46wc7W92PdRa+QowyY9EGoXi/YnCz2nimJXcZyjwHV2uAw/oBEO+W5SKLV9y+YdOB9Iy0u/2wdS6BD5fZwmDLwysOh2Hj5eGtYeoqoHsrLASbHS9um/1uAzs7RlHAO/9iAEOhSS3+9yMd03NmHP+1t3chekKIL/w3F/ruNYwrJM4NfSyWkQZGQXjtow526PGsQnf7IdJed8wvazDXHBD+QgALLPEGYduM8/h0DC7wuK5Vko0ieGs4aqQqnEzw12uSNi8BYzDILh5oGJfisvY6RDK72Yncd59vbOnSx5OsGAxxK8iaLzqrnwt5dWaFxFwBH2sZv5KWZHa+BQQINQK2XHwPi52hDCB5W40Azek3t4PivMdMDMgIDxs6QBj565AHJNhtVRtaw4RPlncBnKTZM4+SJRu2R7H1iW/a4w6lxQLhsxnU65eOSIPOrNlvD12BDIFgGhgp4mxIbENifQb8e+4vx687NirvLxP46B9TinHUeooj0bcHMtZ4bVArKd+Xl7CXNU5rti9rRNyOzg8I X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(346002)(136003)(366004)(396003)(39840400004)(478600001)(16526019)(6486002)(6512007)(83380400001)(6916009)(66556008)(6506007)(66946007)(26005)(66476007)(5660300002)(2616005)(8936002)(38350700002)(36756003)(86362001)(52116002)(8676002)(316002)(186003)(6666004)(4326008)(956004)(2906002)(38100700002)(1076003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?P1DAdWGP3+RM1ykBZopXk4Gj2XPt8zuYiPl2EoWQ6+iYKYJbLmLtTVR7qbbS?= =?us-ascii?Q?XNGxTMYDIpuZ9Nvp/UNPVs5iHKbS7T8Q97b1dyV4VK+YJGKB9b9c2MZ8PHWW?= =?us-ascii?Q?z2XJJ5HjnSq4+eQg+TKhUr1RhFyVOcoL1FcBV0g+1CDCbh0uwoeba1B0Quj0?= =?us-ascii?Q?7csaTyS7xqJ8h7LGc+oT+fCZuRSxgvKsJvH7wg1PqRaInVgxxoYaUw9f1BkO?= =?us-ascii?Q?d8oLgvjCt+zIdbR19sKD54CY73qa7NjXHeV2ePb8wuG7WgGOHz4agpMvfRhS?= =?us-ascii?Q?sq7rf33vHbKaTHpXwZeN8eSuXv9YKeS4CFfp/qGFPjLnBKoPIoo78QmB+0a3?= =?us-ascii?Q?C42B1VV8k2tMwfq8F+q4Xw4Bx162JBAd4PIedlG1jiA1/WpTXezeQ2melie4?= =?us-ascii?Q?dTz7wKwKZZhp0AMAY4iRQI2VnFrJfdHzeQGDCWpbUQWlCiv2TVwdNHJZmOxT?= =?us-ascii?Q?dewkxFUGVY1wwAHfSSoUSH4h166j2/DrqYjf93dbupQzyB2eAF1gWD1ZfBwu?= =?us-ascii?Q?MkRqsCkTdRH+uA3PRMaSdjfBDbSnySeIzSxfu1qto6jssUN15w6RJ7ZTIarM?= =?us-ascii?Q?jpOpbbk6cNKqLP2DwL0yuDAPOxVJ0NNK6sULTooveFOAl1HfHFHWqHyl+GOg?= =?us-ascii?Q?H9w2Tn7Ij494uVE7qmr9geWIKpD2vQA/B0QVEhlzALSpB09CHTqCYIQjDF61?= =?us-ascii?Q?51K+f0LxHP8cdtavrI7i995Ag4UtX4tilBfkD/tQaBBoJINffEuAjEndb6HC?= =?us-ascii?Q?J5Cv3I0VmQxIoEqOkLwuVNxapXQ7ZXHlp6lKP1v2vrWgZJPbFcjcJrNfU4va?= =?us-ascii?Q?gAZhWKz77Yk0XvCH4SQ42e9fpQHABlLWIY2j1/FyGLMK/BZlLW68n9+9GqCh?= =?us-ascii?Q?wm9gWgdX6teoQzJfzSCGQPNi6HLb6cqt/FcmPrlnlhlZzbhpOEGXBroSRx7m?= =?us-ascii?Q?WhZyJuNNfOvA8UkaOQNU1piSZHa5ojFbFAbwmfqMld9Qxd/XpCXQMnbdx8PR?= =?us-ascii?Q?YdGLQ9vJ5jZE/SXl9MbfxZX+QlYltA9zU7aW0YXEEtgyRqD7uyEHOZ5cDhAx?= =?us-ascii?Q?xrbaNkOSRehsGGjSDff7wKyL81h9zKLygh1+qtsORPysl5mTWXikQuxkszn5?= =?us-ascii?Q?ql492RIF8e3MdblVysj1MB0mfgoelJM0u2jKA2tb5g/YVLZ0YbZ7JJ+H78Mi?= =?us-ascii?Q?CqC6lbkKzLfomuM1yaTtFvAirin6UlsdWa+fs0EfjPH5Kn/dU3jcg7D1U7hj?= =?us-ascii?Q?kHX4UV4ygBip+NjM6XKz8M51Yk1h4r5Cv4uRphbz1ZkDerh938Xl41pRzYW8?= =?us-ascii?Q?ZGKig4EEMK/vz7jD++JNKw0M?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: c5f83693-5260-479f-25b3-08d92bf7cab1 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:09:10.8563 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: e3+ODel3CupivSl4Fvql5I0D/or+8wBaMzBqGJhrurq0AjlDtbg+x/lQ90oc1arWv/Lixd24nLgRk8Dh3xMfgXiLzzqeqsmKiBY6SnOyBJM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6790 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.20.124; envelope-from=vsementsov@virtuozzo.com; helo=EUR05-DB8-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" To be reused in the following patch. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Roman Kagan Reviewed-by: Eric Blake --- block/nbd.c | 100 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 58 insertions(+), 42 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index df9d241313..240c6e1b3d 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -314,6 +314,51 @@ static bool nbd_client_connecting_wait(BDRVNBDState *s) return qatomic_load_acquire(&s->state) =3D=3D NBD_CLIENT_CONNECTING_WA= IT; } =20 +/* + * Update @bs with information learned during a completed negotiation proc= ess. + * Return failure if the server's advertised options are incompatible with= the + * client's needs. + */ +static int nbd_handle_updated_info(BlockDriverState *bs, Error **errp) +{ + BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; + int ret; + + if (s->x_dirty_bitmap) { + if (!s->info.base_allocation) { + error_setg(errp, "requested x-dirty-bitmap %s not found", + s->x_dirty_bitmap); + return -EINVAL; + } + if (strcmp(s->x_dirty_bitmap, "qemu:allocation-depth") =3D=3D 0) { + s->alloc_depth =3D true; + } + } + + if (s->info.flags & NBD_FLAG_READ_ONLY) { + ret =3D bdrv_apply_auto_read_only(bs, "NBD export is read-only", e= rrp); + if (ret < 0) { + return ret; + } + } + + if (s->info.flags & NBD_FLAG_SEND_FUA) { + bs->supported_write_flags =3D BDRV_REQ_FUA; + bs->supported_zero_flags |=3D BDRV_REQ_FUA; + } + + if (s->info.flags & NBD_FLAG_SEND_WRITE_ZEROES) { + bs->supported_zero_flags |=3D BDRV_REQ_MAY_UNMAP; + if (s->info.flags & NBD_FLAG_SEND_FAST_ZERO) { + bs->supported_zero_flags |=3D BDRV_REQ_NO_FALLBACK; + } + } + + trace_nbd_client_handshake_success(s->export); + + return 0; +} + static coroutine_fn void nbd_reconnect_attempt(BDRVNBDState *s) { int ret; @@ -1575,49 +1620,13 @@ static int nbd_client_handshake(BlockDriverState *b= s, Error **errp) s->sioc =3D NULL; return ret; } - if (s->x_dirty_bitmap) { - if (!s->info.base_allocation) { - error_setg(errp, "requested x-dirty-bitmap %s not found", - s->x_dirty_bitmap); - ret =3D -EINVAL; - goto fail; - } - if (strcmp(s->x_dirty_bitmap, "qemu:allocation-depth") =3D=3D 0) { - s->alloc_depth =3D true; - } - } - if (s->info.flags & NBD_FLAG_READ_ONLY) { - ret =3D bdrv_apply_auto_read_only(bs, "NBD export is read-only", e= rrp); - if (ret < 0) { - goto fail; - } - } - if (s->info.flags & NBD_FLAG_SEND_FUA) { - bs->supported_write_flags =3D BDRV_REQ_FUA; - bs->supported_zero_flags |=3D BDRV_REQ_FUA; - } - if (s->info.flags & NBD_FLAG_SEND_WRITE_ZEROES) { - bs->supported_zero_flags |=3D BDRV_REQ_MAY_UNMAP; - if (s->info.flags & NBD_FLAG_SEND_FAST_ZERO) { - bs->supported_zero_flags |=3D BDRV_REQ_NO_FALLBACK; - } - } =20 - if (!s->ioc) { - s->ioc =3D QIO_CHANNEL(s->sioc); - object_ref(OBJECT(s->ioc)); - } - - trace_nbd_client_handshake_success(s->export); - - return 0; - - fail: - /* - * We have connected, but must fail for other reasons. - * Send NBD_CMD_DISC as a courtesy to the server. - */ - { + ret =3D nbd_handle_updated_info(bs, errp); + if (ret < 0) { + /* + * We have connected, but must fail for other reasons. + * Send NBD_CMD_DISC as a courtesy to the server. + */ NBDRequest request =3D { .type =3D NBD_CMD_DISC }; =20 nbd_send_request(s->ioc ?: QIO_CHANNEL(s->sioc), &request); @@ -1631,6 +1640,13 @@ static int nbd_client_handshake(BlockDriverState *bs= , Error **errp) =20 return ret; } + + if (!s->ioc) { + s->ioc =3D QIO_CHANNEL(s->sioc); + object_ref(OBJECT(s->ioc)); + } + + return 0; } =20 /* --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623321024; cv=pass; d=zohomail.com; s=zohoarc; b=WewGbXmwxBSp0PlWQQsqeUX3YHMS2xV9OBStLeMpLeGet5H+AkY+6lctk3QhBYIHajRxnx1fj5nuWNUGN4QyoBEonG6EUGqi6vc1XfR0pTVV+y6n1GHa2qxvs5RjQymESecSFtpexEy+/3/p9whAAs9aafUIziVsGxjvCu3rVfo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623321024; h=Content-Type:Content-Transfer-Encoding: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=txBJ6i62H+6wQ6in2+bgk4Ozas3ngkpXVS/MnCuEhno=; b=Y8vnpqpJSCamWZCGCN50pbLWNR+qKmnx9UdbQYkoe97q++AOg1ewUriupEjHQBUDY7QJv1Mz8x2sYs3fanisLvmTNtMmKMvioYSijModCewzl99A9J2ErIYeUrWGmxy9fHEhyExkmuDeZskzZukegU5G4OMObDySOxLG5WnnkkM= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623321024608466.3382051998858; Thu, 10 Jun 2021 03:30:24 -0700 (PDT) Received: from localhost ([::1]:45094 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrHx9-0000Vl-BC for importer2@patchew.org; Thu, 10 Jun 2021 06:30:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45226) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcq-0005xa-DK; Thu, 10 Jun 2021 06:09:24 -0400 Received: from mail-eopbgr80109.outbound.protection.outlook.com ([40.107.8.109]:1541 helo=EUR04-VI1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHco-0005Ca-C5; Thu, 10 Jun 2021 06:09:24 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6790.eurprd08.prod.outlook.com (2603:10a6:20b:397::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.20; Thu, 10 Jun 2021 10:09:12 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:09:12 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:09:11 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BTn5ifK7yg64114DWBgQmr1q8GGl9nP7wtjMQbv554DR3o0tYcqh28aso6CD0nVl2lD9z9y9MNl+YQlykLpYWVV8ONC8J5OvYD0xYsztkt6YYVScrFmdvhvzABnVLg3VKEebGYg/Xqrlq6Fe2lM/8oBu4By2FA9HeJQfmXHybUVxr4vchh9NOPG7h1zH8r2dYuC3ki0ts+DV+bMC7VvLxA/54ZWok9TButHisgjliXxGPfaOJV0D1B1mnlci8lhElvzLZEFG6hYNgJPDJiKlpDb0jUu8Mm/xn/iq18jrAHyQewp+YJBUukQFNdn+bxroRfIUymKU7evnf4jUkzcuzQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=txBJ6i62H+6wQ6in2+bgk4Ozas3ngkpXVS/MnCuEhno=; b=DG/2jAoUUSdMFwJd2L/IC6Bxu5fs7iUMlVFxYTMCnnKvYSX8sUnJqD5Pr2YzWZn+K15dkh5PzWWdg14uWpi478ejJaBUs5EF6uDAO5kMeWo6oN8crbrwYUYfLKmNHsjI7fHBu0dSTw58ihBD15HcC2uUU5xdTNYkGb+kj26HSvZy2Xa95yROgYc0scABq9+dcGck+iDscX7AzeqUvNCr4NKMaRQrtEUpumDL+1t2KvUrfbQITZm+n2EvGCsKm9c38DNip2/jiCwVgsaHdS7bOQxIoND37zRYpBYwxrI4p2qqmxW3dR8K60sEFlViYFpthGKEV8qoGm5EN3kdgAqkRg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=txBJ6i62H+6wQ6in2+bgk4Ozas3ngkpXVS/MnCuEhno=; b=urcRBAa9D1AVIJGjZ960vXUQohpe3O/0i5yg+tU+HALLeQZ9JEmq1iLT7sHvkoliVFquZpbZIPDXSdc+nz0fF/CBMziqyo4zohsj4UvYVCNgplKZOeH6cuni9gbCz0cH7yY6y0nlKBWITfU+N7FmxgSEM7oIte5RW1LiORU5/yM= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com Subject: [PATCH v4 23/32] block/nbd: use negotiation of NBDClientConnection Date: Thu, 10 Jun 2021 13:07:53 +0300 Message-Id: <20210610100802.5888-24-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: aa06a013-c7c1-4dd6-2298-08d92bf7cb62 X-MS-TrafficTypeDiagnostic: AS8PR08MB6790: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:949; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: khbxDT+PAXVNXt0wj/kbwRnsa16LDAjMDaoyiY1VdJ9mMrmJb+0oPvaEOHD9RAnm1/w1AfqgMX4mFQ3M6eehLqpHdH1KgYUvqBYdRSQateavIJ4zAV6DpXp4YjEeSSNwZ7cBn1mxuLugFnEmT4ahfsFpOylLo/IESiBO7QbsYWjUmCm2N93YsgBmuPkpOGpIMiGMT5tiz/30ARf85N749QnOy4JqF0n3FelCw+aO+n/9ZBXASgESHHoZ9x6KKBDxXqFaAWsQ7few6tsrybvphMe/4EV3PnBbr/NVi0RFogUoTOBK3EgpPbsOZXPsKBc3hsOMK9SuKbxL4rSRRNBMLbhbQpdwMb5MJA6nQlEMtTJUEa5Jbi+X8IjyJbghyk+cf33v/OUGglS4jlLRQsbBuaqwlcJefpp4cT6sJUVod5ysoelnG+bhqIc/tUisbODXXqIRURXNqNTtp8RfZMLBKUzcFSt+Op1DdepRxfK8Im7pXNYHfzj/CZYJpWQywNrJG8t1Eg5Qyq0r1rcIKBQcspRt9bWcCstffJh4Sk91I6+2IMDGUyhzX8UyEdj3liJdhr4yskw1q/r30qHez7UEO40YSFYDgOFkrLqBOaougdSuDxs98CLq8uATpHrh7XF+lMDeS3NAlQbF5fmpEQ/rXuXsMUy8I0ruX+1khyeuYlMvcnGrybakIHhETzj5KqIL X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(346002)(136003)(366004)(396003)(39840400004)(478600001)(16526019)(6486002)(6512007)(83380400001)(6916009)(66556008)(6506007)(66946007)(26005)(66476007)(5660300002)(2616005)(8936002)(38350700002)(36756003)(86362001)(52116002)(8676002)(316002)(186003)(6666004)(4326008)(956004)(2906002)(38100700002)(1076003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?HJPieoJTEa1Mr7/q1mspG6N1uSgrWm5DsOz+yYZi7RnF5918Ezwyijq3u78O?= =?us-ascii?Q?MinNDd5szIgRHJEJWA48T3pbqVQIpzkiwRZZQVi4R0glT1TVSglKQtOLDgXZ?= =?us-ascii?Q?jpB+Mz+Waxy9IjnJP87h188rzts8fPZg9wsj9e1RmqjP1KDGHF77BzUZQsOQ?= =?us-ascii?Q?zhAht7t2ccWZs79ghspzFuQ+KrdfNRgzIjR6cUpiXQoqJ6DglhBhFL+TAUg2?= =?us-ascii?Q?Jioj0MkJXaHTmkLaRIXicNXinFCdGBZnn6iv2LQdRgO+6I913I7/NrWGAI7A?= =?us-ascii?Q?K0Zv9UBf1v+3LZ10TI28qyVk6Ma6viBjxyWxIuapa29wB/Xe4KEqvDF7Pb8K?= =?us-ascii?Q?ne9RpEkmH5mGAPELn25JbKi7oTcBZOMZF1CmVrpsvaU305w7Pc/So+YbjRMT?= =?us-ascii?Q?AtjT16/d0rl8R7dMmoMRUN/TPBvFZp2cdabavhiPhcDJ2EtZYCTeAqCmv2f5?= =?us-ascii?Q?zuCc+xlZL5PiFEuKTj1oYhRSducW5olpFNCs3OPR2W0zMdD8RuQwQZDZCrMm?= =?us-ascii?Q?mgk3FgntuODI78MkLjFGtACuNytcsyuQCaYg933v7fUym6d73CMF6gNQS+6x?= =?us-ascii?Q?hVHrP8XuzAHfAg2Fgyqvsfwuw4apEnM4wfgjoFjMIz0wha8ycHEhN3QMvaAa?= =?us-ascii?Q?JDRwTL5rj8zG77oOzqlGl2rrw+ZjTgWs7+I8FJwbGWjljP5AYUvS71dEHcdh?= =?us-ascii?Q?t3/NpUokVEPjU8VSCpZNdowe2XeCBOaaJAeZY8z3DjHTJGrVtLAUMSz2A1/B?= =?us-ascii?Q?BrljOTbMFBTib8m/MWPk8q7/rCbNd8YgHDn3pTDXd9QO99OMEZoC71leJY0y?= =?us-ascii?Q?4i1azLxjZdWpAf0Iyx18755ZzHz/knp0lay1V0uAdg1/mDJn4rR8G22tmkMA?= =?us-ascii?Q?grx/14lIwfi2lYmqZxCHqs8fmQY7pjJlagpz3kfhXAzrNINehcbYmNk5heZ6?= =?us-ascii?Q?vhtO3Etp+GbMKq6DTgMLRnLKbjQQWYo1BPuqzeKgz6Ziyn5uqg6s4fmVF6AN?= =?us-ascii?Q?mIH6Xkfgm0fQ3+JPCD24/Nd2z09kHZI8t9bsO15a3Ettzm6x0HkZzkpp1fp8?= =?us-ascii?Q?PblPxzb1lxZQ0DhjiFIX0MjW0k3nxQ4FZbzCfcOoYGAq4GOPUkCo/U8sAE9k?= =?us-ascii?Q?tvvbGqE3b9OHIFI4pYXgksvIit8e4bukom4eom5a2xGMgzyMF/qKlPeAJA+T?= =?us-ascii?Q?3In28RWS7FbAXkZF2ZVJDA0aOXAwYTtNegRqS5BmJcW/pdQOsYpBt0T8hR5z?= =?us-ascii?Q?T8MDj6hwRZUp5KZu6EelMchasfsHeDS0XzETHMla62xQbgQRCzuTt249LKv4?= =?us-ascii?Q?eppDOo31Jxen0A9zmPbt0zbf?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: aa06a013-c7c1-4dd6-2298-08d92bf7cb62 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:09:12.0500 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: NR7YIr33JR8y2VVzjmcp0f4gWpWIiOxN+MvMGxcVQcTA44INFav82HK3QNKzoax30lWUnXAKb6iSEZfzRNNfc6gfAJA7mdlyJoPmzDyDEWI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6790 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.109; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-VI1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Now that we can opt in to negotiation as part of the client connection thread, use that to simplify connection_co. This is another step on the way to moving all reconnect code into NBDClientConnection. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- block/nbd.c | 44 ++++++++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index 240c6e1b3d..3114716444 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -362,6 +362,7 @@ static int nbd_handle_updated_info(BlockDriverState *bs= , Error **errp) static coroutine_fn void nbd_reconnect_attempt(BDRVNBDState *s) { int ret; + AioContext *aio_context =3D bdrv_get_aio_context(s->bs); =20 if (!nbd_client_connecting(s)) { return; @@ -402,30 +403,44 @@ static coroutine_fn void nbd_reconnect_attempt(BDRVNB= DState *s) s->ioc =3D NULL; } =20 - s->sioc =3D nbd_co_establish_connection(s->conn, NULL, NULL, NULL); + s->sioc =3D nbd_co_establish_connection(s->conn, &s->info, &s->ioc, NU= LL); if (!s->sioc) { ret =3D -ECONNREFUSED; goto out; } =20 + qio_channel_set_blocking(QIO_CHANNEL(s->sioc), false, NULL); + qio_channel_attach_aio_context(QIO_CHANNEL(s->sioc), aio_context); + if (s->ioc) { + qio_channel_set_blocking(QIO_CHANNEL(s->ioc), false, NULL); + qio_channel_attach_aio_context(QIO_CHANNEL(s->ioc), aio_context); + } else { + s->ioc =3D QIO_CHANNEL(s->sioc); + object_ref(OBJECT(s->ioc)); + } + yank_register_function(BLOCKDEV_YANK_INSTANCE(s->bs->node_name), nbd_y= ank, s->bs); =20 - bdrv_dec_in_flight(s->bs); + ret =3D nbd_handle_updated_info(s->bs, NULL); + if (ret < 0) { + /* + * We have connected, but must fail for other reasons. + * Send NBD_CMD_DISC as a courtesy to the server. + */ + NBDRequest request =3D { .type =3D NBD_CMD_DISC }; =20 - ret =3D nbd_client_handshake(s->bs, NULL); + nbd_send_request(s->ioc, &request); =20 - if (s->drained) { - s->wait_drained_end =3D true; - while (s->drained) { - /* - * We may be entered once from nbd_client_attach_aio_context_bh - * and then from nbd_client_co_drain_end. So here is a loop. - */ - qemu_coroutine_yield(); - } + yank_unregister_function(BLOCKDEV_YANK_INSTANCE(s->bs->node_name), + nbd_yank, s->bs); + object_unref(OBJECT(s->sioc)); + s->sioc =3D NULL; + object_unref(OBJECT(s->ioc)); + s->ioc =3D NULL; + + return; } - bdrv_inc_in_flight(s->bs); =20 out: if (ret >=3D 0) { @@ -2051,7 +2066,8 @@ static int nbd_open(BlockDriverState *bs, QDict *opti= ons, int flags, goto fail; } =20 - s->conn =3D nbd_client_connection_new(s->saddr, false, NULL, NULL, NUL= L); + s->conn =3D nbd_client_connection_new(s->saddr, true, s->export, + s->x_dirty_bitmap, s->tlscreds); =20 /* * establish TCP connection, return error if it fails --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623320337; cv=pass; d=zohomail.com; s=zohoarc; b=hN6JKcIPWID+50lqDnnJdcP3dspiltw3rd6qL/jZtPLpWRBjBxzbWFQgCg3g4WVVcwPsjBFsYRHHxpIq6lp+LzBM773nlk7wiFVV5V7HQ9p8Eo4/vqSUPYIeCbShMEHrZKAcUUM+wXoMAC8mKrZEP6/3egto1uIkwzdoGSInqU4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623320337; h=Content-Type:Content-Transfer-Encoding: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=rEIHR4DUExBaBDw09cjuRP4zRocsACVRyz+FNJYATTE=; b=HSrxy3vyi5fcNR1KAJB6Ov44bA7fpGLuaK0ygrMusHQc/VmlCVKmYJVIGTm6xbxXTzb9O4pqUVBMm/19BXLtaodWcgkMIutpvxpyYqCaml3Nbi4UnZS9LvBFQlyqfFlR81c0PVtPSjwOhMOuAg3fcj19zfT0aatp89yFuU5+5ek= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623320337390790.078692141627; Thu, 10 Jun 2021 03:18:57 -0700 (PDT) Received: from localhost ([::1]:38086 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrHm4-0001RH-Bx for importer2@patchew.org; Thu, 10 Jun 2021 06:18:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45284) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHct-00065o-M2; Thu, 10 Jun 2021 06:09:27 -0400 Received: from mail-eopbgr80109.outbound.protection.outlook.com ([40.107.8.109]:1541 helo=EUR04-VI1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcr-0005Ca-3X; Thu, 10 Jun 2021 06:09:27 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6790.eurprd08.prod.outlook.com (2603:10a6:20b:397::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.20; Thu, 10 Jun 2021 10:09:13 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:09:13 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:09:12 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HQn8cN82CuzXZlbiayG52w4F5SnjOSrfIHhXl2MZK9jsehIwnrS49oaERTRlusG/JJ1UpAifk3aa7H9PXvOYuofmwOwx9EC8e0lDHSCdJEn+sBiI99uYf/hTZoUSjASvQVBVtvK3Rmtyfs3mH0hux+JdNGtKjVhY/cE+H/QJaZsKZs+QYcj8ECqwMQdRcJc00mz/ApCcG8kpdjhjUqKObcbeOR/xGyzbwf1xolI8jz+bllW1GLmsjL54Z5Dxq46NawjZ78hHXP+S8s9FtpAf6DHzcLwFQeT9MS6iykqU1pcWtpb1MFaHBuD8rMI99Xwm0EnWDbg1x43kcn1llOcF+g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rEIHR4DUExBaBDw09cjuRP4zRocsACVRyz+FNJYATTE=; b=CKPqRiREEt4Dy3PoC2sSp+mbGvLzBwBdQ14syS511IAkkhfyHmftEC8wZ1nTNq8vzSXuE3YnU7R+8mOtD47gb8B2L9h+rUBCzN9oP8Qr3JQbFDGPv57dfKil3mAdu6FlnLaGwRPTZmpk0shj7TpUN5CUVYlx/8vnENxvRbLPO+SNItGbOU7hZbEMKqE0Tc9k/jAtoVXrzUTtAhjdHE583X66edQasPNediYQUxc+ioWgVih6CQT/WC2PT4JIjjKmUtQ6ckxWx0hUgEMA4mVJtUc3LUCXj9pizQL/MvDGdifpKRubU8z2QDf4QQLqdgaSfbrONavULDGu6ALixw8sVQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rEIHR4DUExBaBDw09cjuRP4zRocsACVRyz+FNJYATTE=; b=SOGjiqz++J/1XkGh+B+BZAQqipNDjCtUE1zAyUqvd8EPb+5khGtxkNXb3p1gIuoltb5nCukHhdfhFA0f98r1o3J1y7pYcMuTxNFtQt8vpOx6wFUcR09VPQ5Inu1goOn8A9kCSAfc11rSwrdkgfBPc0oO0oZ3s++gGEc6ZcNazpQ= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com Subject: [PATCH v4 24/32] block/nbd: don't touch s->sioc in nbd_teardown_connection() Date: Thu, 10 Jun 2021 13:07:54 +0300 Message-Id: <20210610100802.5888-25-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a9242981-bdf3-4f0f-496c-08d92bf7cc0c X-MS-TrafficTypeDiagnostic: AS8PR08MB6790: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:669; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: xwxPsClAnm75AzojhhDMPYZdEWQ1Nrk/othNyBZVcVgCQrSj9+aaDqh5l5Ueq168rYczPZfTotC1r95CwdiohH0zF3sny7xX/AftAAPhvfnWvsM0pLqxa9ZMtRGJp/9GZHbEQE3UYYDD4Yv7ml1NVk3KS2SJUxWGy/z4sjGfJP9lpK5pWw9G7+FLZRLamxO/+LRTuhAmDyT6oNTQkh9nLFVgoc8ZOlc3PZlw5wd5Lnx8KkHoQ+71NTdCTwqiMoy9bokFWEjUmyl0ZzuSduz4w3JzT3A/MlaQd+SSY+9g0rrDW0MMoiar/oul6nxm/pEotS6GUiANe9D5TX3VK+lXUoGI8DVSytCsFRs2iQs94PnmwpUy/aa8mPilpPY2THfNvuBblS7xg+GiAg3useJUl+JbmvGKAE2jtkhp/ozSFDgmrTginG1y/d0kuM8JcwGQ9Dn6txxRDPBOTbFo/82w7UR4kvB3Im6fucjZBJdJV/w0AE/OTTwdqTx7DFUZFEkQsgYiC0x2yozRX+kWmFyrA0JEbOO9Oto29A3zg3fTuU6p0vSHCFPxs/gMye8qixgJfMIb4deX50ljsBtHy22soQVOnJLT46pQJzbVhuV2w2Wi+ENeSDnZ6aZw+vKqfHbA6jd5TXPBhAPSyY4+XBbddoWItef6BCt4lYE+shYH4e/CWa6jTiZJOqfsbrLJzLtq X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(346002)(136003)(366004)(396003)(39840400004)(4744005)(478600001)(16526019)(6486002)(6512007)(83380400001)(6916009)(66556008)(6506007)(66946007)(26005)(66476007)(5660300002)(2616005)(8936002)(38350700002)(36756003)(86362001)(52116002)(8676002)(316002)(186003)(6666004)(4326008)(956004)(2906002)(38100700002)(1076003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?QkOIXfQL2ZMdqfZor8ssgxhm8b5RGGwE7Kb8qjFnfMNrZDvN3E7YhmkkB37K?= =?us-ascii?Q?Eb5cAWglWEzoZJYQ50ho2EWxWOJhxg869eOtjvQ3okliRFA5k3sipUTOTh2E?= =?us-ascii?Q?IxWW1cNphUz2T+HcI3wMYRJMPpAlzLR8pe9d5tCURErbGUTCFc8GI90DQe+b?= =?us-ascii?Q?OsvbSlOahp81cXEEaxfKuZb45QnhgwLXSVLA84RiRyy1uBAM+al69A+gx0Ef?= =?us-ascii?Q?j55SJ1VNV5rO14bk3EWaCl0VcJ63vA26K2xYotNZAPMjtqaxJjuC8gyOqOK/?= =?us-ascii?Q?XxEFIzSg+auJ3nNzhB4uhBPU7ejmYDpVgmNZJFhw6nxgk5eDyIP0hz5ou8Ki?= =?us-ascii?Q?tMikvmJUXmPHIZUPaLtrfMaYL9FV2nf50hwHTmd7q967ug0DCOnlyaBx+X7W?= =?us-ascii?Q?fdDilpSmXsyUUxbpDl6Y1ZsWdKtpRiRH1MUkA2C3j7oD48ybR+cmBcMZIZa7?= =?us-ascii?Q?RExqADuQZtdGUZhS/EzcZmOtsDFwx15ucCtS7T7tXpeQw+h5WZngxKvFZeQJ?= =?us-ascii?Q?vlGMr/z7TpWGVcvubeMDwV+qYA7pWZmhvz7RxLX/i9+vqVvJPPaPf7rWPZBx?= =?us-ascii?Q?e9bU/BpiDiZv1jBDHGQOTzu4uu4/trhCHybQgSJUXQV1SNGbTq1Myb3REDPX?= =?us-ascii?Q?PC9TTN7IQmFyl3PFk3QD2E8/QI5fkRqmBgLkHnIWqdR0qaHfNOoPMGfRcj1+?= =?us-ascii?Q?xgjvsCo6Nx/1hn1MjZc5GXJep20J5PPMeJu8y7jKxOTVdRfN7dTM+yoiXGff?= =?us-ascii?Q?I2xS7jAAaPronXHkFl8RutW9tcepJzgUYyv0yegrCzRx8kKB8lyedYaEiQ5K?= =?us-ascii?Q?f8f6eaxw5yhtO4zOS9/Voip/UWVOOvw3gyAVZ9EvIxl8W15z59IWpj6DWYQz?= =?us-ascii?Q?PrrBHGLf26PiFn6pEVOUG+I7ByEiq+TKWYfkp/fPP7KTVf3edVKhF6sqU6BF?= =?us-ascii?Q?FHiVRey7Z9JdvD5l78/Hs5CdHxpElgZU9sR8+fcMDmwgWf/rLE5f1eJnsnFv?= =?us-ascii?Q?yZohIM0aCYwAoHV7pG+J+aO0BIFOWLGOX6jfoMWAwnJ12p7z6Lz9QzV2nt6T?= =?us-ascii?Q?+cdJL8QiJn7LVp9kZPnbJwqgQpqE/RkSRSA0UR0jwqx7rd+TFmc/aGdirCJ+?= =?us-ascii?Q?vCT5S/pqFuzBRzWz9vxKjLbPKoOaGT8M7IerTvYLujeQodJPnk51Yx/tg2lm?= =?us-ascii?Q?JPhqfH3AzySoF3y2nheXWzl+nxt2Y5goVnKHt7qELx9GezK/JF0v6Kr6mcbZ?= =?us-ascii?Q?Hhh0V05XoO6lZKgC04j8IUXIBUiZdarkN5H6Pd41gkz1ltAzK6g2ZACOTIa/?= =?us-ascii?Q?QPHRLngiPuK528PLXr1kMUUl?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: a9242981-bdf3-4f0f-496c-08d92bf7cc0c X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:09:13.1233 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: HgOAyo4n71rLzAVrfTgBxUiRWg/rZ6DX/GOP6wgePax1F7YVGTLsp6Zsga/9oBxqN+EXQbV08rF+HuRRReZAjJbXMJEHopccUoy9UFrRc3U= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6790 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.109; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-VI1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Negotiation during reconnect is now done in a thread, and s->sioc is not available during negotiation. Negotiation in thread will be cancelled by nbd_client_connection_release() called from nbd_clear_bdrvstate(). So, we don't need this code chunk anymore. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- block/nbd.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index 3114716444..2abcedd464 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -280,10 +280,6 @@ static void nbd_teardown_connection(BlockDriverState *= bs) if (s->ioc) { /* finish any pending coroutines */ qio_channel_shutdown(s->ioc, QIO_CHANNEL_SHUTDOWN_BOTH, NULL); - } else if (s->sioc) { - /* abort negotiation */ - qio_channel_shutdown(QIO_CHANNEL(s->sioc), QIO_CHANNEL_SHUTDOWN_BO= TH, - NULL); } =20 s->state =3D NBD_CLIENT_QUIT; --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623320523; cv=pass; d=zohomail.com; s=zohoarc; b=f3p+MOkgsPLILGH6LHUmtNZV6RToTLiQyp5NEmQTXDt4rOUvto0YM+Ty/qoFv9AOGzikWQZpq7htkXo/kJ0A33ofJ9GFWjONTic2O062E+tmfbwDXGHnMuMMvJDbBz3KOOQKghSh7wvhgg9dOLycuYmlE1UsNc0QWKita+O3btw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623320523; h=Content-Type:Content-Transfer-Encoding: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=1yEkEUhxrDB+lMrbHl2atgZAPr10tG6H0OuQm/V7MxU=; b=ea6VdGtATdI3fdn+LBschxrhRiSox+cxPsCANXKezyOAZIMsaUJGu2P/UsPWCzqSYGTwmCaNX9sDGphrCdQ5bGQqR+u4EdBqdwiTEyeNWthS2TPHKYfiA70eBR51WIpAQt1586ce5kv+QHFokoj2rU9klpFWKrTMVTrO8suU8zM= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623320523458933.881504962136; Thu, 10 Jun 2021 03:22:03 -0700 (PDT) Received: from localhost ([::1]:50408 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrHp4-0001So-9L for importer2@patchew.org; Thu, 10 Jun 2021 06:22:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45198) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHco-0005td-Rd; Thu, 10 Jun 2021 06:09:22 -0400 Received: from mail-eopbgr10092.outbound.protection.outlook.com ([40.107.1.92]:32769 helo=EUR02-HE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHck-0005DU-5o; Thu, 10 Jun 2021 06:09:22 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.22; Thu, 10 Jun 2021 10:09:14 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:09:14 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:09:13 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LEo+oWpd8O9k1BNS0cMYjUmvCcmP6z5KrkVubNCm4ly7Vq4AISiQZ+RluvSjRGiR1dDdiWYtdKz82CWJaglrZz5Md3QQHTwudl4PwRA77AGI5luGypu+LJ9/FIAU6M6pZ5+wlQVmgqsab0A0tCv8RX6JpEACrQyinwOQj8vU5MbjGIuZdA39j5JqbfsIxt7pJ1fi4fDezOfGrQE2RjIljXNdoYCIp6E6dVEZzZ4j72ndX6Uiu9/KIRABuAWNJoRYmXOwCt5yINWYHvcTfDsund+nHtIUTe3QI0uqCo3mrnJxGFeuCgVou7BQeFXpI3xTFZCGlyHMiMtmZBg+VeeMnQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1yEkEUhxrDB+lMrbHl2atgZAPr10tG6H0OuQm/V7MxU=; b=mgGkJqOoak2Fq1APuLMe5ThxKYOEoBqlMfsnLtix1oPgfDd4sSYfctVdIxXLw3v/xqoLmGo5W8OQidmpjXXTlt3nB8qtFjFVgNxAfwyCU4TCmb6SZhXnHq1cFkZhKoCKNypVVSMdjymkLJPfnuldqsOe9YZmWi+aJlGQ7kYjrKWl9oYw9frYhU8/nkSUZSTWbfTRkVcExT0ludgQMqutWWM5xv3Zs7ea7FStTnhQvtTu9gurCTrF11ooTJFZkzXj3DZryKMVS8JHV/aCZKr56gEW2Zk77A8Ol0ach1TZuN/Y89+whcFRa72xQabXUdUmTVSmK/gf/yZ3LWUcRQ3MDA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1yEkEUhxrDB+lMrbHl2atgZAPr10tG6H0OuQm/V7MxU=; b=owRwKh5lSGPZKMfU1mkEn6uxX585wyL814SE1ztwRF1lXD5TtwRROfbpeN4qOOdCYwprfhSAj6lLyDtnF0aJ8ZIF1vSDxW6LERb+ji8bJEzgEMDfaD73VMOJQ4tfjwSLygg80zdLmna6ZTzrcpSoJFWl36DuO368iqhfzuhSFpY= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com Subject: [PATCH v4 25/32] block/nbd: drop BDRVNBDState::sioc Date: Thu, 10 Jun 2021 13:07:55 +0300 Message-Id: <20210610100802.5888-26-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9e55ecb0-b0aa-454c-89d6-08d92bf7ccae X-MS-TrafficTypeDiagnostic: AS8PR08MB6806: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: HuiQZLUw2So7TlCcbyrTZbJfh0Pob6zpDlnv2MwvgyNFZztkvSOd5fC+Kaw87PAW0IE+pCh7DRbgNsdfgNvVFSvHIn7Cdw76vAePtRdFQXRZVu4xqIn33Ae+aM+1JFoNOgWqO3zmk66b5byDuK1ixLNarYO4+vB6uCXfnZ23qA9hEgPsp2HO7Ymo1aXKbuj2nL4tUldmKrodTc9bRL5HkXElXx+bWAhB+Db1Iha+Rb4B/KJQwGfGprXuD1VeV2Ze/MT3BsIq1GfFoGiRn3ih2YoeSEIf+u7GpTsuqm+zyfKvwHBUVgBVYCL+w8YhpLaiCFJjXM3h6z3jiiTtliDI6+EYVhEBLpkwl2n7MqbXqXOA1+a/C+g8B0IJY+FIdeDWMor4JHcSjWZq3bXAihw4trz8W/+XZoxVnWWanVmuUnCaM2CVAJqThomuoLQxO1Ic6u7EJyK900dLW9SXwrfaRy4lLCtTJUxYohp5s98gvfmMabvvKApeeZXuwn9vyPg3C18b+5eZWV89AjOej5KcB399r8NMMhW+d3bq0YClpqZ71vy25H+LzC85pcP0NuKkwtTvJLgREhg9gjKlOsvxQYAHnUoxuGBOG7OX+B5fLnvfgFRCuxDqEbxilrfWRq8IuhKiJSczMU8NZUGWUcww2KiVfPTb3XUmp0Eh+x8daIsZt8vxytzDNOf3GPOw44VC X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(366004)(39830400003)(376002)(396003)(346002)(2616005)(2906002)(316002)(6512007)(5660300002)(8676002)(1076003)(8936002)(956004)(6506007)(86362001)(66556008)(38350700002)(16526019)(186003)(66476007)(478600001)(6486002)(6666004)(4326008)(38100700002)(26005)(66946007)(6916009)(52116002)(83380400001)(36756003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?MbX36uhWF8cxsU0lRbLQXgJY8xoDTIHPhSOCIG1mVvXk46aJfcHHJL7PuKMK?= =?us-ascii?Q?Q5M7w6N2QEESz0NDlDti65pKgdgnFhxNodol40TsZio4pRrxWfQMjhUVqwG/?= =?us-ascii?Q?q2lE/iCuhmiGGJrwV6TDeL0DVpaykxOdOE6b+KV6B08/eQglsfBsHsNLKXp6?= =?us-ascii?Q?LWfuTG94TU40g23QG+wqQ8lUzO6Za3U/k96rREO6iMbSdQl0Ob2YwY63MJqx?= =?us-ascii?Q?cCSeStoQsNONJrdb3fn0CX56FP4lF2AFZgdClwxhdzFrrZxL3Pq2gTQmAT6Y?= =?us-ascii?Q?g+TLr7eVjFRWuEjcebPUx33aX/HnW4w4h7zW5YFPZ5iQtgFuZZ667GLlsmu8?= =?us-ascii?Q?H0uktWsVU+taG6RzcHTwIfkPzhTBWPEJ4+fhrS4QqTpPNb8EuezHEwcF5V7R?= =?us-ascii?Q?/pjLB3nZUtMyBZEMbT7KES5NeQVQNkVdhhsn/365VUvawDVrKhXQSRuUpuZW?= =?us-ascii?Q?3e16kYeKiFmbZuPUOuQJe3nR0aLBQJITCo8rVBAzqLoTZyWzswzV0B2yGNlt?= =?us-ascii?Q?q9oGNCLgrX+R6RrECDkTglDA5Se4cgWW1DKqWoBP1ScunuqyUMKzRe/Rx314?= =?us-ascii?Q?vHws+HGMC0SSFXzMCw6yIgsVR+qAHThZZM9S2lKJ0A2J79vz5woGffS9ywpl?= =?us-ascii?Q?OPvwxsHHra0XPDj/IczvoF7QooSJ6Ddi2e8Av3GU8hzBCOxsrOJ6gjdL+5dF?= =?us-ascii?Q?9DCiiOejKMUUlGkmYy/7Fq6YDU89Vlq9sZgUjM354OOJm6nRmZMCkHpNc6Oi?= =?us-ascii?Q?J6t8nIutaK1ANI1GJB2m8m+WGaVnRgwM5mcNrOYu9WaL4MLrVnuYWhpABzSv?= =?us-ascii?Q?AcodfV4+tZ64FiaO0/hrFMiVmMGRmw7SXh2MSaj1zCzLa7wjGjElpsenZypl?= =?us-ascii?Q?lPupjvORuRujJOhkD/Fj3veS/h98cHQVuIIUcluDCHZNqfO1F4peOXdefvU0?= =?us-ascii?Q?9rdMDwbEWa3oCSRxrKw+fGuiFm6cvhDx86gYtuJ3pJUsNn1uyb0zwn41Mp6E?= =?us-ascii?Q?yjgVg1pXk9l33RjLpD2aCYAYldWp4rcV/qWJUez4Q/ZrwbNK1l9ikUZ2FWuf?= =?us-ascii?Q?duGSW8dLbBevSjErUeYC1IoxvXreaAzxHQn1HFiRroew5GBcNrqDqcHchvOR?= =?us-ascii?Q?/lK15tPHqugy3g4VolZb7hyyRagDsTzxc1iQeJKwRa003++VBUjwVpOIDRzj?= =?us-ascii?Q?nQqrG9WDZUk6DIZ11JZ1bNmu4vgpTlvYj3LoV8Nark1CX40Vd4rt7ejbhZ8W?= =?us-ascii?Q?d1I5MOoaYlUKGtIstT+giRPujXDZD7StuFBWiI2pse7BZ2YMoyTv7AadbCMi?= =?us-ascii?Q?QJLOZAa4qFTmFxjMyaO4gYBU?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9e55ecb0-b0aa-454c-89d6-08d92bf7ccae X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:09:14.2086 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: QHOcqtE1hkcOA0V7TV0l9/zYeIfyLfm9+nh3tzYTmQSPbDidzXof5HqzML8CpSrKqKfPrpAmSDk2fiT6V74Eke7sqc0MDZ4oa1YQa0ZXU2I= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6806 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.1.92; envelope-from=vsementsov@virtuozzo.com; helo=EUR02-HE1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Currently sioc pointer is used just to pass from socket-connection to nbd negotiation. Drop the field, and use local variables instead. With next commit we'll update nbd/client-connection.c to behave appropriately (return only top-most ioc, not two channels). Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- block/nbd.c | 98 ++++++++++++++++++++++++++--------------------------- 1 file changed, 48 insertions(+), 50 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index 2abcedd464..9f193d130b 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -67,8 +67,7 @@ typedef enum NBDClientState { } NBDClientState; =20 typedef struct BDRVNBDState { - QIOChannelSocket *sioc; /* The master data channel */ - QIOChannel *ioc; /* The current I/O channel which may differ (eg TLS) = */ + QIOChannel *ioc; /* The current I/O channel */ NBDExportInfo info; =20 CoMutex send_mutex; @@ -100,9 +99,11 @@ typedef struct BDRVNBDState { NBDClientConnection *conn; } BDRVNBDState; =20 -static int nbd_establish_connection(BlockDriverState *bs, SocketAddress *s= addr, - Error **errp); -static int nbd_client_handshake(BlockDriverState *bs, Error **errp); +static QIOChannelSocket *nbd_establish_connection(BlockDriverState *bs, + SocketAddress *saddr, + Error **errp); +static int nbd_client_handshake(BlockDriverState *bs, QIOChannelSocket *si= oc, + Error **errp); static void nbd_yank(void *opaque); =20 static void nbd_clear_bdrvstate(BlockDriverState *bs) @@ -359,6 +360,7 @@ static coroutine_fn void nbd_reconnect_attempt(BDRVNBDS= tate *s) { int ret; AioContext *aio_context =3D bdrv_get_aio_context(s->bs); + QIOChannelSocket *sioc; =20 if (!nbd_client_connecting(s)) { return; @@ -393,27 +395,26 @@ static coroutine_fn void nbd_reconnect_attempt(BDRVNB= DState *s) qio_channel_detach_aio_context(QIO_CHANNEL(s->ioc)); yank_unregister_function(BLOCKDEV_YANK_INSTANCE(s->bs->node_name), nbd_yank, s->bs); - object_unref(OBJECT(s->sioc)); - s->sioc =3D NULL; object_unref(OBJECT(s->ioc)); s->ioc =3D NULL; } =20 - s->sioc =3D nbd_co_establish_connection(s->conn, &s->info, &s->ioc, NU= LL); - if (!s->sioc) { + sioc =3D nbd_co_establish_connection(s->conn, &s->info, &s->ioc, NULL); + if (!sioc) { ret =3D -ECONNREFUSED; goto out; } =20 - qio_channel_set_blocking(QIO_CHANNEL(s->sioc), false, NULL); - qio_channel_attach_aio_context(QIO_CHANNEL(s->sioc), aio_context); if (s->ioc) { - qio_channel_set_blocking(QIO_CHANNEL(s->ioc), false, NULL); - qio_channel_attach_aio_context(QIO_CHANNEL(s->ioc), aio_context); + /* sioc is referenced by s->ioc */ + object_unref(OBJECT(sioc)); } else { - s->ioc =3D QIO_CHANNEL(s->sioc); - object_ref(OBJECT(s->ioc)); + s->ioc =3D QIO_CHANNEL(sioc); } + sioc =3D NULL; + + qio_channel_set_blocking(QIO_CHANNEL(s->ioc), false, NULL); + qio_channel_attach_aio_context(QIO_CHANNEL(s->ioc), aio_context); =20 yank_register_function(BLOCKDEV_YANK_INSTANCE(s->bs->node_name), nbd_y= ank, s->bs); @@ -430,8 +431,6 @@ static coroutine_fn void nbd_reconnect_attempt(BDRVNBDS= tate *s) =20 yank_unregister_function(BLOCKDEV_YANK_INSTANCE(s->bs->node_name), nbd_yank, s->bs); - object_unref(OBJECT(s->sioc)); - s->sioc =3D NULL; object_unref(OBJECT(s->ioc)); s->ioc =3D NULL; =20 @@ -566,8 +565,6 @@ static coroutine_fn void nbd_connection_entry(void *opa= que) qio_channel_detach_aio_context(QIO_CHANNEL(s->ioc)); yank_unregister_function(BLOCKDEV_YANK_INSTANCE(s->bs->node_name), nbd_yank, s->bs); - object_unref(OBJECT(s->sioc)); - s->sioc =3D NULL; object_unref(OBJECT(s->ioc)); s->ioc =3D NULL; } @@ -1566,7 +1563,7 @@ static void nbd_yank(void *opaque) BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; =20 qatomic_store_release(&s->state, NBD_CLIENT_QUIT); - qio_channel_shutdown(QIO_CHANNEL(s->sioc), QIO_CHANNEL_SHUTDOWN_BOTH, = NULL); + qio_channel_shutdown(QIO_CHANNEL(s->ioc), QIO_CHANNEL_SHUTDOWN_BOTH, N= ULL); } =20 static void nbd_client_close(BlockDriverState *bs) @@ -1581,57 +1578,64 @@ static void nbd_client_close(BlockDriverState *bs) nbd_teardown_connection(bs); } =20 -static int nbd_establish_connection(BlockDriverState *bs, - SocketAddress *saddr, - Error **errp) +static QIOChannelSocket *nbd_establish_connection(BlockDriverState *bs, + SocketAddress *saddr, + Error **errp) { ERRP_GUARD(); - BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; + QIOChannelSocket *sioc; =20 - s->sioc =3D qio_channel_socket_new(); - qio_channel_set_name(QIO_CHANNEL(s->sioc), "nbd-client"); + sioc =3D qio_channel_socket_new(); + qio_channel_set_name(QIO_CHANNEL(sioc), "nbd-client"); =20 - qio_channel_socket_connect_sync(s->sioc, saddr, errp); + qio_channel_socket_connect_sync(sioc, saddr, errp); if (*errp) { - object_unref(OBJECT(s->sioc)); - s->sioc =3D NULL; - return -1; + object_unref(OBJECT(sioc)); + return NULL; } =20 yank_register_function(BLOCKDEV_YANK_INSTANCE(bs->node_name), nbd_yank= , bs); - qio_channel_set_delay(QIO_CHANNEL(s->sioc), false); + qio_channel_set_delay(QIO_CHANNEL(sioc), false); =20 - return 0; + return sioc; } =20 -/* nbd_client_handshake takes ownership on s->sioc. On failure it's unref'= ed. */ -static int nbd_client_handshake(BlockDriverState *bs, Error **errp) +/* nbd_client_handshake takes ownership on sioc. */ +static int nbd_client_handshake(BlockDriverState *bs, QIOChannelSocket *si= oc, + Error **errp) { BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; AioContext *aio_context =3D bdrv_get_aio_context(bs); int ret; =20 trace_nbd_client_handshake(s->export); - qio_channel_set_blocking(QIO_CHANNEL(s->sioc), false, NULL); - qio_channel_attach_aio_context(QIO_CHANNEL(s->sioc), aio_context); + qio_channel_set_blocking(QIO_CHANNEL(sioc), false, NULL); + qio_channel_attach_aio_context(QIO_CHANNEL(sioc), aio_context); =20 s->info.request_sizes =3D true; s->info.structured_reply =3D true; s->info.base_allocation =3D true; s->info.x_dirty_bitmap =3D g_strdup(s->x_dirty_bitmap); s->info.name =3D g_strdup(s->export ?: ""); - ret =3D nbd_receive_negotiate(aio_context, QIO_CHANNEL(s->sioc), s->tl= screds, + ret =3D nbd_receive_negotiate(aio_context, QIO_CHANNEL(sioc), s->tlscr= eds, s->hostname, &s->ioc, &s->info, errp); g_free(s->info.x_dirty_bitmap); g_free(s->info.name); if (ret < 0) { yank_unregister_function(BLOCKDEV_YANK_INSTANCE(bs->node_name), nbd_yank, bs); - object_unref(OBJECT(s->sioc)); - s->sioc =3D NULL; + object_unref(OBJECT(sioc)); return ret; } =20 + if (s->ioc) { + /* sioc is referenced by s->ioc */ + object_unref(OBJECT(sioc)); + } else { + s->ioc =3D QIO_CHANNEL(sioc); + } + sioc =3D NULL; + ret =3D nbd_handle_updated_info(bs, errp); if (ret < 0) { /* @@ -1640,23 +1644,15 @@ static int nbd_client_handshake(BlockDriverState *b= s, Error **errp) */ NBDRequest request =3D { .type =3D NBD_CMD_DISC }; =20 - nbd_send_request(s->ioc ?: QIO_CHANNEL(s->sioc), &request); + nbd_send_request(s->ioc, &request); =20 yank_unregister_function(BLOCKDEV_YANK_INSTANCE(bs->node_name), nbd_yank, bs); - object_unref(OBJECT(s->sioc)); - s->sioc =3D NULL; object_unref(OBJECT(s->ioc)); s->ioc =3D NULL; - return ret; } =20 - if (!s->ioc) { - s->ioc =3D QIO_CHANNEL(s->sioc); - object_ref(OBJECT(s->ioc)); - } - return 0; } =20 @@ -2048,6 +2044,7 @@ static int nbd_open(BlockDriverState *bs, QDict *opti= ons, int flags, { int ret; BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; + QIOChannelSocket *sioc; =20 s->bs =3D bs; qemu_co_mutex_init(&s->send_mutex); @@ -2069,12 +2066,13 @@ static int nbd_open(BlockDriverState *bs, QDict *op= tions, int flags, * establish TCP connection, return error if it fails * TODO: Configurable retry-until-timeout behaviour. */ - if (nbd_establish_connection(bs, s->saddr, errp) < 0) { + sioc =3D nbd_establish_connection(bs, s->saddr, errp); + if (!sioc) { ret =3D -ECONNREFUSED; goto fail; } =20 - ret =3D nbd_client_handshake(bs, errp); + ret =3D nbd_client_handshake(bs, sioc, errp); if (ret < 0) { goto fail; } --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623320159; cv=pass; d=zohomail.com; s=zohoarc; b=FjYOWIG+6xzI9+qyW8Gn7lK3OfFO2l0aujAfKielCqqT1jqZBMwfDdhzeibZ7eNFeA5LF8xyvIeSPKieFUvscchNQbqdR2Ii2V6MJLsClh85JpXVO2oOOT+tTODJZHi8ocP9fhRYaOlyvGFK3a27M65SHdEVeObA6I0DEIQhzNY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623320159; h=Content-Type:Content-Transfer-Encoding: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=O99MZB6uGP9HFLNVclqRv46ONJSk0v+d/l/BXRMkygs=; b=AX5ggJzuMNvasH7ULuDq44DDYDpl0Y/majuoCcKPL7QGypqHaxCTIXqyo1/1IyOwMWt3ZufLxeX8EbFOCOiUYCFc7rMXO9SRfDF/2rVOaBJr8kTHlgatmbKJIo4LGORqZg4ZyatY9B9+pt3ohgU05dzI+j2yKPTEp4iBB6vehqQ= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623320159771578.6758849025799; Thu, 10 Jun 2021 03:15:59 -0700 (PDT) Received: from localhost ([::1]:57762 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrHjC-0003xH-F5 for importer2@patchew.org; Thu, 10 Jun 2021 06:15:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45278) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcs-000653-RU; Thu, 10 Jun 2021 06:09:27 -0400 Received: from mail-eopbgr60094.outbound.protection.outlook.com ([40.107.6.94]:1862 helo=EUR04-DB3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcq-0005Hv-Bx; Thu, 10 Jun 2021 06:09:26 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.22; Thu, 10 Jun 2021 10:09:15 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:09:15 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:09:14 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Cl+wl0e4om65sWUtTjswugMVOoCGxSPv3Yg02qjFjPi0kmuokJrt9kC60uJjhC6oqhYhDqdRb+eOPGeD1UAJWlmO9IF5uXtR4CIaMCoZfVcxqfw/WWJ+ghIFC5EAEPnSNb6ZVu50Ae3/DBKqMjU81pJaNa9C3IrQMxYEueUbqzuuiu9kuunBcr2JybXbZq4cYC0OPC3zVhMBD5ucl8yQ5ElAF1WzTnDr4nHELXkFEiSJoONj5jFHNJ4zHlPsKYiIeu5N75RAFU9gOC9d6FHA1J+00HpXO2QKp3IZX8uoHtvtbP/wMiqfYHVnNsxIcZZpwThIIbS589MCVWADD8MRsA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=O99MZB6uGP9HFLNVclqRv46ONJSk0v+d/l/BXRMkygs=; b=QybkYsQ2O+nd4kh76rPm14rgG4dPd6KVTNXX9yjAnbUUODCp9CCSfqJMuWx0YtfcTgPuDffDN5C1hMlc8I8EhMWipPGg9hOQQ4fzCpmXGYrKUBdBW6IHXQkBg73UTX8UCvwIgEe9jVKn8CP+ZHfGtxQZCcYmjCu/9b2BwfHn5r4p+1nKcGiBpFfChfvNvZMoOC7seCTRRjn6dsL0/U2sIt6S0aj1vxlByeQwScTBTvtekvBkp2Z0nd8B57dQZBX3J8zOS5FLDJmNx9HQt4OZotEhGbbF+09Q/C+eX0dbrHyxFCvabljswCbBvGfl1orHB/+GbRDnEBNNykKiGY4szg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=O99MZB6uGP9HFLNVclqRv46ONJSk0v+d/l/BXRMkygs=; b=VzQHof1M9h2Z+VPXFdS724lNO9tT7isd2oXt0Dz2VcFUl13FY95dEVdGpSXM/DFNUufRrIMz8RNKXcR6pxrcdPod/KHY480rThmF0rrRCZ6vHYsXz3fZMzss3n53t8BfWppfC/7uKpJhqHpDoqNIEZJ3wzaDC0BxLexbnj4XrNU= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com Subject: [PATCH v4 26/32] nbd/client-connection: return only one io channel Date: Thu, 10 Jun 2021 13:07:56 +0300 Message-Id: <20210610100802.5888-27-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 01e10771-fd01-4323-3bf9-08d92bf7cd58 X-MS-TrafficTypeDiagnostic: AS8PR08MB6806: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:339; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jKKV/GgUkQM45J78AU7NWM8eMeF+m5/M9gD0nGE2FY/YSY6QrfXPKN5/dohazFsfnEbuhxwOvi23TxR6rUgntLBuB39NDul8KM63O2/Vy5ZKmLFxpalT7KbJ/k+kxxnfuTbzDuStzM16Dpbfi3mGkYT7EJ4PjHEybMFUOttV4Q5Ma4zJJKONan8XiZ8R2DiatNgyBERUJmrQEVORyAXaFBKwy1QDseUtXO6oGkLWSHzB+K2dOYnWYGN/nzibuKC8GzqYxHE/0rz0HRGrIyTMq6X/QhGjXzrWcfBEsjYbLy0snaHcZh7AB8zFqxOtMJQeIqy6K41eny9nDzddysKis7iNCIVNJ79QBeElMghO10eY2UHsHd/p9sWnvfNQGvMGKeNJAy6ORGisX+OIoadJdF7KS7h4vQ2MWrO7uLqEWkU4Zi0HJD/5cVsOKtaPy+BIDRI72gv5w9zaHaxLC9cYM8zCV3saQ9JuIZgGRTRumhwRFtmzk6jizyQvXBJvM8b7FoXgTle9uVnuROpeUjetxt+vdi2YobT7AESvhPCbzOJjFLyFGwm+cVRjGWfkNppc8BXc3by/DKBaWQ82zqYq8LTlqeLAUbkC7nIoq02kx5tXTd9fUUs/rkZcqgJ1dmdi1RXhuH7zCoqTeuf7D321ttjJEbXOkoq/JxvvHO1NlXEA9lfgYMJo9ltKKP0Q5Vf3 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(366004)(39830400003)(376002)(396003)(346002)(2616005)(2906002)(316002)(6512007)(5660300002)(8676002)(1076003)(8936002)(956004)(6506007)(86362001)(66556008)(38350700002)(16526019)(186003)(66476007)(478600001)(6486002)(6666004)(4326008)(38100700002)(26005)(66946007)(6916009)(52116002)(83380400001)(36756003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?7m3TwlXRXV/75rNTY0KCyXV7CGqLv1lQrVqwCArKb6WNNuqjXYhIjC5VIUZ0?= =?us-ascii?Q?f7W5pbcp69KoRp4GqmGZujyorYaRyptw2AQ4unQnyprt2uYBd3rQNNy2078M?= =?us-ascii?Q?VQWPhft6A+dJtoXX1r5GiYC5V5N8lnd2exXudDSFyn2kWcwUWZAfI1baL6yj?= =?us-ascii?Q?ZXwuTOuoelc6bTFwBrK9+OVJA1CHRBjHiOwUSTbx7eEm1VBGs5FXH4m3AAUl?= =?us-ascii?Q?u8E4UlSLaIvr1PKpseo03eq6aHC+7JIzryQf0O0dMBI1I+wDMwNkvGZUdOyu?= =?us-ascii?Q?kaZoPI4Eay+p+uxwteQCRy7QgT30xfoHkFBo6lvZWl77vK8u8RD6Fo3RHjby?= =?us-ascii?Q?lDqR6hG0zjBxDqpxprzziLpEEuzpQaLVYbHLa2CN1WDmVGgD8TcLt0ecrKly?= =?us-ascii?Q?ksFPaVF3jRHruIYvlLhZZ/05hxkPrk+q7u3HBZjCp9rqpUA/h4f5Vvr7TMbt?= =?us-ascii?Q?Q/5skV//LoHMdK7ZAkgHvVfJoK4zwo8fC04+D3fVCzzjPXd/8ynC1HKq9L+M?= =?us-ascii?Q?meTFAs7DDj1rrn+TPvD16jDjrQQManmSAl4rQWxc3XbL2/Aq2Hgv1TGwyZxH?= =?us-ascii?Q?HBhyQVXck997NT1q0Sl+bdx4Xt5XD3mNJ2eXrDk6CxoHFtvRgaEfVfaQHnRJ?= =?us-ascii?Q?UkYfCQtHaAK790IpKM1VcWmA1O5Q7iV+VOJtdBBItaDVa5WJO0S5C1WjKqCa?= =?us-ascii?Q?KDwlKINRRp2dqX2dlveKJvywjof2k7WFNEjJrPSTtAhYm6Q20kVeAPCYvPW/?= =?us-ascii?Q?DBthU2q2yhKSkS92ZpsAJ0IVUabY1OxLuVg5KNTe+/NqEK8W5T1u13506TuV?= =?us-ascii?Q?7AYKCXvIrrTT7016GOW/Slvwpr7+mmjsCQCZupfJxDuEKenr8g/bLmGksW1t?= =?us-ascii?Q?GWuVvrQkco/C6JdMW06bO2AJVURErj0zrrCcrXfx9p8T/P5Vbs6JJQoHGzub?= =?us-ascii?Q?UhT1x/D19iapWmsyvMnnDFtDkmku/FYx8anrTWknA3p8zNHlEPVI7Lv1oKqe?= =?us-ascii?Q?gyvJ2C+50Hqh9msFP3P6FcSj7arsg25Bcuwgv7cFudJxOJxQvqW4VRU46YX8?= =?us-ascii?Q?cTbnArKfYtCfn7NtCw3mS93LR8GF1Kjy+dqTMo+ggYgLjz+6nfCY0HjrmYX7?= =?us-ascii?Q?0ZMiHXis+hQC+tdlzlbCL3pKycuyQr1Hhxt99LQ1HVmdojc/BlWVGauXelaB?= =?us-ascii?Q?i+qybCjZoFqILJ/5NvYUxVX8cuxudv53E5oI71rlgKIO6cmggh9TNGt0azrw?= =?us-ascii?Q?MW3tVzJiTUydj7RjPaG3BygRJzMzSBJWyHEOZnXrevRqwdOsYnzr8hSwIk5L?= =?us-ascii?Q?NBHrRrnDubVqSisCdPjDIpWA?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 01e10771-fd01-4323-3bf9-08d92bf7cd58 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:09:15.6492 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Ts4ky08Bkx9vR8qxIhpm+0Eon3UKaFe3t7T4ZXiXeff34Vm5TIWVhyJOhN5EOY4rABLkZlI9cl1eKXUIlyZPujbTQgo1L98+ysewjI6xFvE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6806 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.6.94; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-DB3-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" block/nbd doesn't need underlying sioc channel anymore. So, we can update nbd/client-connection interface to return only one top-most io channel, which is more straight forward. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- include/block/nbd.h | 4 ++-- block/nbd.c | 13 ++----------- nbd/client-connection.c | 33 +++++++++++++++++++++++++-------- 3 files changed, 29 insertions(+), 21 deletions(-) diff --git a/include/block/nbd.h b/include/block/nbd.h index 5bb54d831c..10c8a0bcca 100644 --- a/include/block/nbd.h +++ b/include/block/nbd.h @@ -418,9 +418,9 @@ NBDClientConnection *nbd_client_connection_new(const So= cketAddress *saddr, QCryptoTLSCreds *tlscreds); void nbd_client_connection_release(NBDClientConnection *conn); =20 -QIOChannelSocket *coroutine_fn +QIOChannel *coroutine_fn nbd_co_establish_connection(NBDClientConnection *conn, NBDExportInfo *info, - QIOChannel **ioc, Error **errp); + Error **errp); =20 void coroutine_fn nbd_co_establish_connection_cancel(NBDClientConnection *= conn); =20 diff --git a/block/nbd.c b/block/nbd.c index 9f193d130b..411435c155 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -360,7 +360,6 @@ static coroutine_fn void nbd_reconnect_attempt(BDRVNBDS= tate *s) { int ret; AioContext *aio_context =3D bdrv_get_aio_context(s->bs); - QIOChannelSocket *sioc; =20 if (!nbd_client_connecting(s)) { return; @@ -399,20 +398,12 @@ static coroutine_fn void nbd_reconnect_attempt(BDRVNB= DState *s) s->ioc =3D NULL; } =20 - sioc =3D nbd_co_establish_connection(s->conn, &s->info, &s->ioc, NULL); - if (!sioc) { + s->ioc =3D nbd_co_establish_connection(s->conn, &s->info, NULL); + if (!s->ioc) { ret =3D -ECONNREFUSED; goto out; } =20 - if (s->ioc) { - /* sioc is referenced by s->ioc */ - object_unref(OBJECT(sioc)); - } else { - s->ioc =3D QIO_CHANNEL(sioc); - } - sioc =3D NULL; - qio_channel_set_blocking(QIO_CHANNEL(s->ioc), false, NULL); qio_channel_attach_aio_context(QIO_CHANNEL(s->ioc), aio_context); =20 diff --git a/nbd/client-connection.c b/nbd/client-connection.c index 80c19f4eff..500b8591e8 100644 --- a/nbd/client-connection.c +++ b/nbd/client-connection.c @@ -271,15 +271,15 @@ void nbd_client_connection_release(NBDClientConnectio= n *conn) * nbd_receive_export_list() would be zero (see description of NBDExportIn= fo in * include/block/nbd.h). */ -QIOChannelSocket *coroutine_fn +QIOChannel *coroutine_fn nbd_co_establish_connection(NBDClientConnection *conn, NBDExportInfo *info, - QIOChannel **ioc, Error **errp) + Error **errp) { + QIOChannel *ioc; QemuThread thread; =20 if (conn->do_negotiation) { assert(info); - assert(ioc); } =20 WITH_QEMU_LOCK_GUARD(&conn->mutex) { @@ -293,10 +293,17 @@ nbd_co_establish_connection(NBDClientConnection *conn= , NBDExportInfo *info, if (conn->sioc) { /* Previous attempt finally succeeded in background */ if (conn->do_negotiation) { - *ioc =3D g_steal_pointer(&conn->ioc); + ioc =3D g_steal_pointer(&conn->ioc); memcpy(info, &conn->updated_info, sizeof(*info)); } - return g_steal_pointer(&conn->sioc); + if (ioc) { + /* TLS channel now has own reference to parent */ + object_unref(OBJECT(conn->sioc)); + } else { + ioc =3D QIO_CHANNEL(conn->sioc); + } + conn->sioc =3D NULL; + return ioc; } =20 conn->running =3D true; @@ -328,11 +335,21 @@ nbd_co_establish_connection(NBDClientConnection *conn= , NBDExportInfo *info, } else { error_propagate(errp, conn->err); conn->err =3D NULL; - if (conn->sioc && conn->do_negotiation) { - *ioc =3D g_steal_pointer(&conn->ioc); + if (!conn->sioc) { + return NULL; + } + if (conn->do_negotiation) { + ioc =3D g_steal_pointer(&conn->ioc); memcpy(info, &conn->updated_info, sizeof(*info)); } - return g_steal_pointer(&conn->sioc); + if (ioc) { + /* TLS channel now has own reference to parent */ + object_unref(OBJECT(conn->sioc)); + } else { + ioc =3D QIO_CHANNEL(conn->sioc); + } + conn->sioc =3D NULL; + return ioc; } } =20 --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623320775; cv=pass; d=zohomail.com; s=zohoarc; b=fUunbSqDlrTe7hHjo5HdqiGLqTi2Ybi2XxKJE3JJVQxWZv1xEjzQSH6fcBXGIeHKd6AtgV1Zq4/H9haFwuX3OYoV/fdgL9vwcMS195FuySvB8igkeraef1vPn/SnZ96CzwnG0Pbz6tOOCrpUhwl7Y6Oz6mwwNaNsmE/t53OTVuw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623320775; h=Content-Type:Content-Transfer-Encoding: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=StLfyw2ZLxmj78mUEIEo+0knD7hqrcH76s+XWWHIvuE=; b=HMRkHzcd/rMjLCKNsMDmfhnhP/17CwzcY/csl2QD/nkRIhaL6w3ozUqimMjdjoCSp+7+NyaWnulh+X+GfEGm4UdShYUqogqEzVipE5bRk/kkqdhS+LHi8RRB4T1T/J+rlqB0FCHz22OIGQJmu0ksqVQWB75IXQdSNE+OuW25jw4= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623320775947962.4143257400789; Thu, 10 Jun 2021 03:26:15 -0700 (PDT) Received: from localhost ([::1]:59554 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrHt8-0007oV-Pq for importer2@patchew.org; Thu, 10 Jun 2021 06:26:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45276) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcs-00064n-GO; Thu, 10 Jun 2021 06:09:26 -0400 Received: from mail-eopbgr10092.outbound.protection.outlook.com ([40.107.1.92]:32769 helo=EUR02-HE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcp-0005DU-Hh; Thu, 10 Jun 2021 06:09:26 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.22; Thu, 10 Jun 2021 10:09:16 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:09:16 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:09:15 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hudbfXomrcBzsIuRn56lNG2nucwFIfc5lKs2oFBYqgMVpVowIPHLQBk3kQnx8hRD36q/xSgd2xZO5muom5P6qVURcxulXhV0TTcAodahUsm/UIgEbzTJVQkVNhiVCyqfZ/WJxTLrk4/2fjSvRr6Orop1t6GRuK9ghm5X4gVSogew2WwxtY1Z845vHi3fTJPqDsP6mPnRJMcU/BqfGvLbFqidm9SW3anjeeXViGTFF2uS8sthprBeFSg9DweKjkxHuWRSQYroyRBNeS8D6/EzPpY9JogCESwM3bU9ZreMTupIzQOcVSwlewx5c0a5+Mpq0C7BxQL+pYkUAIO+yxNJug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=StLfyw2ZLxmj78mUEIEo+0knD7hqrcH76s+XWWHIvuE=; b=R1LRMhinSKERR88Q/UIXeA00ejf2KelROhvTa9vWn71UjMhE4gQwr0Yuza5wUVDcA5hE2AvhyzYOuRSZDNF3HeYVhwKpvJbaAA8+k8dZElooxvLmji0Ukm+NsziUiryjdiQ5iQ0f64F87A5g4xxVMYjE/lSDeyTRP51FMCRD0mtPuLUALwP4OrPw/1kP9oTBy2xE3S9cwwPCP/ymsi6TI7rySouvHM2Qeiml5wSbCVmJj3N/lFOZJpTt5UoHdlhnIRYyrUUSWFY+KT1LL7yHIAjHKBVvIdHEg3TVVuuIDk3W5OQxRxNUufq5getA2MxnrZGThoONb98fCqCh7yLkqA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=StLfyw2ZLxmj78mUEIEo+0knD7hqrcH76s+XWWHIvuE=; b=IN5xhKNpIoZVUFUfPD7zuNzqLkO2dOFz6Upx+bri3qgqiJBziLXpctV6DGtJqROvQFyX0yh7QUKN5QXVbEKc6B62OOBomVP7plRDL/1QABLakXJWxw8GIR4cv13ZGXTVsTa1YgpE2tAmp5t3QrQMrb6W/rZMNx1/mOHH6jTVfQg= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com, Eduardo Habkost , Cleber Rosa Subject: [PATCH v4 27/32] block-coroutine-wrapper: allow non bdrv_ prefix Date: Thu, 10 Jun 2021 13:07:57 +0300 Message-Id: <20210610100802.5888-28-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 42a4f36f-0fcf-4aec-ea63-08d92bf7ce4b X-MS-TrafficTypeDiagnostic: AS8PR08MB6806: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:608; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ff85GaT6MewkcPWJv5h/AYIglmnul4rzpw+7As3KKpofVPQVmZt3bKKan4sDdSs/C27ROxB2pqd1t8mWpKtDE9z4O0H6adoD3wgt0udafBjXgNgUvbw2AARunlrOzXGEXTxVdmxg+NMNhAA/j+yBPDJIIZafcr6PdFVyro4Oy0p4E3ST3eAUua1DOn7JfVLUcsxgOsX8ZToq+r5c/9OJl+ZSD2PoDK3M3Zad735JILWDCLUXykdyQEdLx5T9WpBk0DjTqax+KEbg+D6DyKuE3gkBQzQlpD/s1qgDZjFJXAKkCXeWTRp8yl2Fw7n0UPIHrVzTp28dtT3vbP5cWFFTB99BrNPIsXsX3xrZpxgOPv7u/SV5ur9QK2+I6r9QcptUk+39qnxWSgpkjUQMjsXaUNsHeDfoinpysulrMuILBjTSVlmI9+aicMGLqrBy/oKDFOZRnrfZN6mWNOu1D/tuCIsJcsp4ttuLjTzeQNKlfuQKO9Xmjd7PHiggJl+mGKaVxM7buQ7dVrSCwYRW2gQpKBhhGE2Z5t8kuq8Xkjl6wlVczpp8rmHb19Aq8dV9BurTnkOKSK3B01lHGuowtmvhLaHqlkXHyaUl8NXfKfje1HK5LoXOC3xRXwlygm5bZ/RhxGw3gA2i8oEYVEXVyGHUlnnZQhoLgZ/auM9aUHAcDNSPtIw9st51ptJahVvn/+PL X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(366004)(39830400003)(376002)(396003)(346002)(2616005)(2906002)(316002)(6512007)(5660300002)(8676002)(1076003)(8936002)(956004)(6506007)(54906003)(86362001)(66556008)(38350700002)(16526019)(186003)(66476007)(478600001)(6486002)(6666004)(4326008)(38100700002)(26005)(66946007)(6916009)(52116002)(83380400001)(36756003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?F12YpOlCjT1g+kRvt1HWeVYpRl9xnU8mm1i1tgupKQVKZIvt1FAOL4DhteMr?= =?us-ascii?Q?6NRBR7ETQTx31SXnGRXw80f+TbvZiKIDZfLQeWMKO8J3l3NRCYKzInFR5nrz?= =?us-ascii?Q?ObZ+4vcwvQCeDiD7ivNg6fSJl9cho4G47Xp1+9z4sAdkbi+CJllNT7QkqxRI?= =?us-ascii?Q?QMCRT0tSl1NDdjRRVqBtkegUdPrXpnHlPqUFaWFNXUT8gwqll74cgTZmtaIa?= =?us-ascii?Q?d11htPawKaHFH6p6XgGvgkQJ/rm9BLLY2PTMfEIPC0s5z4I3S+CXFn3B2E4b?= =?us-ascii?Q?504IZde+QEX6UfacK781bIX1pGesml8q57AahbRSjHZbj1pMhe+6PIe090iL?= =?us-ascii?Q?CcLyV0fm59id5rSFJRF/UxTKZaFZJzsAuuOFyADa0OOXQQuosfUBcbFld1g7?= =?us-ascii?Q?/gqkB4DalCTnUyRP40TukR0Uaeo8DPD/ECD14Hhoe/ULgKDEVnkgVys2wjFM?= =?us-ascii?Q?cNRHYNbu7gzyn/wqSaSLVVvP6PVXRFuiMrAO3KnN+vQ81BayN61pVWXcHIZk?= =?us-ascii?Q?uVRURAc3rdD0lT9Ka2c7lYqbA7sgIUoAWyddMD+2QsPLZggWDFxSUhsSR1cF?= =?us-ascii?Q?ORrr2wLPGX3i+LZEZD08ue0d4eKIZjZqhWDj0B97FTvnLdPYU8CaJS+qYopa?= =?us-ascii?Q?GJGZDhgzuMWPe+H7k2gz1EYhsL/KFCENL3E8E0OAGJ8EBNFhpfQDXcz8KFA1?= =?us-ascii?Q?jgWVP4Rg8Sf6ynevsJokvjbE5qM4FnQlH6go7br5sAqZXU99kMJk7PmryjoH?= =?us-ascii?Q?f9f6WWjJcU5wS+Z6bKs/Z4FFUAov32XOFxeKbaGeTx0cR2Lz7I8Yl+nMnHap?= =?us-ascii?Q?T+NPV4Q04C3Sww+waIT0InzLBFcR7+Cx/isjTZFPdHKDjqgWdTPrCmb+rlUQ?= =?us-ascii?Q?m+DiVp/TJiZl069B+a4s4iZ6En94sDU1/TJ+jfak71sEAmqGyOpguQgy61tV?= =?us-ascii?Q?PKTff0yeCnpJckCw9PiThokHOfZ59vcwspnyuPzOCbKlB89y1m6Ds994ktSQ?= =?us-ascii?Q?bPrDayAfnIGjyYWCHvRdCsClpsUiLxtnTG1Xdbpppy35dpx27tPhsscPh0lj?= =?us-ascii?Q?CJb7d3MGew5NR6A7UkoYG/afLfXmIGtkLUi/MARCNHGgUPQjup44z6vyNEmP?= =?us-ascii?Q?Gw+sfKpM674DglmamIvcPM25cUvvzpeJpF6U2H6+qUeIRP2rKVakhd/80JwH?= =?us-ascii?Q?pwjqAuJa1yy4ZVe3bTZg7vC+/fMtdHl9bw2rsHT4luod/hdxiJHK6/DHANGu?= =?us-ascii?Q?S5u+WuWxFNh7Phhl7jnoZ/gj11hCi9DGktW2bMfUsmiLBkX+esg2+hXaZjWz?= =?us-ascii?Q?QkzS0C6IFePO9f0f8TswkZlG?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 42a4f36f-0fcf-4aec-ea63-08d92bf7ce4b X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:09:16.9246 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: x+UIaxERGqKUPpTTeQOBeyYV0+ZqT9B0vMA+pjw2ZtS8GtjbwJjzzcDNKTZShmTpZDpukIus+9FGXAkQVfgajvQa2CT01BBMF1mPTiROhtk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6806 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.1.92; envelope-from=vsementsov@virtuozzo.com; helo=EUR02-HE1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" We are going to reuse the script to generate a nbd_ function in further commit. Prepare the script now. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- scripts/block-coroutine-wrapper.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/scripts/block-coroutine-wrapper.py b/scripts/block-coroutine-w= rapper.py index 0461fd1c45..85dbeb9ecf 100644 --- a/scripts/block-coroutine-wrapper.py +++ b/scripts/block-coroutine-wrapper.py @@ -98,12 +98,13 @@ def snake_to_camel(func_name: str) -> str: =20 =20 def gen_wrapper(func: FuncDecl) -> str: - assert func.name.startswith('bdrv_') - assert not func.name.startswith('bdrv_co_') + assert not '_co_' in func.name assert func.return_type =3D=3D 'int' assert func.args[0].type in ['BlockDriverState *', 'BdrvChild *'] =20 - name =3D 'bdrv_co_' + func.name[5:] + subsystem, subname =3D func.name.split('_', 1) + + name =3D f'{subsystem}_co_{subname}' bs =3D 'bs' if func.args[0].type =3D=3D 'BlockDriverState *' else 'chi= ld->bs' struct_name =3D snake_to_camel(name) =20 --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623321566; cv=pass; d=zohomail.com; s=zohoarc; b=aG++FGpy+GIzeZ+7fHK3EHABGcJUpeoghJna81MemCp3WmtjObU4oOtZenJXbl832BN2WOiJ6FsO6PkoU7Yqk5fO2Nca7mrBMICi9Cj4kNhB7AbP0YDDYA/O1psLwAtO8ENpZfbGwW3b25Z38KdQln7IhQM3zWlcdlpVBToq7RQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623321566; h=Content-Type:Content-Transfer-Encoding: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=dzF7EYrJhOhuL0zilCSXcPOrK3fdlHkP3qTL7c/VsNY=; b=JFlxSIK+zDb4S00IfYK02DN3HMmClUdjyKws01g7OxLTY3nDE557NQpKj/eHWHjmTm262xem1P/U30zbqUMU9AToz5ijPYDjgqfHBtUQQcgsnFhgQi11EoZLjv/tTkiOVDGbwTZwIXAmhCSA55Hus1rRLWH1oM2tYnXWlcAc0xk= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623321566067373.60511997085723; Thu, 10 Jun 2021 03:39:26 -0700 (PDT) Received: from localhost ([::1]:46328 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrI5s-0003YZ-Ju for importer2@patchew.org; Thu, 10 Jun 2021 06:39:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45326) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcy-0006AC-5K; Thu, 10 Jun 2021 06:09:32 -0400 Received: from mail-eopbgr10092.outbound.protection.outlook.com ([40.107.1.92]:32769 helo=EUR02-HE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHct-0005DU-6p; Thu, 10 Jun 2021 06:09:31 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.22; Thu, 10 Jun 2021 10:09:18 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:09:18 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:09:17 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PR1vYAo0rE1d7vduN/qM8PXOF3euodmwGw1umRd7YeHAv58epbn4/c3qwMd6d2R4wGELxJOfGxyb3qToHHKG6ZWC0QH6hsqx8bSzkOQDCu/E8V498fapA4lItSkX3Bwv0huwzLRhpuN4+4pKte8Dqj+pNAQxnbzcjrDPkOpUzN/W0hpMd862f47gtbDskBJBMzfDIsI+552xC6MV0mdpgeSYLTowS0K8hf7e3WdLppfWYzu9kk8x3cCBgczfsmW50jYCIf4lAUl96jY6k8UVfT7yal3IUAKUblqqLnWp0xIDLAEtPjpYopDpHj905AmE4eJ5yquyeMSGOy037runMw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dzF7EYrJhOhuL0zilCSXcPOrK3fdlHkP3qTL7c/VsNY=; b=Q32UHDHs8Uwp4f7sGbk43BeDRYlhwEAe1K1wXOjE6ukCHk6cR4j0SOh7fLHcr9+Zz2UeiTQUYO/2XpqHbECbd4ka49ekWid9Y5XBMH5oi2bnvDYytHCcIYWp7INThu83haYRMfZf9/lT0s95Z+b2f/i04G8ctQn001rV1t/JXj5eOsgsS+nKih+R2PRo/i9DDNAVW3IZ0naxnUOcn+Z/mZKS+FaKA7QJgoEboe0wwz/FNF6LJwl0dmgUhLfFKB1Xk5N9Ya7XP13LOEa7RBcVZI5H6G89cyeqN7W1fCr5u0zP68InwGww+dMA5hpQ6bwULtzZsPouttxz59UD7Enmkg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dzF7EYrJhOhuL0zilCSXcPOrK3fdlHkP3qTL7c/VsNY=; b=l+aY/GEBJDyDN5bDKveugbXXjRPSnsv9GKtM855HZfChZHrNuV2dQheBcOvoIiML6fHt9fwx5dS1TFBhmmChpGfpoO6zWzJ+z6CjyfeWLMtLCtPoKEfRw8MnlovUT7feRYqtnCyYjTDWf6pHgp6J54T0EiAVNbtC9oStdV2q5eY= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com Subject: [PATCH v4 28/32] block/nbd: split nbd_co_do_establish_connection out of nbd_reconnect_attempt Date: Thu, 10 Jun 2021 13:07:58 +0300 Message-Id: <20210610100802.5888-29-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b90abe25-aca6-4e93-5e41-08d92bf7cf39 X-MS-TrafficTypeDiagnostic: AS8PR08MB6806: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1091; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: E5J/+SDFUe1erQm/NvFX8ISRSQnAJDQnE6IM0mQ/c9uCHdztRaSDB3zCmr72u0alUHLTiGcEebC4mXYbShU9qKogdNQD0c0ct49uDHPpvb/oV+TEU74+5WWfdinnm6jMe2KQaVltbEcyr5VWdTdTGw/tgN8zptdbzW3ASTlfEA00vy1ICRzDsKs5pSmDacsFvTn5iBh6EDXai8czHVxqMH4eY0EwcOBnZPF3R9mQ1fXWT/486xXI7hM9180bVY+Odyzpi1hm6DAeGvZS8Uybsvw3yJwA8/bfUvv/kMJCeBroou7RMMGDzHpEHxGMIC/CZw7u7v+u1E2LXMLsW8HcIWll9xP2q+YJxDH+UpSetfBH6bC78tfvWmWR2gXU3AGgKIzHobmaFKTivP8gE8oJ2nOvOcUUUYo5t8NVfJ6syYk7REn/83vNcE7azSjy9UkHIYztuvyk1Y+H+AWxisrvf08ZU7n6d5YUnEU186rCIj0LRYDPaf6Aqnw1mjSdNY1AF6Y4Na6reiGzHovOk88Vl/ZFAVWuQfCo4LHmjzw9BWluqcGhDFbidn7GNEgWQkrApmxdSdwo121Gigf0Mniv9hkENG5wRFbghIrApRulDS7tCKAPdimnxTHKIBz7znfaDguKgCRlEk61o+9bOQn7YrLTwTVz1JahyxkyTov0YRNNQKPimZS9C1E24XO3yzJF X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(366004)(39830400003)(376002)(396003)(346002)(2616005)(2906002)(316002)(6512007)(5660300002)(8676002)(1076003)(8936002)(956004)(6506007)(86362001)(66556008)(38350700002)(16526019)(186003)(66476007)(478600001)(6486002)(6666004)(4326008)(38100700002)(26005)(66946007)(6916009)(52116002)(83380400001)(36756003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?xDwg/xAkmCiFYcp4PNKIfqLcItgBfNeK7++DJVInxIc3IgmKMlXaX/1XEwMF?= =?us-ascii?Q?/WECId5wvZ/ep+WDhFAebdYhvVMX75GJlNYgRSkslTs+WZMjpfEeT4uH79d9?= =?us-ascii?Q?8mhiiBBruisgE6cUvuhBErvguKSfudD1ou9yPGBKCL+idzt0SYezjQTLOHSQ?= =?us-ascii?Q?DEVGhxJ4op/BdAffVdwhU3NhM8Wq+y4nQ+wWqnlpYYQ5fOa+OMvJyMZxF0VO?= =?us-ascii?Q?XGpY9zX6lJaxaavpQPekPdO4kWKEvkgsgQpbwE1wigg7bctYXOm/ZvYN0gYU?= =?us-ascii?Q?p/CMsqnuEr9lVzpH3h3fwTrbwC7hot2BHDCHZfySRo3ZgdoSkJfgqvY9V1hP?= =?us-ascii?Q?9SbJ9jXPhRKjSBSm1pXEEHicrpXQtKWNe9iaURnGnnhqoUGRrA2mRKms7j/6?= =?us-ascii?Q?SVrVaDmNmfq2Wi+cuEoGB46+eRZrh0UmMJI2M15OACRvu58B20iRa+ElnfL9?= =?us-ascii?Q?uXAnUxDMItEbtQwjbpjlugG6tYIqnpvCvflbAno/vd9ZBFh0esCmsvwBPdpS?= =?us-ascii?Q?etgtneaxGiNzFOl7tR54RZ8iJ2WIXA5wpX14NW65NzgGngmBe3ZPoMP76/1k?= =?us-ascii?Q?BtpQ0bI9HK8i4A8kPqOcczdKyyeGO05bALvbDnp1IKoWC2T7mwkkCvIF0wXN?= =?us-ascii?Q?sBz9lLe4TOq3TnCEXRAualW3e97bs6Ugsx0P9+GJl7czgKv/H54UpnLLjVS3?= =?us-ascii?Q?6gLiHs3gogpTEmiXuGs2KLAFsAj6YAe+vU9TQbegOhtQkcEnUavBahCw2TZR?= =?us-ascii?Q?Es660sa6S09L5zCScsJge2IxBvPSLFiADT46Ao7p6gM+KIbekiIkCtjaHg1E?= =?us-ascii?Q?0RwbTZuzhGK9laLUAQ5Rhb3iuwoPHhRq7fprHfznmOxNCUEMC9Z9xDVHRiVg?= =?us-ascii?Q?lZCrCkgJjkXX2uA2IeDp5I0k51zSlJdscose2Fu2VZbsJvCpF/+HtRy23I4W?= =?us-ascii?Q?gXq8SU+MvtbGcCRXVb8atCnuV3utfKvJoTu8IpymD7I4gsKvK+t8i4b+oBjS?= =?us-ascii?Q?rYkJ/eKbcb/BLO9AuPX4FaojWj4jhsNbm84ZGIEthySBBlPvKw7zdbMzIWml?= =?us-ascii?Q?0IYgumV57N5tL/vTXUh8BsF3k5YMeY1fM6gc7u/1ubV4KtuRXuyceJe1FKbb?= =?us-ascii?Q?UR35vqGp4hPty4/8SOyvuzwZYlAjDEro0I07LZmoVVfki9PDQBxsPi7X5aza?= =?us-ascii?Q?GeyCMh2fTg89npTPuExO0gPpx9CpM3c03WmSMyo/f030n+3eEESvN0wQkjSs?= =?us-ascii?Q?um8uNNqrMLVupTtOFmwac9FMBplxNNKUJRkrUi1j6JCgr+vQjuyq6veebwmI?= =?us-ascii?Q?f3lJ5N7aCDJ9cI887CKLMKlG?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: b90abe25-aca6-4e93-5e41-08d92bf7cf39 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:09:18.4539 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: XFrTEtJUO4xnhoEcbSyg1VS2GnJI/j8H0FMznjS7+doFBldrSwlZ5G425AfIrQPbVkBNfTimaUQOrAiNuyN4phxJtn/36jbVZrydaz+JA8o= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6806 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.1.92; envelope-from=vsementsov@virtuozzo.com; helo=EUR02-HE1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Split out the part that we want to reuse for nbd_open(). Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- block/nbd.c | 80 ++++++++++++++++++++++++++++------------------------- 1 file changed, 42 insertions(+), 38 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index 411435c155..8caeafc8d3 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -356,11 +356,50 @@ static int nbd_handle_updated_info(BlockDriverState *= bs, Error **errp) return 0; } =20 -static coroutine_fn void nbd_reconnect_attempt(BDRVNBDState *s) +static int coroutine_fn nbd_co_do_establish_connection(BlockDriverState *b= s, + Error **errp) { + BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; int ret; - AioContext *aio_context =3D bdrv_get_aio_context(s->bs); =20 + assert(!s->ioc); + + s->ioc =3D nbd_co_establish_connection(s->conn, &s->info, errp); + if (!s->ioc) { + return -ECONNREFUSED; + } + + ret =3D nbd_handle_updated_info(s->bs, NULL); + if (ret < 0) { + /* + * We have connected, but must fail for other reasons. + * Send NBD_CMD_DISC as a courtesy to the server. + */ + NBDRequest request =3D { .type =3D NBD_CMD_DISC }; + + nbd_send_request(s->ioc, &request); + + object_unref(OBJECT(s->ioc)); + s->ioc =3D NULL; + + return ret; + } + + qio_channel_set_blocking(s->ioc, false, NULL); + qio_channel_attach_aio_context(s->ioc, bdrv_get_aio_context(bs)); + + yank_register_function(BLOCKDEV_YANK_INSTANCE(s->bs->node_name), nbd_y= ank, + bs); + + /* successfully connected */ + s->state =3D NBD_CLIENT_CONNECTED; + qemu_co_queue_restart_all(&s->free_sema); + + return 0; +} + +static coroutine_fn void nbd_reconnect_attempt(BDRVNBDState *s) +{ if (!nbd_client_connecting(s)) { return; } @@ -398,42 +437,7 @@ static coroutine_fn void nbd_reconnect_attempt(BDRVNBD= State *s) s->ioc =3D NULL; } =20 - s->ioc =3D nbd_co_establish_connection(s->conn, &s->info, NULL); - if (!s->ioc) { - ret =3D -ECONNREFUSED; - goto out; - } - - qio_channel_set_blocking(QIO_CHANNEL(s->ioc), false, NULL); - qio_channel_attach_aio_context(QIO_CHANNEL(s->ioc), aio_context); - - yank_register_function(BLOCKDEV_YANK_INSTANCE(s->bs->node_name), nbd_y= ank, - s->bs); - - ret =3D nbd_handle_updated_info(s->bs, NULL); - if (ret < 0) { - /* - * We have connected, but must fail for other reasons. - * Send NBD_CMD_DISC as a courtesy to the server. - */ - NBDRequest request =3D { .type =3D NBD_CMD_DISC }; - - nbd_send_request(s->ioc, &request); - - yank_unregister_function(BLOCKDEV_YANK_INSTANCE(s->bs->node_name), - nbd_yank, s->bs); - object_unref(OBJECT(s->ioc)); - s->ioc =3D NULL; - - return; - } - -out: - if (ret >=3D 0) { - /* successfully connected */ - s->state =3D NBD_CLIENT_CONNECTED; - qemu_co_queue_restart_all(&s->free_sema); - } + nbd_co_do_establish_connection(s->bs, NULL); } =20 static coroutine_fn void nbd_co_reconnect_loop(BDRVNBDState *s) --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623321444; cv=pass; d=zohomail.com; s=zohoarc; b=etFUSNrV9jxEK7R7TEFpyDqmtDv3qbfS5lc12a2iNfWdYjQ1uXfgkG9X1ZSXiy9ym31eIYkcWSFpMjc8YPgcQ2BRipHZXlNV8x6B8WVzGCA/f4l0HY1eXYxMaTefvx+iahxmNm1kMiOK5C55wHze1Mx9pLRtmKVesUdDzUGSFS4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623321444; h=Content-Type:Content-Transfer-Encoding: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=e9oOutGUjSZi06WUdfl1JV61UYRFLcjmiqSpCbbGZr8=; b=DbqefbIqSuAjaxPXLSW7cE1f9813xHXpHm3/j1pvrOI/i8ZNaavPZZQyVOwFbssOsllxmWcOJa5aaRmJj4/dbBpyyvpE5bZ/UcBYNNa4mQ8eTR2fui3PUQRBlxQoQmIXZIwXdemRFA4knZKqEUNUECU8fPTTAUXqPrB+l4x7HL8= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 162332144438547.36798813508119; Thu, 10 Jun 2021 03:37:24 -0700 (PDT) Received: from localhost ([::1]:38882 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrI3v-00075O-7M for importer2@patchew.org; Thu, 10 Jun 2021 06:37:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45314) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcw-00069I-BN; Thu, 10 Jun 2021 06:09:31 -0400 Received: from mail-eopbgr60094.outbound.protection.outlook.com ([40.107.6.94]:1862 helo=EUR04-DB3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHct-0005Hv-Db; Thu, 10 Jun 2021 06:09:30 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.22; Thu, 10 Jun 2021 10:09:19 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:09:19 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:09:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=c2w4M+0bG+kabWoJzJOD65DnILE7qvdgm39fooUdTiPkLsWBd17LB2IN/QYNHsgDdgoxRlelzB6dqabk33f6I4d0c9IeQn0+ZLYtXkJo3omjPr+1Pf+6Gxq0rGczB5dCKq0MGglm2cVqsUokPx24VuSVtc/CX9e39omJMm5MbnrZxctOjMezAioHi4UAhzNv0+ccMHX9lzOlWSMmWYkOeiYKLdoGoTXMRZJ1sgC/zo4lW9R898bRzJPD2aOTc7vtRre0vBBhmGA/ldRluqR97tg9AWItUZUlyJbi/7yYKwdzag0RzD4KBYK5K5RZ3BxbhHY83dp3H3n8rNXRb2cqxw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=e9oOutGUjSZi06WUdfl1JV61UYRFLcjmiqSpCbbGZr8=; b=edHvSjZRAb4qUvzhfL1bhj/uh6UEavsO0DURoqHJdGveS2nAUV+im5SJVhNLE3iK4YnV5L7+QozMqwnEKLvtroTok41ltCt8RHkjf+eBFi6TRaAkOen2+8oIduwiv4YvDLDDVYoRi4eAd9x2oMsD+dfpi08izqVINTqJa9APfUgPpbvTFN0M92oCUgu3bvZ96qb8uHTXf5+H13btNpo3RAmCx3cdnvowtcjndCqZqpbtYPgtnKlButMq6q0ckHPD7cfIW/UAFsfVCYVsuQ4Nir2bsKlkEOAukTus36gyTsZnIvEic7jugDgugHOriu4+rFsh8NUl6xj23anG0tIkGg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=e9oOutGUjSZi06WUdfl1JV61UYRFLcjmiqSpCbbGZr8=; b=OsoPdACkTtAxdyG8hu5m2PCILjf3suU8fsA/61bYrKis2xpiyl0Qu41FFmQvQiYxmxmoeyDm3JAVbbjHgCCVbWtALfv+ImB47OOdccqTqUGzHacZ0ZP65PmzUhvtmEtKsZF8XA/UOzOmpazWBVOCJj2BikdkkYK1mdOIirHenl8= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com Subject: [PATCH v4 29/32] nbd/client-connection: add option for non-blocking connection attempt Date: Thu, 10 Jun 2021 13:07:59 +0300 Message-Id: <20210610100802.5888-30-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c399af7a-d31e-43ef-8805-08d92bf7cfdc X-MS-TrafficTypeDiagnostic: AS8PR08MB6806: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1169; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8Hbx346S+LjDXyb8yfU5mT2XgrucI9teNtlRho9xdLGNEacXUqWXfQB6MVQSKmajB8nuI3jA94Sk9a01jox/dnC6US8sA3rSPMipYBa1YRC6/pnKWXCkOSfcyikPIMZJ1bVeowELKNQI+owFqpfIVkfZ5YSAwJ5lAjzMzZtMiRqWCIgTQ2Et1hv3zmWtVg4pVAAkJ4YcVCjS2LI4a4ItfJc++ffA5/lbwSsVVdGmeKHaBZSUkdjXU/ihTO1XtN7FXjsgdCR/Dx5o7/yDui28IN2SPUk8Kp1oCbC/gtSi6+Km7wJRwTm2vI7fs/qsLy9LcBe3xFwGqiUO8ZRnk2tCCxYy+4Yn4G6RN1iud1F8+XRB4KKZ+RP0xoTW2/631IBV+HMGsQFD89xf5/xUb5lqjhgpSLdnUD9nZVy4XFHxEuSBkvvhGHCHkcVW+3b+v6EoDm6j2oaxdQvXRQPyy9Dzl78mBSj452NDn053sbjhhzpY0Jcdo71PXHhrXFDF9Aj/Uo6KqiiJ7fL45DsZw2h4A273uDCjYaJaHv9pTpXNCQgQRj5y+F7vTLQNyJ61JSrL4cB2e1AjG113EK67K6I+a4bVTc2VR7rVhzSQcHt1U3Uz8/m9wNBppkCxf0tMGEpV5M24xlyuzKYflM2iH1KCcfILBJTtcLuYo8/sqCz4HtAmtWQ1KwY4FevRgyEep93c X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(366004)(39830400003)(376002)(396003)(346002)(2616005)(2906002)(316002)(6512007)(5660300002)(8676002)(1076003)(8936002)(956004)(6506007)(86362001)(66556008)(38350700002)(16526019)(186003)(66476007)(478600001)(6486002)(6666004)(4326008)(38100700002)(26005)(66946007)(6916009)(52116002)(83380400001)(36756003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?vWeXnytou9u0nBdNrQVEWVdyrx7LRNPLRspmeRJKMPpjZeQDTb5YKZHIQXOc?= =?us-ascii?Q?MepPhyuCoVLCMK6ogIfKF98JJPA5F/vH069b9uH2gwMXaCSxNg1nZDUYdHXf?= =?us-ascii?Q?BFIcQ7XUzRhXC27+imjx1NN760rtiAFnnb+Vcx6Re5D12mc2s5Wu62Y3H4Rq?= =?us-ascii?Q?mMKUwdVFUb5ZKIzsQ8l4a7/4S2bKSVJAAm0usLQ+zSJhVv5uDugVVgSdqC0P?= =?us-ascii?Q?6bkq8QcIl1fgo/pVSVH4i7VWtMnkqaz6TF/9T+kJk3J3sruXrLYXAukZ/0Dy?= =?us-ascii?Q?at3HeKmFC/5uJBF9N04OaQvTJ3cQXCboA6pgPpCxLVLiuWf7e1sYR0fTq0XW?= =?us-ascii?Q?mfAcileN+mL0aX9oj24tyNsnFMEQURqYBejM5/+5kUpzuyXHA8bAI4abcQ+P?= =?us-ascii?Q?rbDjkydUzmJZfsQp7bxo2PsMJL0pEbSWphfeYFK+cvfGpzPTVTemPrjoaV9W?= =?us-ascii?Q?wocLhNUg7cDKKEgWhOg4hMy7zqGoZvqF9/2isKjs55TfAhFNZX5VT2yb4btZ?= =?us-ascii?Q?SbBevPu1YQjJfS59VMo/7TNdU3MXiuM8TbaySNimTXiyxZojw4wBu6jDXcTd?= =?us-ascii?Q?cRFZk0Y8T/tN0kjM/5UNU0fv7EryWZH80zzSCNhpzshgm+aaxaFplGLGU1oL?= =?us-ascii?Q?Ih7oBWu5ZvqaEV12ZZAO+m+jooIOSQPRiOMaHfFxyohU8TcDCWdcwNf19aVB?= =?us-ascii?Q?BbRVFlz5DQLnoBURnmEx7rB+4/Fx+TSXZg8qC33K4Aw1u6JKyM8yQ+Danhk7?= =?us-ascii?Q?6e5pVv989G0PB3MR+kSPC1R5wlMdibZzM3QPhCjmLfZL8uQc7fOK5xR5vpYD?= =?us-ascii?Q?1xbmarePg1u/7F3en9ihCYIGT5WlYrUlgQRYC8gdoF8vG1VdtbVlIr2dWErg?= =?us-ascii?Q?+IApyUsy9WlDn5ZvKsn/7nhK5HKvBIeXGTPThlqOs1OZof2FHUInW3Bd9ZEm?= =?us-ascii?Q?NpEXxi8JJ+jwfAO1cv6aeR/YD2G1l1H9lq7B1ZhTkzRy9bTgQCc7eMvpiKXq?= =?us-ascii?Q?knrPgcSCMtnJM5R75bKB/VzTkW5w/MEOXzsBq/y68I8ob1N2bK21Jsgxtt8l?= =?us-ascii?Q?CPV5MXMWlMaiUj02VUCj4m+kzlaePf+eEYRI9CnBET8bR+FsVeyXjS7B2H6J?= =?us-ascii?Q?AvbW9yKsynGVSb/zIkXxWdUZVwuVWy4ZmVxi99UoAHHWMMSCVIwRCrW3k5+D?= =?us-ascii?Q?n7qNsHpnwOqVYb6YtlVib/ubmvhcTH5buX9GxT3B5/fu1FtnNbGzbUZxSwsH?= =?us-ascii?Q?m5vFHzwM2p+ZKmOoHD0JsSTrsNlFQyI9j6NnQ29GAeM9K/eklmRCqi85aZTe?= =?us-ascii?Q?CnB3LtZ7e/Cc69RxDiZallOJ?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: c399af7a-d31e-43ef-8805-08d92bf7cfdc X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:09:19.6218 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: vGdNBDIcatEQ6z5ZVikQ0HEqquM83nM7VgoDvQiE0uFtTBIQTrGN8UnDTTXjEICoBgYhxmm0iiuTBvBJhBiiUmBWJ7upLghZqNyu3pf/fTI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6806 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.6.94; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-DB3-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" We'll need a possibility of non-blocking nbd_co_establish_connection(), so that it returns immediately, and it returns success only if a connections was previously established in background. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- include/block/nbd.h | 2 +- block/nbd.c | 2 +- nbd/client-connection.c | 8 +++++++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/include/block/nbd.h b/include/block/nbd.h index 10c8a0bcca..78d101b774 100644 --- a/include/block/nbd.h +++ b/include/block/nbd.h @@ -420,7 +420,7 @@ void nbd_client_connection_release(NBDClientConnection = *conn); =20 QIOChannel *coroutine_fn nbd_co_establish_connection(NBDClientConnection *conn, NBDExportInfo *info, - Error **errp); + bool blocking, Error **errp); =20 void coroutine_fn nbd_co_establish_connection_cancel(NBDClientConnection *= conn); =20 diff --git a/block/nbd.c b/block/nbd.c index 8caeafc8d3..bf2e939314 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -364,7 +364,7 @@ static int coroutine_fn nbd_co_do_establish_connection(= BlockDriverState *bs, =20 assert(!s->ioc); =20 - s->ioc =3D nbd_co_establish_connection(s->conn, &s->info, errp); + s->ioc =3D nbd_co_establish_connection(s->conn, &s->info, true, errp); if (!s->ioc) { return -ECONNREFUSED; } diff --git a/nbd/client-connection.c b/nbd/client-connection.c index 500b8591e8..250d094b4d 100644 --- a/nbd/client-connection.c +++ b/nbd/client-connection.c @@ -265,6 +265,8 @@ void nbd_client_connection_release(NBDClientConnection = *conn) * otherwise the thread is not running, so start a thread and wait for * completion * + * If @blocking is false, don't wait for the thread, return immediately. + * * If @info is not NULL, also do nbd-negotiation after successful connecti= on. * In this case info is used only as out parameter, and is fully initializ= ed by * nbd_co_establish_connection(). "IN" fields of info as well as related o= nly to @@ -273,7 +275,7 @@ void nbd_client_connection_release(NBDClientConnection = *conn) */ QIOChannel *coroutine_fn nbd_co_establish_connection(NBDClientConnection *conn, NBDExportInfo *info, - Error **errp) + bool blocking, Error **errp) { QIOChannel *ioc; QemuThread thread; @@ -313,6 +315,10 @@ nbd_co_establish_connection(NBDClientConnection *conn,= NBDExportInfo *info, connect_thread_func, conn, QEMU_THREAD_DETA= CHED); } =20 + if (!blocking) { + return NULL; + } + conn->wait_co =3D qemu_coroutine_self(); } =20 --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623320913; cv=pass; d=zohomail.com; s=zohoarc; b=g5XQpQdMrAO3ARIbL8mdipQh+ev/4+O+GNrcD9UvJwrVq/cbdZjJvlYcdDJZNXYJUXaiJjwVYI8HZ4iTkhZanQGRY/wuT6BbBVK2rKjjDFIu24wkvtWhsG9watZ0u9eOetcv8WJaqEjVADZis11HfC/V3Fv4BM86WPm3C5Dc1KQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623320913; h=Content-Type:Content-Transfer-Encoding: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=rUB3kq39p7pEEkOxutL2Mj2scfoEWTonqm19RC7Q2Ag=; b=UssQ42Ek4GAnXl7sldZuYhSBx9DqRK8mPq87pDA/WI++YKqsAz2GzhnS0X5Av63TzDVF6iwy0np1Pc0fOfbiZCtEne5QSGsb5sM4eyZnwpupYPS9zNSYV08k82Ipcv/DlwOHfWMFIphbByF8wqUjcVIkrm1THRIQZ8pRwlgz28I= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623320913476209.39396839421647; Thu, 10 Jun 2021 03:28:33 -0700 (PDT) Received: from localhost ([::1]:40514 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrHvM-0005p9-Cy for importer2@patchew.org; Thu, 10 Jun 2021 06:28:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45330) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHd2-0006Gh-2J; Thu, 10 Jun 2021 06:09:37 -0400 Received: from mail-eopbgr60094.outbound.protection.outlook.com ([40.107.6.94]:1862 helo=EUR04-DB3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHcw-0005Hv-Um; Thu, 10 Jun 2021 06:09:35 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.22; Thu, 10 Jun 2021 10:09:21 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:09:21 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:09:20 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ds7H8IrVwHAqbX36gGN3dr8WPfU2rTQwjb98imHt5IDHPwvNesT/0oH+Mbgpb/UHjzgtc1BmjZKTBCUly3UW//Bgi45fEBp0dSL58UVCkXuP2gLsUjkaQDf+3eoubiAmarj6hAAp+Lq0rSDygS/ntZeC0SWUGF2u5D4ZATpsmLTIpqay76ry5ZqG77eSYPgsv9lZphzCdJ81JmiV2Ogbqh9lQTMd8qzNPcoZD4gVAJG+01+ZDS3LXaVT5JkqXVC9kz1XonZHYgDcScUT99uDatpw4fZYRxcTP5cwQnP50lk4SIRTO+pn8JHlDyFnGdbAjsrt/F+JCY9dpXKj5gMJZQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rUB3kq39p7pEEkOxutL2Mj2scfoEWTonqm19RC7Q2Ag=; b=joggrDJPA/iopFpABLp33AQacGh0C0waGpexxuvIAF+6QfDd8Ozi1cMOpo/wO1lRDo1HNBuZ5XzTfysVvDJKDTwOPI4YyP/mPm54DKTk4vLfYtUJGvRhKemv/pTd/Ftk17LcRBVu+MHLNTXofkd/ZtdLFv/aHL5skDFu4a5/3RFbuVLRIZVbKpZ+sSfBmSbq54ew8TLGQVEzQ6axvSsX49gjL0rKXURPuQNBqL/Z5D3IhpktpGbrE1PbqURjlYzoWPSm4Y81LOOYHIaTIVS/IhkQ+UB03j0WaphmKDvkyzQI5DwC0nS0+/r3zSMKid5cZzO+IuwBI8dSboDz7idTtg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rUB3kq39p7pEEkOxutL2Mj2scfoEWTonqm19RC7Q2Ag=; b=nOAdTT6bKug3PUpxFASGXef/behBlv7+Hcd3aEIV6t5FLypIfx6vmEeUNTs79bmusVcbKN6eaR5FqCkl8DYoOgTNjm+TIbplEvfgA0n4UuI3xFVhkyVN4tzc0V/VNo7IFaV1m+mv6ieG14WvSkQh6ZmhX+jcpQ+XVixH06OnNk8= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com Subject: [PATCH v4 30/32] block/nbd: reuse nbd_co_do_establish_connection() in nbd_open() Date: Thu, 10 Jun 2021 13:08:00 +0300 Message-Id: <20210610100802.5888-31-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1fb96dfd-1d58-448c-cccf-08d92bf7d09b X-MS-TrafficTypeDiagnostic: AS8PR08MB6806: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:741; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DPfcCyjYWTWtiwnFullLXLnUNxYaN3UD68IJV4TDZoosyU1CY79i6qrNr8X0AM54IkRvjEFi0Y4A3fwFTFMojxXyBFhrTTUpxi11ssjlhdS75KZRwafUVvzwV2Br/Xd9sonsaZMFBP41OQax++ca6DdaIriqPKW453onr24SQOsyf0AHx3q0jpCYc/LV4/G5MkO0ZXbPAfuJtLOwLGBLP8LuFQ6By1VC9Ym5zqkaAmgwHoEx2+Z9CE0CqqRZ4/MIp1tUCdE2OQ8P5AcYO3yqckXXiQolLoSL83G/bNutjyQNjy52jS0QllZbJspNVinwN4CffUWwx2bTMbHnhoTuhbSwm1xYvWRiVfCfJgiGnIo41ARYU73ESlHF4Nm9t9YY2SM57kfgv/0V8ewhr8TnrlRGl1cNk+lTIg1Fq3TDuHQPDStTBQLlI9ZWDI1h6CTwYFBwJnbbF5c9zoUut+8JjsmmRmWPXqd228pyP8aFAqKpqSJ3vjgB+0VehXTrFgg7O4xoIwhTs71EOXiRB4Ex9g1HR7K0wRY1KVS/K0zEv2tdMFB7a2vlAxL+jCgxnSfbKVuzm1eoZpMK4K79inlRxdxxQuqYdKsbD7vOvv774KB4TEh+v3WPdXkrCFgSYxJVV0j+7jm14go/Yl3AjK6To74TXVTgOnWDZkDClLpP2OkMKnTyicZqP8UMuWBgAN8C X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(366004)(39830400003)(376002)(396003)(346002)(2616005)(2906002)(316002)(6512007)(5660300002)(8676002)(1076003)(8936002)(956004)(6506007)(86362001)(66556008)(38350700002)(16526019)(186003)(66476007)(478600001)(6486002)(6666004)(4326008)(38100700002)(26005)(66946007)(6916009)(52116002)(83380400001)(36756003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?k8gK+5E73qhjLqRCPcg0TYjJd6zF6ltug9b/wI2ntm5eW14lnOiEA5LoKv5r?= =?us-ascii?Q?jbgn6wHnZPjwcnYvzaUgCkOQI1+hBl35Val88997iMVVVs/6lyK0fFV5x/xG?= =?us-ascii?Q?+6LPHYPwbm6Uq1xRdzcfU8NipZGLPlWfqDPYm3qYYNLJf1dlC4mInuOrQgTM?= =?us-ascii?Q?iZ84R/cx6evauKmJfocMwCC4pCB1WzFPZKHJtfwLAr1qlwWEk8p86jt93M8x?= =?us-ascii?Q?nN/1pKl1b363EOSzpOSES+RqCQ4pGcLXidc1R7f/RSDX+JyHeRcra9sR99mV?= =?us-ascii?Q?aflH/pudaw5FL/vvUfcDOEzspjMushVtzuPWXY+bspK4mKeSU7AJxHOdPvmT?= =?us-ascii?Q?Znj+P+GHQEjGPFnaDoQNjE9n1hQUTRh/L+bwyzNR6uD05e/qPh/S38YQpkkP?= =?us-ascii?Q?9DqexO2HYvCsCCvrrBUTfi/2XNHFaiiHh4R+koTIXnEt2bQ8vxW4f10WYCN3?= =?us-ascii?Q?BTUZ13uUsXPTbgMe3s6xswqxy4uWIRkCC5ZhJLYEsErddQQjHAdjuaMx/HU5?= =?us-ascii?Q?lpFb+3kqOtcYoPljqOJ0io53/CvFKKVL35cJl/n7tst1vXoIlId3LUIM6wXb?= =?us-ascii?Q?7Q00+jN8sjGD9jXKy3eg0fl7xhDD6sJ5KeBHPPKqTKec00vBkezghpTrO6LX?= =?us-ascii?Q?eaRhsea0+r48xYh4cekFBYJ9v5TKXmZlO1hfLVflnPeN/iZQtfVUgrtncbFz?= =?us-ascii?Q?N0QvivZkgrMs6FcxeCag+u0EZxVbY6NVk0c07FYWJRDtbZVIz8N8ri23NexM?= =?us-ascii?Q?MBMY2E4AhgigaYwCAZvibk4RWMCgXZ+oEemCoYBpo90EaTFXyG9ZH/qvTtVZ?= =?us-ascii?Q?4txKj5258mjOmD9q71YM1EQlQMjp9PNf69eeTq8ja7YuNMqBXqW/YMMgcX9c?= =?us-ascii?Q?PQJ6j8SapqkSrBkcg7jzJGblncTDAyR0hq8jayoQpKXhQurPunl6bonYGdiB?= =?us-ascii?Q?1XCsHwL4F1M9Qc2GBwEF6ugZaeQJFX2dg91LO4lf2B4PBp8QrRuh/Qf+RJeu?= =?us-ascii?Q?8Y9lS5dCdiAnchsMvVbNnBGz2QS5ZD52pvXaUAxOD0lscGFhtEvWA7CZhpiP?= =?us-ascii?Q?MUkU3/K8k/kOqOc1idZmG7Y5OE6qE2CuW0DfXlDRamCGNxrgbbzWDWPsL+gW?= =?us-ascii?Q?lBlml53Vl69gdSnPaCFaf2/bbrp61PVaCXOHe9gX4e5sgB9YAf/CR40beUjY?= =?us-ascii?Q?XFF4biAxQiJ99vQZQWgqe6dYAImCOjHoByuGQDFqFfZhb0zGTUK+4+otzCCh?= =?us-ascii?Q?G1JMz+COobVi4Eyq9QpHb4xL9Cf3cmlmr0qi8ECuhR4FvuDzCHnWDrcEFuZT?= =?us-ascii?Q?Udem1S9ynTesvHOTAice8hgD?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1fb96dfd-1d58-448c-cccf-08d92bf7d09b X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:09:20.9261 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: vFS2+XYLaEjtjm2OBVuxsilKkIOr6owBxtNMXr7bdMizDmFeHJvD+XCFH++p2exq1FXcBYCtHwiNbVvOnO21MO466dpWdA/0yUIC5z8JzqA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6806 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.6.94; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-DB3-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" The only last step we need to reuse the function is coroutine-wrapper. nbd_open() may be called from non-coroutine context. So, generate the wrapper and use it. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- block/coroutines.h | 6 +++ block/nbd.c | 103 +++------------------------------------------ 2 files changed, 11 insertions(+), 98 deletions(-) diff --git a/block/coroutines.h b/block/coroutines.h index 4cfb4946e6..514d169d23 100644 --- a/block/coroutines.h +++ b/block/coroutines.h @@ -66,4 +66,10 @@ int coroutine_fn bdrv_co_readv_vmstate(BlockDriverState = *bs, int coroutine_fn bdrv_co_writev_vmstate(BlockDriverState *bs, QEMUIOVector *qiov, int64_t pos); =20 +int generated_co_wrapper +nbd_do_establish_connection(BlockDriverState *bs, Error **errp); +int coroutine_fn +nbd_co_do_establish_connection(BlockDriverState *bs, Error **errp); + + #endif /* BLOCK_COROUTINES_INT_H */ diff --git a/block/nbd.c b/block/nbd.c index bf2e939314..5e7e238b47 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -44,6 +44,7 @@ #include "block/qdict.h" #include "block/nbd.h" #include "block/block_int.h" +#include "block/coroutines.h" =20 #include "qemu/yank.h" =20 @@ -99,11 +100,6 @@ typedef struct BDRVNBDState { NBDClientConnection *conn; } BDRVNBDState; =20 -static QIOChannelSocket *nbd_establish_connection(BlockDriverState *bs, - SocketAddress *saddr, - Error **errp); -static int nbd_client_handshake(BlockDriverState *bs, QIOChannelSocket *si= oc, - Error **errp); static void nbd_yank(void *opaque); =20 static void nbd_clear_bdrvstate(BlockDriverState *bs) @@ -356,8 +352,8 @@ static int nbd_handle_updated_info(BlockDriverState *bs= , Error **errp) return 0; } =20 -static int coroutine_fn nbd_co_do_establish_connection(BlockDriverState *b= s, - Error **errp) +int coroutine_fn nbd_co_do_establish_connection(BlockDriverState *bs, + Error **errp) { BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; int ret; @@ -1573,83 +1569,6 @@ static void nbd_client_close(BlockDriverState *bs) nbd_teardown_connection(bs); } =20 -static QIOChannelSocket *nbd_establish_connection(BlockDriverState *bs, - SocketAddress *saddr, - Error **errp) -{ - ERRP_GUARD(); - QIOChannelSocket *sioc; - - sioc =3D qio_channel_socket_new(); - qio_channel_set_name(QIO_CHANNEL(sioc), "nbd-client"); - - qio_channel_socket_connect_sync(sioc, saddr, errp); - if (*errp) { - object_unref(OBJECT(sioc)); - return NULL; - } - - yank_register_function(BLOCKDEV_YANK_INSTANCE(bs->node_name), nbd_yank= , bs); - qio_channel_set_delay(QIO_CHANNEL(sioc), false); - - return sioc; -} - -/* nbd_client_handshake takes ownership on sioc. */ -static int nbd_client_handshake(BlockDriverState *bs, QIOChannelSocket *si= oc, - Error **errp) -{ - BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; - AioContext *aio_context =3D bdrv_get_aio_context(bs); - int ret; - - trace_nbd_client_handshake(s->export); - qio_channel_set_blocking(QIO_CHANNEL(sioc), false, NULL); - qio_channel_attach_aio_context(QIO_CHANNEL(sioc), aio_context); - - s->info.request_sizes =3D true; - s->info.structured_reply =3D true; - s->info.base_allocation =3D true; - s->info.x_dirty_bitmap =3D g_strdup(s->x_dirty_bitmap); - s->info.name =3D g_strdup(s->export ?: ""); - ret =3D nbd_receive_negotiate(aio_context, QIO_CHANNEL(sioc), s->tlscr= eds, - s->hostname, &s->ioc, &s->info, errp); - g_free(s->info.x_dirty_bitmap); - g_free(s->info.name); - if (ret < 0) { - yank_unregister_function(BLOCKDEV_YANK_INSTANCE(bs->node_name), - nbd_yank, bs); - object_unref(OBJECT(sioc)); - return ret; - } - - if (s->ioc) { - /* sioc is referenced by s->ioc */ - object_unref(OBJECT(sioc)); - } else { - s->ioc =3D QIO_CHANNEL(sioc); - } - sioc =3D NULL; - - ret =3D nbd_handle_updated_info(bs, errp); - if (ret < 0) { - /* - * We have connected, but must fail for other reasons. - * Send NBD_CMD_DISC as a courtesy to the server. - */ - NBDRequest request =3D { .type =3D NBD_CMD_DISC }; - - nbd_send_request(s->ioc, &request); - - yank_unregister_function(BLOCKDEV_YANK_INSTANCE(bs->node_name), - nbd_yank, bs); - object_unref(OBJECT(s->ioc)); - s->ioc =3D NULL; - return ret; - } - - return 0; -} =20 /* * Parse nbd_open options @@ -2039,7 +1958,6 @@ static int nbd_open(BlockDriverState *bs, QDict *opti= ons, int flags, { int ret; BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; - QIOChannelSocket *sioc; =20 s->bs =3D bs; qemu_co_mutex_init(&s->send_mutex); @@ -2057,22 +1975,11 @@ static int nbd_open(BlockDriverState *bs, QDict *op= tions, int flags, s->conn =3D nbd_client_connection_new(s->saddr, true, s->export, s->x_dirty_bitmap, s->tlscreds); =20 - /* - * establish TCP connection, return error if it fails - * TODO: Configurable retry-until-timeout behaviour. - */ - sioc =3D nbd_establish_connection(bs, s->saddr, errp); - if (!sioc) { - ret =3D -ECONNREFUSED; - goto fail; - } - - ret =3D nbd_client_handshake(bs, sioc, errp); + /* TODO: Configurable retry-until-timeout behaviour. */ + ret =3D nbd_do_establish_connection(bs, errp); if (ret < 0) { goto fail; } - /* successfully connected */ - s->state =3D NBD_CLIENT_CONNECTED; =20 s->connection_co =3D qemu_coroutine_create(nbd_connection_entry, s); bdrv_inc_in_flight(bs); --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623321376; cv=pass; d=zohomail.com; s=zohoarc; b=Q18cp/RT0VWcY9VWrSdvt91B9MOrd2dzteBvuX1cIYHtmUQim5ms4quO1V3GHC3IyExmI0cNYZj4hTHiDDGcvYnHghY+tmPVBuMXGv75SqZjcgXk0aOgUzoQRGJZCinQAzGPwdoQv3Ht94TT0qS6HyJlthhGudQh6lB2vWm+C/I= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623321376; h=Content-Type:Content-Transfer-Encoding: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=yEBcMQ8qVB5qoVebjKJoPvZdbrROBbC5dN+177BsbWw=; b=mLu5x5eFJrCIoTylGts0cBbXEFsnJQueY1dkPsX8JEOagDB9akxfcSqfF13QfDAHuSuyKTH+zVjQES8J0QJRa5DaDJYuKDpBgWJztVfACTNrKiz2A0qn/Q8BT4J8MTQYbJaXPxF1ub7PZqmRlKzd+7qFFfTAmRnf12zH4kGDC3I= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623321376247586.3074342389456; Thu, 10 Jun 2021 03:36:16 -0700 (PDT) Received: from localhost ([::1]:33428 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrI2p-0003Mh-4h for importer2@patchew.org; Thu, 10 Jun 2021 06:36:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45354) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHd5-0006Lj-Os; Thu, 10 Jun 2021 06:09:40 -0400 Received: from mail-eopbgr10092.outbound.protection.outlook.com ([40.107.1.92]:32769 helo=EUR02-HE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHd0-0005DU-A1; Thu, 10 Jun 2021 06:09:39 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.22; Thu, 10 Jun 2021 10:09:22 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:09:22 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:09:21 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cT/Lkvol6GbwHj3hMetJB8p6qG/+WrV30SM4gFETor0SLM1ZVO18ZR1UuZAFDl5FPLro44tY57+t7BrlppIS/48R0lDX2MPUaiNukDvRS80wN/cWT9XnibHJEU1zsh8bGVOZ+HMrx9ZSdh93Oul5DTOQTRq0dM4TA4ckfQUfUO1Z3TpBBLbkcO9mmfjfe8x0EuKFnC+9UECxXZ9gdnL1sFyjykFQ6j9c6nUSHO+4D/OW1bQS/ThLPqD3CAhlTr02We5PXnUeI11T9kqQWdekUG6wdZlTJpiLHeWOdUe2BuNhB4RyxodEJT8eCp8VC66XsPHb1KmcPbHipIE+cuGKhQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yEBcMQ8qVB5qoVebjKJoPvZdbrROBbC5dN+177BsbWw=; b=MytJE6ZM+28G3AZ9GSagtcQzleT27nbPOP1gjIFNHJNIPiBPBkYfPXdlDytB+S67I0/R47m8SjvwEHAXTAfMlszX5JXc7NzHOrNiqxi51qtuCcv8gqR/SfEQyvpY55byy29zGHpYwW6yc4/PjDDeDYCALWfUQL4qNBWwjb6TcoxbQjAyDbTTazxo6/jj0xaz0y3YSARI081cV2OiSRadonxsZ+Q8sm3lsr/GaVgnZOzO3AhWiSIjWpem2A/uDgvkVm950SWP8sy2EPcFDE5H6ADv+58jLegXCoPGWyoBuU8WiM9JOTumuHB97upz9HFfP1NtUYXrpWLdpHysNwyt0g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yEBcMQ8qVB5qoVebjKJoPvZdbrROBbC5dN+177BsbWw=; b=tlyT+DLgQUqJKXBNJql/odXoCqokxBTImfO2YIm0vy3pG9FBf/ns/WWBs/3elHjBjJ6nIKGz6PJQJO3meSMG12xEH1Pm/lEcKF5vnaaZatO0Q0lgFnHTfS+d5XQiWbr6Jb4MAD0uqXHj3xsAO4JfzUSS3uYRblC4ZaqF1k6DOYo= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com Subject: [PATCH v4 31/32] block/nbd: add nbd_client_connected() helper Date: Thu, 10 Jun 2021 13:08:01 +0300 Message-Id: <20210610100802.5888-32-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e6a956c1-d29d-44dc-6f96-08d92bf7d15c X-MS-TrafficTypeDiagnostic: AS8PR08MB6806: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:47; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jl3NwjzdrCst985O1hDDA9MG2YyxFTV3bYme8KLJI7kWoVKZdt89oRnG0PsnF0f3jCI9rM9nFKYLno2fYGFLJrNaPMwDpy4DBqPnJ9yWUIWPQNERRspjItoo02b1j/4LMzHQ/nyNIlQRT7DwC8RO8vf0h3nfnNGlU+xOu+j26zADPhvV/X4lBUa1FzvEXSImLNwpnvFsRQ3/IIyqxAQaRKaTt0oPHc3q/jHBM+oEN2gcF6m9R/3QUP5ma7mUtOvQUZGE4qnMPpiTYjV6VbWLHIx8A80UYSwfU25HWZ2xocvYk2SQhaNuxm6JQm0pl+QXo0KRdoqSzPAiBy4K4TJd9gsnjgkW31vE/PihCsYsGRx/7P21S/7hxy3OR9pI0m1Zmo0rd9Tu/OcHtWQQHGfp30zDoQRMyAcK9SXMlUdFzR5OSdk5RRUC2Z12YVSs5oyZKSzsVXzYpjsnTO41oGKyPa2iGT545M4h2ThbUEGzsPAZWjbboRJ2Iu32f5cfFaMGUFGZEgfveo+hwomThkQ1t69U1ph3boLUWADzaygKfKKfo0Q9Lr/chrO2CBuk2ibxI5vfnDBE21uCF79+KPBPOFZuUkzI70RF44vUH8Cy2eB2UqYqPxrhBeApGMUHVcIQtNQDMtJ1xbP+LV+4kZ1DaHGMw4qjz3TaH3OLlQacTmeW4ENLqGjedOS6rAJnbJqa X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(366004)(39830400003)(376002)(396003)(346002)(2616005)(2906002)(316002)(6512007)(5660300002)(8676002)(1076003)(8936002)(956004)(6506007)(86362001)(66556008)(38350700002)(16526019)(186003)(66476007)(478600001)(6486002)(6666004)(4326008)(38100700002)(26005)(66946007)(6916009)(52116002)(83380400001)(36756003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?qCFaQ1DfjrZuYURkSkxcwty/g+cp4zOIUSM3kB/R4UORvwmqvgS3P3R5cXF+?= =?us-ascii?Q?58NOkekhSGeT95iw0eZHbd+hdo5bPhkhWpn4HrRcILc2JUazGAdDySTtijNn?= =?us-ascii?Q?y4YYhMB9c3dK8nnEYT9GMirgxJ7QXUDFSsUNWi2IHGJJLUI/vh5Gl0vWPOtz?= =?us-ascii?Q?stcIVEKOOTAL22bRH26d/6dsqEqaT+nlAIV0VhMBf3JHQXqwSreVOa2ldOFD?= =?us-ascii?Q?rxcWiNuLS19+912E1wV61Qd3BE2JIYPnW8mK8UTHVy4gwSUwysTMoJexwJHQ?= =?us-ascii?Q?59EZBVK6/AP32MWmjmJGZbLiOeYzT/UsFS7QnVJiHMcqEB5Esm9mMMwPQ2AO?= =?us-ascii?Q?pH7t4Y7YJFhcv6m2DUmFIuqp/Lu/RlQvazua1IDeTemENnQMleGlUFU0BgQT?= =?us-ascii?Q?p08PjRf5ssJQnNIi2uWFQMUyaJlxhrjz+1oLkr0cm0ZPOvCx/MpJ6xumIvJC?= =?us-ascii?Q?9Yw/qsjohmCOxzEh5cL+20Vca/y88G8DNBLyz3Wt80SYwEt7yIUAYhjWFJVM?= =?us-ascii?Q?kuXZhDcgdZO4lYvX4nGbBzkJXUyXXtmMq9suSA85mlUD6W6ZwUlYlr9OhSJ8?= =?us-ascii?Q?uQuyUDnh4hDlWURch8XLL24i0cnO3unbwR2rwDg5JB28yTYnK4oHe/OtDhZC?= =?us-ascii?Q?WurHB+CUNeu2MYgy3VhRZGKR5ggWekqaplly7r6UW0/Yb1osMIInAz44411H?= =?us-ascii?Q?Mfx9wlMJ2FrKZ/IyerW2Ah2pubed53wc2VfNVHDduS4MeZg3ee0sdBDIOaAT?= =?us-ascii?Q?BKLxJgoeZjZ1gNKTFws1uIudQhezyVKiKNY5qkG4HNUN+DbGUDF54YmjGpRB?= =?us-ascii?Q?oaUu/VQyTtuDZSfpozxLx59HIYPpAf/7d5i7xPIuf6uaO4hNH1fO4DAVAgPm?= =?us-ascii?Q?sr+T4pj8QX+8PTl5JQTDP3Y4oxfr2++zaaaA17LsYDAWKNAUtn22A7AXouVi?= =?us-ascii?Q?pGaiG22oBfKJ/scatCP6PCBCKXmDRKOD7uvfwN6zN0uHNG97gx0tDsjxx8hZ?= =?us-ascii?Q?qEmoDxYsuRsShym8Z5rkwhwUe8WFY9fBOWhmhjrONdXJpZqnDJ7ZC+iFWmpc?= =?us-ascii?Q?sR1fBU0KrpIOR7ebB9nCGuwVmYjVUOEE/jKBTSVXx/9nr93Z2ZrHytXjf4yw?= =?us-ascii?Q?ZYc2GMbynPV+dEeeS2di4Ncaw4QXgEwlEhIAg4hSeWFogndNqNDphTggn7CI?= =?us-ascii?Q?MIuKJW7+cT3X0cAyJD3vxAGdODXQYbwbA9vyjGjci6vVAdXj0ab3hKJdy2/U?= =?us-ascii?Q?kG21/slFLF6AlJaD9KY4IbddD/+WMYzaL8lop5FUwIyB3koUgqf5lwTmxYGM?= =?us-ascii?Q?8nfZbgI6udMeljyRdZ0+Kuy5?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: e6a956c1-d29d-44dc-6f96-08d92bf7d15c X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:09:22.0292 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: v/fvnhuSkSSERbkY0PckeyyYHl9RjJPpAQ4k/mnfBv9dQaA02JE8Q1pZa+VL1MJzRO5qGlnZR1Y8X0r93GMZgrTsNliJwbVA6KLvVcAzmFg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6806 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.1.92; envelope-from=vsementsov@virtuozzo.com; helo=EUR02-HE1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" We already have two similar helpers for other state. Let's add another one for convenience. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- block/nbd.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index 5e7e238b47..5cfb749e08 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -122,15 +122,20 @@ static void nbd_clear_bdrvstate(BlockDriverState *bs) s->x_dirty_bitmap =3D NULL; } =20 +static bool nbd_client_connected(BDRVNBDState *s) +{ + return qatomic_load_acquire(&s->state) =3D=3D NBD_CLIENT_CONNECTED; +} + static void nbd_channel_error(BDRVNBDState *s, int ret) { if (ret =3D=3D -EIO) { - if (qatomic_load_acquire(&s->state) =3D=3D NBD_CLIENT_CONNECTED) { + if (nbd_client_connected(s)) { s->state =3D s->reconnect_delay ? NBD_CLIENT_CONNECTING_WAIT : NBD_CLIENT_CONNECTING_NOWAIT; } } else { - if (qatomic_load_acquire(&s->state) =3D=3D NBD_CLIENT_CONNECTED) { + if (nbd_client_connected(s)) { qio_channel_shutdown(s->ioc, QIO_CHANNEL_SHUTDOWN_BOTH, NULL); } s->state =3D NBD_CLIENT_QUIT; @@ -228,7 +233,7 @@ static void nbd_client_attach_aio_context(BlockDriverSt= ate *bs, * s->connection_co is either yielded from nbd_receive_reply or from * nbd_co_reconnect_loop() */ - if (qatomic_load_acquire(&s->state) =3D=3D NBD_CLIENT_CONNECTED) { + if (nbd_client_connected(s)) { qio_channel_attach_aio_context(QIO_CHANNEL(s->ioc), new_context); } =20 @@ -499,7 +504,7 @@ static coroutine_fn void nbd_connection_entry(void *opa= que) nbd_co_reconnect_loop(s); } =20 - if (qatomic_load_acquire(&s->state) !=3D NBD_CLIENT_CONNECTED) { + if (!nbd_client_connected(s)) { continue; } =20 @@ -578,7 +583,7 @@ static int nbd_co_send_request(BlockDriverState *bs, qemu_co_queue_wait(&s->free_sema, &s->send_mutex); } =20 - if (qatomic_load_acquire(&s->state) !=3D NBD_CLIENT_CONNECTED) { + if (!nbd_client_connected(s)) { rc =3D -EIO; goto err; } @@ -605,8 +610,7 @@ static int nbd_co_send_request(BlockDriverState *bs, if (qiov) { qio_channel_set_cork(s->ioc, true); rc =3D nbd_send_request(s->ioc, request); - if (qatomic_load_acquire(&s->state) =3D=3D NBD_CLIENT_CONNECTED && - rc >=3D 0) { + if (nbd_client_connected(s) && rc >=3D 0) { if (qio_channel_writev_all(s->ioc, qiov->iov, qiov->niov, NULL) < 0) { rc =3D -EIO; @@ -931,7 +935,7 @@ static coroutine_fn int nbd_co_do_receive_one_chunk( s->requests[i].receiving =3D true; qemu_coroutine_yield(); s->requests[i].receiving =3D false; - if (qatomic_load_acquire(&s->state) !=3D NBD_CLIENT_CONNECTED) { + if (!nbd_client_connected(s)) { error_setg(errp, "Connection closed"); return -EIO; } @@ -1090,7 +1094,7 @@ static bool nbd_reply_chunk_iter_receive(BDRVNBDState= *s, NBDReply local_reply; NBDStructuredReplyChunk *chunk; Error *local_err =3D NULL; - if (qatomic_load_acquire(&s->state) !=3D NBD_CLIENT_CONNECTED) { + if (!nbd_client_connected(s)) { error_setg(&local_err, "Connection closed"); nbd_iter_channel_error(iter, -EIO, &local_err); goto break_loop; @@ -1115,8 +1119,7 @@ static bool nbd_reply_chunk_iter_receive(BDRVNBDState= *s, } =20 /* Do not execute the body of NBD_FOREACH_REPLY_CHUNK for simple reply= . */ - if (nbd_reply_is_simple(reply) || - qatomic_load_acquire(&s->state) !=3D NBD_CLIENT_CONNECTED) { + if (nbd_reply_is_simple(reply) || !nbd_client_connected(s)) { goto break_loop; } =20 --=20 2.29.2 From nobody Thu Apr 25 21:19:18 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1623321493; cv=pass; d=zohomail.com; s=zohoarc; b=BdPhCx08xTnx38oaOvPoPYPQzLZ+pbnY4YyoOQgzKcwS07DRlwmTEs8XnxLPndF2H/TuYPIVaPxB5iqGt3DJEL2mBmtuyBmgnwM23aGg7xkZWomy4zIZylClOlUAbtD2dOzVZ3wSyDUKEB2RcC/qWwn00WErmlUaDBDqMx5sisM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623321493; h=Content-Type:Content-Transfer-Encoding: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=XiWfvx/qPjuzWzxF3Dw9i2QEBqemCyDAWdRisvyleBY=; b=j1dkbuvUDlhhmqbcBhyyd4yy9M7sDKAfHWcSyFnTRiXovuXk3eYb4sQv38QpM5riw7k/vjNxgbUJvS8AgWhz3g0O5AAwfOrNoire6lRARJgMOXmTKJqKcCSMvs71Iy4taom+Jc/vyDEqSjSbG1cgHHJWwDuwyXURlVelmDZux4s= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623321493925508.5726283446469; Thu, 10 Jun 2021 03:38:13 -0700 (PDT) Received: from localhost ([::1]:41688 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrI4i-0000V8-SX for importer2@patchew.org; Thu, 10 Jun 2021 06:38:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45378) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHdN-0007CH-DT; Thu, 10 Jun 2021 06:09:57 -0400 Received: from mail-eopbgr60127.outbound.protection.outlook.com ([40.107.6.127]:21154 helo=EUR04-DB3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrHdL-0005b1-KG; Thu, 10 Jun 2021 06:09:57 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.22; Thu, 10 Jun 2021 10:09:53 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 10:09:53 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Thu, 10 Jun 2021 10:09:22 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NVp/anu15VMS6DNSXRg6kLW5D6BsrgsAnw6EftcWOfxs/+OarEz8bB9roB6j0itWH5+xz2nYUX9AiUYYoCSVlZdIA1nxWN6puPwCmonwq9x3quNzu6GiA+ws+1eTFqe5ALn9BZbwmJgh4khUNZ/pZ0cpquOuEymYWFjQKOvFKDhzkC7IP6NU7jz0n1i16Pgf3moMeeWUfqPJBVu6oLDh9umZIwrdCD3/gzG1LcjG/kCZcCsLfOf81iHepOES72a4ZMiRdeJNbBraxEOkeans+tt8S5HYfv1ofdwTZX6d2QFNZsV1fUtF8dR+Ux2VkmH4RyDG/d2AerK7ODk/nAs96A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XiWfvx/qPjuzWzxF3Dw9i2QEBqemCyDAWdRisvyleBY=; b=a1sGADNR9GNfR6LkyJYxNF+JhrMO0QgB1JulL2c8i61+dFfJvWCqBO+1mk5A+CsoRfc9hXc6AtTqPTolKnKwMGp1FwKIEa4+LVX/y3mREi4fQCLLlWqKw2P0HgsmyaR3nxOJGURxxgGgp4/aQzjO6vroDidvWbIIBS8edK//Pbkj1pc+NdP3YznA0oWl1ldC1aY28iprNv18fjOVqjYp3FrYlmZ543zEok/IPftkZGsuHYRsbkb6vX4B5hnLQbsN8yQTg3tjg1leFRg3c/QRq5LuHUZjgWfvCZtFu2Q/6Jb6RwQCTgOUHzXg7mYI+oui7K8VyWI5krj0bRLTdp5H1Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XiWfvx/qPjuzWzxF3Dw9i2QEBqemCyDAWdRisvyleBY=; b=ZInI8XdmMY5I9S8jV45ojQGFtc6cUuogZDTqTYABggKiZkpRW9wo30nQGF8zRv/xXiHaebJkFrpR5LQ8uzWQmGYi1/oWeX98kJH04biTbrX2sW4CMzHoC3+8DUbJgmO93sJjknTcfCRXouYv4CyGD0c/v0hHqxXp/Iw5RPsONzg= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, eblake@redhat.com, mreitz@redhat.com, kwolf@redhat.com, pbonzini@redhat.com Subject: [PATCH v4 32/32] block/nbd: safer transition to receiving request Date: Thu, 10 Jun 2021 13:08:02 +0300 Message-Id: <20210610100802.5888-33-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610100802.5888-1-vsementsov@virtuozzo.com> References: <20210610100802.5888-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1P192CA0020.EURP192.PROD.OUTLOOK.COM (2603:10a6:3:fe::30) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 787fcd65-6ad1-44ec-cd15-08d92bf7d1fb X-MS-TrafficTypeDiagnostic: AS8PR08MB6806: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:446; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GLWwuB18WY9wN1sfsg1wgRkFqZDREbGxzkIhgmOqLaiEPDW7RHe1n7V/2R6sX+nWgIi4176h1kzgbQ/A7G131PPhszshpzFGCp4Eeul2pu983iJ3VKe5ibXLY+Ta5RDJbiQSUfcOHJsS9jghN42yfl7UwKBj1grSEsgbvw0/12UouOKDn5klddvRFpn6yAWeduuy2KIoluFDCFcayFUvVSOjlKs2/9ZEPRFe6m6QYJ4oa+StBdN/Iatm6m8HM36Q8qPTyDSvi4BLUnZiCfH1EhpLxJ3NREavhNDBiZvd4hpWF0n1r+ELUdSUAEglGBFq57r/66nK0qnIYjTZ673m76RpDA3oLwh7cIu71sUPFe/7Lz+298LKGFt3fQnAYD2ZgiLIIEJzmdeQghX+aEAlyxNANlB6AjBOMffjnHG3KMLAGY2j9YBS5Mwof8edl9ftLCRB1/Rs/fHxZ2M1UP85OyNyzidy5P/IR3ltuYburi7Bz1PfvUUcwzK1nhiiWVGUBiz75bq7vy6oHsOBcRxP6CAvGsDmIw2YhBFJ1sGLkddRlVoVpyr75ZGMAlGNGps8iS5vGpuFNQCnVXzgDPnSlhBN/mRrjG7bglqT9pa07NzHto5OHYyhhhj6ouysON4H1ISM86/E7VicHtg6xlMtfP3ulhWCfvwyWxOzm+r2MLfAMZQPkCF+oGOL3UfCkgyy X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(366004)(39840400004)(376002)(396003)(346002)(2616005)(2906002)(316002)(6512007)(5660300002)(8676002)(1076003)(8936002)(956004)(6506007)(86362001)(66556008)(38350700002)(16526019)(186003)(66476007)(478600001)(6486002)(6666004)(4326008)(38100700002)(26005)(66946007)(6916009)(52116002)(83380400001)(36756003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?/izKs9RdxAaeiHBpff8PeLIb51p25kPjy2at+BAxIeWJ23eFRlNYEFG5DLSq?= =?us-ascii?Q?DlbpFLbtoCVEnPRERwctNcrl2BHUE7AJ5IT6SdNvb23pUfVfOA/0hhPhaoip?= =?us-ascii?Q?OUZIzGTZq3wFWlyd+9G6Eaa9It/b9r5WKXWyM3QnErf+gvcKA+G3RoUR/FIp?= =?us-ascii?Q?IcuuoxIA4TPsWz0hqmd2nzbXmVQ2UyfR7dmRw8K59FPaQn8KjuZjlQkfDNnM?= =?us-ascii?Q?Vqc8JWExnbm6fFP+KZNNAc5dgPNk9LN4VmIqVm+QTSaNx4Xn/STxvkPgidtT?= =?us-ascii?Q?49sk9rlWpCkNGel/FWSsURiGWS9znSXE8AIgY+Gsip+cYv145T39JH17JhBq?= =?us-ascii?Q?LkHO+90C1sczTNTVX4sxHpPIt1fQZi73ldgn+3DQiqWkftmhghOgRGmsgpXm?= =?us-ascii?Q?BtkeOljEmJ7Xab4/hy5y0+4HxxeC3FcXzseHFu8/qVityA4Glzxqi3R8hz/Q?= =?us-ascii?Q?kIa9xxD6MQqbl6u9W/rlJW97yG77cY563PWcaJWsp7832MlBjD9Ag48Htgcn?= =?us-ascii?Q?vU20XySLIek8CMtDHeUyErzwleOenbm+cTk5LQ82vHc3Xf/8uK0odjecPf8M?= =?us-ascii?Q?OivD86sj5BO8BKVzyPabRE0PG1K6quc77f631Sw9vzeqqnynhVOxQSRKFinr?= =?us-ascii?Q?H3HbP9FIggN/WAnxEog5eZ+Lv31+jytXFQjkEHgZtl4Lfa/nm7/e9N6XbtmQ?= =?us-ascii?Q?WC21BSlEMWXDFr//jRxijFAu/EywyvR09lvWdplXCcPXOoWLsaxEtQ7ab/cT?= =?us-ascii?Q?MOS2n1YGB9erqZeSW0Dh9o8xHz2KaF56Iwee7fxWo4Q8ol2ktqyjpe5U/ZD2?= =?us-ascii?Q?RYnlPyndTilPqMMqOy0Ypl0quH8JIZtICkmdSTuFUiinozFYT7MPYcx4bnB8?= =?us-ascii?Q?WTxaxjxp3ia1X9k6W8CdHXGy3Vql/MpqPC7pSGpXXf75zXUbn9Qk6jpOotmE?= =?us-ascii?Q?vDVEM20znXgFnSKT1nlvLHbNoBkiGdGpX3yygW3WHrrbgitv+D4TdqX+HL0R?= =?us-ascii?Q?PF3zoCS6BmwULQ40UnyjazPx1BaXSYMEulFVAR6mqUJTfQACI7o5To30v4o4?= =?us-ascii?Q?LuvmEkm9gGrAxsqlhxIaG7M8WkBGW8BGM/VSWtEi8fsZoATMyiJEoa4vpIUy?= =?us-ascii?Q?K2+evQOrlBKvmID74QlFZo3bM75no61OGLY1rfxP1iLUPrAJTdJUF6p3R28T?= =?us-ascii?Q?msTG1uUHkUYXDmcahl6GGWtDg5UglP298vTD5Th++5wWx9iF2DQ1JlzJk7TJ?= =?us-ascii?Q?1MVFLaJeHW7+47guuReSctugGnkgjp6aMwDSoEmcgeDQ/GKJiFROT7Fs2C10?= =?us-ascii?Q?o2i5BYFMH8mvKkAYuhdb/avI?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 787fcd65-6ad1-44ec-cd15-08d92bf7d1fb X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 10:09:23.1075 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: s11ntUznXvq8lIaPkQO8Sb18uShvT9K8Dor4DNUU+ZAjpeiOhtyTr4GfcTzBL6Br6ye+Q1GEcuM/R288j6hoGipeIyPgYNdgOBgGFhpxCa0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6806 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.6.127; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-DB3-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" req->receiving is a flag of request being in one concrete yield point in nbd_co_do_receive_one_chunk(). Such kind of boolean flag is always better to unset before scheduling the coroutine, to avoid double scheduling. So, let's be more careful. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- block/nbd.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/block/nbd.c b/block/nbd.c index 5cfb749e08..3cbee762de 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -150,6 +150,7 @@ static void nbd_recv_coroutines_wake_all(BDRVNBDState *= s) NBDClientRequest *req =3D &s->requests[i]; =20 if (req->coroutine && req->receiving) { + req->receiving =3D false; aio_co_wake(req->coroutine); } } @@ -548,6 +549,7 @@ static coroutine_fn void nbd_connection_entry(void *opa= que) * connection_co happens through a bottom half, which can only * run after we yield. */ + s->requests[i].receiving =3D false; aio_co_wake(s->requests[i].coroutine); qemu_coroutine_yield(); } @@ -934,7 +936,7 @@ static coroutine_fn int nbd_co_do_receive_one_chunk( /* Wait until we're woken up by nbd_connection_entry. */ s->requests[i].receiving =3D true; qemu_coroutine_yield(); - s->requests[i].receiving =3D false; + assert(!s->requests[i].receiving); if (!nbd_client_connected(s)) { error_setg(errp, "Connection closed"); return -EIO; --=20 2.29.2