From nobody Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618560696; cv=pass; d=zohomail.com; s=zohoarc; b=ELAPLi9+yX8rJ7j7Lj/YKyX5XWMnTczfYqY7THHdGLBuVjeC69pBp/vXu1YV2sMZPgDP0V/PdarUYpY7OxzqUikWN4Lm30jBDzw20+RBiatY2AC48n/o5yD1dRnxTgYcBni/Im8glRtm7Hqp0GYhD8xtxhLQogDXMMlruvtM3kw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618560696; 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=ZFn2VRR5obdBQ/WU4iiKph9dBhIKncsMyfVcBHqUhTA=; b=F98r/cQAPCbdHLgsu/Dz3HC9zMuWf/tz1KS+1VI6OYVKPQTe83WumGP+UP8XE2WdfAasnewz7qNEUoXQg/9eZCKr/U1NH/qJF7yadIEwA9K2xmghafe6msNTWYJ58njUjYEdnd0By7wyxgqBfv/RXo/6oGVazq3T05nX5NnDxPE= 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+importer=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 1618560695794545.8062426281815; Fri, 16 Apr 2021 01:11:35 -0700 (PDT) Received: from localhost ([::1]:39840 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJZd-0002u3-PE for importer@patchew.org; Fri, 16 Apr 2021 04:11:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57514) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJXi-0000uf-3Y; Fri, 16 Apr 2021 04:09:34 -0400 Received: from mail-eopbgr80121.outbound.protection.outlook.com ([40.107.8.121]:41299 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 1lXJXe-0007qY-NO; Fri, 16 Apr 2021 04:09:33 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB5078.eurprd08.prod.outlook.com (2603:10a6:20b:e7::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.19; Fri, 16 Apr 2021 08:09:27 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:09:27 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:09:26 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=H5F4yLvDOrEuCEJwxCyB9SPLIQ47AWh0lgp65+vnZWSBQFck0iFas5pjJO1lX1IQNwZIgImU3TP180omXZcPWzYe/Ak4ySrUMmIzdKCbjzACdzz6zrTmJ6zAkHlhh3MXkR9KqX4Pwzkjdu64QWiVL+KQ1WSMndxsnuQOBMFoFUuJIXfwO8ZhznmJ4L1Psl8YQ/YznpsxgondnGYjnxbm4HY/d2uHq39/MAX3X9pdwoojwAMM6Mqf9FzOi8c4Em0733msqTj8zGSVgFwmJA/hclSQTq8VMqyqfFOL868VUc3v4ACH8ASxm1qzNrPCyGQfPK07iqDj85Ac3PpGKeUXTQ== 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=ZFn2VRR5obdBQ/WU4iiKph9dBhIKncsMyfVcBHqUhTA=; b=A5AcDcoVGhxSgdUh7KWNommDtR/RWq/uNKeE09icUjpKLNNvzg2zUwKWdUfm50aNksm9rKyFs8oyWZNjFYzgVoNq5JdOW7sv24uSnKo8Hu9jyYG0RJF3z3d/uwUQt0/ilJ+I0/BTBXTnC5VNdbpDpEiWMnYjWW+4fchLl1y5s8y5qTrZR0c0rTyFRkvO3w4yCIRBYV0b3YBdc05IqLvdfzGFogPvooZmYZUSuUnPLGT4foN3tnP7AjSKo6Vcj7YGJ7ZyLldehop1LdN56Yv7EhhsLXmpeTSRMwFlbSYFAKfl7MU5TELMaHWLV3PwzPT6lGhaEVxrgeh63jH9cMEePw== 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=ZFn2VRR5obdBQ/WU4iiKph9dBhIKncsMyfVcBHqUhTA=; b=diy4ZV0tPjYu6llSeU1yICSTsEZFHbQ6I4cRFJuuXF4VfZMBy2izgCzGHS5kyrzvmdLlc7bm5Txnk+h2SHmFhaiKETn8Mlx1Kt2bqotLMuT0ov4Otp/Uul5iM1oq8SMvBSHl5391ssrIwQWbeCBHOkwkcf2xeqJWi0B/p6zx9bk= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 01/33] block/nbd: fix channel object leak Date: Fri, 16 Apr 2021 11:08:39 +0300 Message-Id: <20210416080911.83197-2-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: 98f8d159-1982-40f4-2597-08d900aef45c X-MS-TrafficTypeDiagnostic: AM6PR08MB5078: 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: ggNyEw6glhQNLvuqiN2y8yxCa5HR8HJHt9JmyEXNUAwXZHKhf4jFkeeOK6zSVr0NxLB59dlK+cQj6FFGePpq/4W46S4roNZ5/wYUVKYPyT1W4HJCpQYaUajP00aYtBxFVhiaj/P0wZbzbGQ0B5nIjfPGKyWNx5UbHxXt7+dTyXVK52DphNK7wgZFaQLmEVKIpMVkOz8hlLdB438JJh3RGk4KlUEdYhu1aGjxHgvydzcSJCG/m3grlpID7xwroYYsEOu2tdyFWSYNu8aa9WQ62GtsU4LrfjkVcpyaBiU71yno4v8cbutFYgGiuUwLzqbua0RhBPxO/7SGJDXDGsnbQtRTQzoxvu7jFRSMSmlhnZ3T1Tb2lve64oWcNesUY3aIxRCon21/saedVDk3UiaqOVaQE3TdWUiySH3SCO5988lK5ScXyHKuj/1fJKHQTglUZoVDrX2lyEINHxanQWypYVFptceGac+5esw5I//sDmUWmQxySAZJoiDjIZlMuA8ohYpELPRgFwxGGBrDAqR7ibPQ+mktkbAmPYmHbI3mARuL/JjBDr5zs/sYuyV1CytGWo9rcqcoeGoe3mKfSblc0Ecl7JjA2irM1bvgNhlLSYyJ+9Syv2BhQco1203cDB28cH3YnP5mv9YiEGIMwN0dYzr+dIR2HrMhADs5L1dA3Adf6csDvVg4uOz9X8Qegry4 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)(346002)(396003)(136003)(376002)(39840400004)(366004)(86362001)(36756003)(2616005)(66476007)(66946007)(66556008)(26005)(16526019)(6916009)(2906002)(6666004)(5660300002)(69590400012)(107886003)(186003)(4326008)(6506007)(316002)(478600001)(8676002)(8936002)(38350700002)(1076003)(4744005)(6486002)(83380400001)(956004)(52116002)(38100700002)(6512007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?ZOKmlpiuL+dRa6S9n4Q5PmOhe/h7HYyUGREMaNrnAhvxJMBmt4aZ9EFJ+f1B?= =?us-ascii?Q?2FlW8EFbO9Ttg5MPanJHT0ZBqrqLLozaWdzMMCryNC4OJ8OCsMZJltXceHdv?= =?us-ascii?Q?gh2kKZYF4iEeqqX1cTzWRK2kpzG5+dJeGLZ37MkqnEmvd8K3l4U1CH4Da/cY?= =?us-ascii?Q?0YYraSgXBLbj/w4Yx2EP2xssZlJZjUFc/vEr+8A9t8IPNuAdk920S6Ol58nR?= =?us-ascii?Q?9YQMdLxIJNaMp1Fr0VDtGJ7bsakDbqr7yYjNZCCG0cHnaDxkPfWYAthKQb0V?= =?us-ascii?Q?ZO/1NgDURnd6Svn3lMwtb+jwQn8M8vE+rIUbBnAIee49XYNbPljxK+GVbgZx?= =?us-ascii?Q?0tjosy6EB34luV4x5Aea29z0qkIfI7jywU8jE8hY+55Z3ZMoP98hVcsdgYXu?= =?us-ascii?Q?emmaFVx+EAGLfj4K36WT55BHGi9+OkvoXWb6JhGy+M9/cHhdUKWS7Uvndkeq?= =?us-ascii?Q?ta1yVJarlxsxijw/ID2nRid5WsSX4qnxBim/hpRVkCYqY0+xhZmZppLN2IUv?= =?us-ascii?Q?8e+tCbOqmFeE3/GbKiHJkUy0Qnw+3CfgeYSVSDJmDkLZShnZWzXdCyWf9tBs?= =?us-ascii?Q?82OuAbY+eSRBCFDG6KyPQXMyTAulsRI/BePraJVGS1zLzloZEsWcC9ioh4Ap?= =?us-ascii?Q?IJ53/8FS5mOaYzE6Oo4knFb2DQu8+V8olivnSuTd5GUcWsivjNvKKv5L6uKe?= =?us-ascii?Q?m5aQPlqvO/6fK8vKxBCs2TltlxCb0tlymtv/SWsZMAuKgmZUfDZAPsGbMmd9?= =?us-ascii?Q?EPIsB65UpAydvKjSlPFzUtoFVC6bnBDSc57sQKnDKwLvYJoYhLCCM55ev4b8?= =?us-ascii?Q?6xYKgtLVT7v01LazIhh3Up8jO7gPOPY25PlTTU6ReTwAbac+fDgQxt6huoJc?= =?us-ascii?Q?NmTbEA0aWQevWMeG03DoGCJhLCwFBLJek1Zs8JqOSMw1N/rTg24vbWretTAs?= =?us-ascii?Q?kvNXMKocDrlgiqqVbMzu4XcB1t9wh27RT6CqO/HTMT6RJtjKOw5On4DAPkMf?= =?us-ascii?Q?BBYhrRudHFEmQYMeWH8sHRZCwJeikSX2faVv2+z4jgfYW880eMNTF2MTbHuu?= =?us-ascii?Q?1CYkwnSoezWQWV3tB4CXbXlPi84UQlm/Fk3CUiYO9SFNYaiadKkC5FEHsAo8?= =?us-ascii?Q?ts9xJ4iTTVcsEcRM7ZQXW3wovsM9pis/62n9tMvPLYtTQXTIDAnOjpn0p5fv?= =?us-ascii?Q?wyKaO8mVlDmSSJ9xAgvTkoCCKVRalKsS2z48xjysUCYIWTfRCUwVN0yjqHn1?= =?us-ascii?Q?UXGDzobsn6rOb0a7l/En4uLZQFJ//A1HzeGxHuAWWEMZHtW2krrtrQ0s8Dt4?= =?us-ascii?Q?jV/8HQl26o6QDneXnU3x9I7M?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 98f8d159-1982-40f4-2597-08d900aef45c X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:09:27.5307 (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: cDPKt2hx1q7ch9L9Bopq/3QpJxn3k2zlo9klp7wM3paL78IFONbmkr7QUJxjg14UPHC7/Mxrv923MKCz1L/xzsFYNQwEv5oRNavXGySsSlE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB5078 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.121; 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+importer=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 1d4668d42d..739ae2941f 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -385,6 +385,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 Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618560713; cv=pass; d=zohomail.com; s=zohoarc; b=j0M4IBOjvtzmgyVY6Qn73wQtVJ4KODMPzSoD8qr8yvDXaFoNN0H8DV/qtC980ekUseB/O0P/QboX9SGUzb9E6c+t0pTboTc3YmcwICa/xcAZ4sodMjZxH9X87aCEJQabuXZaoVu7th5T0HikVeI4h8n9mx3ebv7OQ9gU53I8c0c= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618560713; 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=flumK7XkgH6DsGtYEBs5mD3VZdy3SbZPm/chEAOy1HQ=; b=CCFy2wdf9Xbf9nOtBqMuRHA+QP3b9BHrkiWB9sIIqo8u7C7b+xPz71tcdinlCtaD9IqtuvwM7jg6W4F3Pbl/LbdUWZDJt5R9ZiIsB7adSXM0AzzhEyd2EbuMiZJSMFoIBCRTM7Dg5V6c6D2sfXMl2Rm7m85ICIcSfHHtxxFkD30= 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+importer=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 161856071376256.83659285108968; Fri, 16 Apr 2021 01:11:53 -0700 (PDT) Received: from localhost ([::1]:40090 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJZw-00030C-P6 for importer@patchew.org; Fri, 16 Apr 2021 04:11:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57526) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJXk-0000vx-6i; Fri, 16 Apr 2021 04:09:36 -0400 Received: from mail-eopbgr80121.outbound.protection.outlook.com ([40.107.8.121]:41299 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 1lXJXi-0007qY-Fz; Fri, 16 Apr 2021 04:09:35 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB5078.eurprd08.prod.outlook.com (2603:10a6:20b:e7::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.19; Fri, 16 Apr 2021 08:09:29 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:09:29 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:09:27 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=C7SvFsxN5gsz4dBwvEXVHK4jRpghOJ4ubC4jgVSRTULSvj0u2xH5TIesJ0B68BJXvQ/S0Q2Gt0/24pMwjpbvpCfmmo9sUO4FpxBQEy2kOySC4JXhahQLIZ64cZjz3eueKnJAtgVfKE826s6Lcg790qlC6n2HRIgjxhzO2DC1edXNSdwuGpEAsrnb4Csg+d60PwPZPOX08TlF0XnqEDX1rYSEmrsl/lC4MPZ5Uiamerps70nT6dgXI19zLFaLEvc+k2HlyfmI8e1IPQYaaKQYtWX9nGxYIqIVPLZ7PWaE24SOQ9m7Cw0DriVP/19vlapDBhtfs/BDgtZW51LSm3KUcA== 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=flumK7XkgH6DsGtYEBs5mD3VZdy3SbZPm/chEAOy1HQ=; b=M+a9Hh1nywaKPsTNyKqMUJoNAj6igMT6LjXPqgYioSwxsrYoQ+Toory4iv8GK4nGIwPAfwSCYHmPIL/SmUoY8QG5rXUgeA94gCWJtDqc8FZqPap/Ln3FgKFTX6doat/QBbKZ7cQwxUFXBU2yfdUhP7scQdpD0tJuwq111F3RKHo2DLL9H92G2AOY6DyD9OuTk6IWX2XzL3uTznu4DF1FhwYh1bCC8dSWWHN4WK0NW75lJSBNMo6/Y8YuYvSxpPbEUviSBlG1f/tpPJPxRS8Stm9r36NPQ8VZIVGtFNHkYZDjSscsPckHY47gZaZ7tGvP0PgybYOPsxReh/6CSz+cIw== 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=flumK7XkgH6DsGtYEBs5mD3VZdy3SbZPm/chEAOy1HQ=; b=i68HDUlvGWns52j7ByVzcvVKs5Onv8r/1qjNWE7yANj5j6RBuLNXBHYMzObENu5CDpKSoyMR8CJpcv2qRc0I/jai7GHv1t7574O4cGyYYsfTK0zGfVRfI0LKSzKHsVcXIxEA9id2igQQwjKQHPqU9Zlwt+xgnmufmIfb9oBnTP0= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 02/33] block/nbd: fix how state is cleared on nbd_open() failure paths Date: Fri, 16 Apr 2021 11:08:40 +0300 Message-Id: <20210416080911.83197-3-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: efbdd91d-452b-41d2-981b-08d900aef525 X-MS-TrafficTypeDiagnostic: AM6PR08MB5078: 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: rwMNyLzgsWJLBjGA8O/omyIbknspqGyoxyCgHec2ahvv7Bh5JCNtt/0728/7dNu3zWlsWUfK5dXQkUgTRFTcxCbWNaqnDqeU+zibAE4eOre2a2g9vmM165dVNubWZ9nozdipY7gW5ZknvhCbu2jXfN5NE8sbVlHLQh4uW3dgep7UE87EyuE54qDkp8CS5xpqXsAs18z2B9Y2eymQ5uO39WHDJwDAWsHmbPv4OAKA4is4kPMGy4/ish6Y5F8X4Juyk2WoGHgRMHwz+RxErpWbt+tdQ40iRSZ6VNGRGOs6JUcncuNAW+Wwq+12rGzLE5bDh3uU8S3MXN71Ox6wsWiWtjRFbPvBA6bmjos3FIEsaz/fBCY6QETWlHxqu7/GswWmcg7fGC7Eyc8OeHf44qc3HoedIYS2H7t4gAFJip0Kxny32cr3gIuV41EprL9EPWehHS3AKAD06+hvfS8jQKBLYz25c5CIic6TDTLb8qx3TvZaUuTj7Iwr1BpFU43jim0OQUt/UpeJDvPLsbIXbhCWa+CCILOGMO0KKxf7jlNMZcTQzwlFNslyQ2OOkUz+VSDYWnWrrqQvF7fADigZZ7pT5rqoeGytqh/hTlZHZc34Q2dYAadaEOl5OVpTV4DGDnY6EvpOZK3cDAGAdUdjmhYmaKLb/eHgi7OSwohy1zIdOQcx2upj2Yb2TssH7iEwgkhn 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)(346002)(396003)(136003)(376002)(39840400004)(366004)(86362001)(36756003)(2616005)(66476007)(66946007)(66556008)(26005)(16526019)(6916009)(2906002)(6666004)(5660300002)(69590400012)(107886003)(186003)(4326008)(6506007)(316002)(478600001)(8676002)(8936002)(38350700002)(1076003)(6486002)(83380400001)(956004)(52116002)(38100700002)(6512007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?ciBOlM0rxXIRwAJy0IG44jq2Dr6I78NBkhPD9FY7XKFCzZDWrEZzHZOTEYs/?= =?us-ascii?Q?XS4EHhzcSmlj8VlbZ5YpO4JnSUZkp33nhvN1D6EDNL+gHABlm6IB11oDKDmY?= =?us-ascii?Q?7y4Gc1Lipad4R5x4YqpV554dqy1Rb71uWxbl0wT4gJS6E1COeIBBgjxiYexL?= =?us-ascii?Q?8A+RyejEOdGDwQ2JBdzZop2erEbSRLAvs46pJU3RenjIgz91wjDMxSXrg3fK?= =?us-ascii?Q?oA5LxZ670ODOpyv7ndsJ2u92EOOWxyB+k+Y34UpF5FwOeR32r8Ivi6VPwvt0?= =?us-ascii?Q?I5Xw65b7LhrTqs+sj/ggVVb9KiFvYQbppogM0BN8vcy5Y2Y8TNd2F1VNYK0e?= =?us-ascii?Q?amZDeZbqaxL2dyS69I6mhVS0g1qaa6lFP6genCCIFThxxqWXMi1iU73C1JSr?= =?us-ascii?Q?hlMMuc2PN7wGDxE6Ej1kXhDNRLNs7wuq4QsI76hewO5gCi7MF7/kxL+kOyH9?= =?us-ascii?Q?6OUoo5mGFcekSYxpmauTh42zSybdJXCaQUmJ+s+G7ajy6m87MEBzBlpOZaoa?= =?us-ascii?Q?Wu5NhlDu1aFxn4D/sbDgDd9ZAamSaMvpLujjnEVj6YDWQez99bSPhSL5xCHh?= =?us-ascii?Q?LLSJNhuX/bjT8KwBrgNzdLeIKxnQllqPro6rsS/01kWorgcjEEjWKTSyu1h4?= =?us-ascii?Q?aw4D0sSB/kzf511r62h1fJ7kF9rD+BKFgiJW45hyJanHgTWwLqPtNG6/Se7I?= =?us-ascii?Q?UFkUEyfNCWkU+GJTBDHZ2aHKqz9jJ5bkdmM6O/eH+SHTuA+cu/dDFy5vCwsz?= =?us-ascii?Q?4Nk+ccTQ3rVbwpQCgKxco6t5n+9Bytyi2uYUbpcbVq2bKBYqhY7rd9HncjP8?= =?us-ascii?Q?0V/cCvfhiDAUggsMtA1fsKejMHBDm6tqes5582nRoOWzNZGMVzuyxlso/CZD?= =?us-ascii?Q?re6bJBaSKT3cZv+4+3CTpvRnkFgAkplyHYn7W04tK8bxlzmczOUP6YOiOp37?= =?us-ascii?Q?JUBGbjQ4MMKjRTflJkhkaWktFISD/gmZcg4XY+yLLCIEzmNWIg/14PZfufNV?= =?us-ascii?Q?kV9pMh2TkeKtk/b1TBCk56vq4fcExvGHP3xxSYDH2tCVMlEFuhEDEUHB3vgH?= =?us-ascii?Q?I7Bh7uWEHQyNVTBvq51dL6wmu1I+WHB4yUeDG5nQmT+cmNSRck/yk21u6qkC?= =?us-ascii?Q?zKOH6oXIXU4b7LF6e1ZsDMnUVofG6weozIB11IZhZ1a7x3feAa3yigO+qBjs?= =?us-ascii?Q?hysr27xr8tdpbLx5SOkXcfw1NqvgINSy6I/1ipd7lUhefgl6OF/lndQUGIS0?= =?us-ascii?Q?GmAuVFNwgv+1XDD/0z82f+r6Dtm0qNy+xOOINjAfghriiTmzdaZI2RIMorjg?= =?us-ascii?Q?Aw2aJxydndpzK8zdrFZ/7+Zj?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: efbdd91d-452b-41d2-981b-08d900aef525 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:09:28.8519 (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: vJhwo3r6vkD9RwVj96X/EgpaqSzhGVQazR04QzZ1tE20jgqv4VagSVVxLg9MNralntnLbkm9NSD9H0NXBOyXlvajv4N5KbUinOVpKAi7FUo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB5078 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.121; 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+importer=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: Eric Blake Reviewed-by: Roman Kagan --- block/nbd.c | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index 739ae2941f..a407a3814b 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; @@ -2279,9 +2283,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; } @@ -2292,11 +2293,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); @@ -2305,20 +2301,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; @@ -2330,6 +2329,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) @@ -2373,11 +2376,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 Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618561001; cv=pass; d=zohomail.com; s=zohoarc; b=NP/Twh/H9syqFP6lyZRFDyke9DLe7dedg634acmQL9VgxBKOw7swnY1xJevwVDoJD6qrxURnZPg36pqM2B0KrxyKm/t4XBdlhO1UUIokUHVResq8feVcRuwY/aSpOkT/iuK9QpZbFrY9/ZFmirefzb4yQiU4dnC89SGysYPZNjM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618561001; 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=o3rPZzhPaBrd+1olCpj/0fwhxHRsV3WfO54ofj7f91U=; b=KNLdJ3LXHNp+3EzrlsY6ntK+E7hobVnmgCIDiHQ9snTqkP1Bo8Akra6gB7+7fk8eVsfJZpsM+z0ZFTpqJ8pj6LiN9QUgjn8gWpthoqx64YMWTMNNQxWPABrouytjNq12KISJoToz1XuII5zSYNXLTOlhdSGpZ5KDjo8sPw9Ej0M= 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+importer=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 1618561001638891.8526929913904; Fri, 16 Apr 2021 01:16:41 -0700 (PDT) Received: from localhost ([::1]:57404 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJea-0001in-J1 for importer@patchew.org; Fri, 16 Apr 2021 04:16:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57572) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJXo-00015V-7t; Fri, 16 Apr 2021 04:09:40 -0400 Received: from mail-eopbgr80121.outbound.protection.outlook.com ([40.107.8.121]:41299 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 1lXJXm-0007qY-AB; Fri, 16 Apr 2021 04:09:39 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB5078.eurprd08.prod.outlook.com (2603:10a6:20b:e7::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.19; Fri, 16 Apr 2021 08:09:30 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:09:30 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:09:29 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UV47aeC7jDP+CItlRWvVC4ACAdXZ3sej6wHkHyryOv/P7ckdspWG0w6DsPl1FjFlYmV5c6F1A327X5yICqHsOcX3VeM10Vm/oJk1Sdhre1ikzNtGQ8hWmzJj+tv3VNzQukAnz7u/TksSDVJylws21xEYe+QiTMwTUwLr5DgkJe7T+vOyhssJ77CEiPnB7T35mbKwpX7nD0qCkYrZIe1z/kAnywdZmPXAOQSeP7EtWrwPdHZWSlztZ2IWmrFgVegJyKAhVu+4wqbzKHpxobrFjvfEJHZE3mfbJr6TLrKwDgw2b/JxcMS0hDBO+uYARWxvATdx7czfzrgkA5US67cXwg== 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=o3rPZzhPaBrd+1olCpj/0fwhxHRsV3WfO54ofj7f91U=; b=ZCG4haHu0goByjW0RgOzZKkWwVzwAgRxy5fWQ45DTqFl4X0uNlBxO9cZpLawGZquJWF6DEXADLWCP5x63WvOYWwHn65Xkjdqos1lc+9wRE4QCBSqJ6KPA7H+4moPnUO/ecH33xgpp7Jxz6gFlrbfvAU0wH1AeyxEnwmzzlKY9FNxmVdVglF9sDUXC6bhlNeiHf8QI3Spj8GtyJlscNwoItRNkyHPFNssmYH6i2XD60+jb2T1VPtrKSNgtdUZurwokLub75wZ6rUrKTcgkBInJSfH7Rhbtp5gXr24UfgCNg6nYP6roFVdWHmxL/Kx0af8IBl/yaGwupNp86kBG7M2vA== 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=o3rPZzhPaBrd+1olCpj/0fwhxHRsV3WfO54ofj7f91U=; b=hJmeOoa7qmoG7Elvq2vX65981sHISxeIRfP5NQ8WduvEWtS07htH2UQoBXTOSU/dFVM4gqlyZYahJsGQGi/y+IYiLyJZl0xfXEbRukykGQmoGxsK68NVPBH69fLLBw+Sj1Fvf7Tk+f2YBi/eumqKT3tb3W5EzuMKPFhD8lBpwBo= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 03/33] block/nbd: ensure ->connection_thread is always valid Date: Fri, 16 Apr 2021 11:08:41 +0300 Message-Id: <20210416080911.83197-4-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: 4bbd2bb1-75ef-4a05-a62f-08d900aef5ef X-MS-TrafficTypeDiagnostic: AM6PR08MB5078: 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: PmHcZDH9OJKVSRfgfvyjbrBXMxjKJ73Xd2OpTZTYSxHFFeAfrI8kxdwUZlH7yC5ef4wZf6ylFTwVsWkrs9CRfpFyhAETzp9UW/tUke7H66t/wNbJPf3vFIvYRlid7xyZJiqIpI3NJqufI4JJsbW565pU3tT+ccYNvjxfhwOwc/qKWrWhzKYoZWbgmhwYO4kZ+IWCteGrJyf8q2F5p0MB7zE7IrQjmiZE3HV+e0QCXQcxNv7SqudRJjGeaTQ/gYT8Vdww8gO8EkDlhnLmFqmZ/Vqz0Mr9r/vqnN2+fhN8U13pBLJgDw+NqYmWPiL1nAoOE1D94lqp4aMmMgXua19Pyezb2gPQCW5zAOjLbBg1T+MLRpGCTGFFxDdMfbAn0SUrnS3iozY5QGqWg7sfxG8js0CE9a8GXVR36IvybFhAFEh0DiCEgZzjUJAp6H9N2twUnRK0WBTVdobbQ0JF8niZ6v01L4FvR2DMUGZ8E7jgFRTGCV066KLcbPCruQcdl8BJxAcYR9/6bR2ewYqxwesEaoKcKCvnfihSa+Utj4VLT87dKAlUvQQjjTLpTJlpPlgn2i+YoZAqtmLFHxsbXFQR+9/QDXokFcdYdyZInxaqJAZn28uKVGE/OPAy6SLrpc4AzPELbE+89AiwfvHqXcWKdM5nrtD7BQi7YeIg4aBsEem7WxET6xkB5fDCGQw4D0tZ 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)(346002)(396003)(136003)(376002)(39840400004)(366004)(86362001)(36756003)(2616005)(66476007)(66946007)(66556008)(26005)(16526019)(6916009)(2906002)(6666004)(5660300002)(69590400012)(107886003)(186003)(4326008)(6506007)(316002)(478600001)(8676002)(8936002)(38350700002)(1076003)(6486002)(83380400001)(956004)(52116002)(38100700002)(6512007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?qHJAt1GuNC+q7pFtEzrHZR9+r4gZdBj8XE9u14gnN/CI9RzUmdB8tkhVclmS?= =?us-ascii?Q?/nOCqUoYgIZHkpZEhbejjWyaEm3AkxXi3MAYhkHY07vW9t7yU4e+Hkgw3Ozf?= =?us-ascii?Q?cmDlrkGfW/HAxoepPFC2tYczzb9ESRuRd5874jO2DMtF2oSqmvZtbE9+l8Bw?= =?us-ascii?Q?OJ09UeC+VDvg/K89bPD6FFN7wvOjOfOF6R2qikkd7Ly/SCG/sibJKLJSsuSW?= =?us-ascii?Q?8/rU7V8wqnUrEGDyZDKbmBbW3t+E5obIgkQNWnzbHXQIYyEshMFb3f/qcZsH?= =?us-ascii?Q?zM5DTOxZVM+WYPEOPprQj/BKJByPnZ+ilP9W6Bf4HrTs4Gazd84ZRY5oFG/v?= =?us-ascii?Q?ewsV7wbXDsKxaMpnQ7SWTVWbQOedKHAGkm27KQM14uK0HIg+o3cTi4ywp4t8?= =?us-ascii?Q?+qD7jxhiIDsCJ6h+w9poS7GIQVjWE25UBcQ0My57l+T10r7Sn1W/rBewdc4n?= =?us-ascii?Q?INKSgMPicf+tDyWmIpMtrD2CtFyb88PYTRVhnU1T6XPbVso07WYTABQefpFB?= =?us-ascii?Q?tP66G0ushr+5dYXGx8Nnly7zct0jpxR2zoLdRr8SyEl2wGaJg1oBW2yYufqC?= =?us-ascii?Q?YuyHYLbknGOlNr2Zf9+iZUXtRtAfcxoiTBlcyet7D08YjkpyJSg6Rzfucl5E?= =?us-ascii?Q?dN9zeAt1LXViJ69wyUiVPw+ja+7c2FEspE7HJlO/dXplciWqlKlIJGtcJhB2?= =?us-ascii?Q?Bw0+4brXNLDeRfZX6RsjngugPl2FEVvIA+C9OIKpYMqCI/jRSiEQ1sYJnyes?= =?us-ascii?Q?LblKiNQrcyry2VNMQyC27sp7uKZl4O0kjfKjHd2qkECUrWsZ18nylZfVSfh+?= =?us-ascii?Q?NwREPgiSsXqWC1GRardZ0OswWfN/F47JwdIdp6O5EwnhP0lHWK/kLS/uaVQH?= =?us-ascii?Q?1Uf7hcJLEhM2iI+HhvCHIl8KrJRc12rcxpz/vHnm1qi+xTpnWA+l+CQCfwG9?= =?us-ascii?Q?cvoe/+A9lrdXRNQpA3qLczbG8A4QaL+0ZTJ76Lx9cAFObPzPFbqmj0IkEwSd?= =?us-ascii?Q?mbkSXllHzdMuXEoqGt7ZVxvSx4UYk8esfBxpMoXVa8A8mxCmnIy/vvbdC2V0?= =?us-ascii?Q?ylg4vMCsosBECwmjvX3bS+5hDOGNB0AHqiMX6KsgJMeS+D3FVPaARrohge1o?= =?us-ascii?Q?VRrxXZnM7bagREUoHiBpdhJepYPqwPszc3mkbJOoafKO5wjMgFXba6KJGNdJ?= =?us-ascii?Q?1VK1NxAoeHZ/RvLmxuIe1Rxx5DDS3zChOTH6H/N8DV9cOQfpVty7X3LFVaH9?= =?us-ascii?Q?DPxhgBXzgCgEBerOPUCWkOj8QXblsfpSXTWJdvdnxaQjTDX7IjU/HEzVucDt?= =?us-ascii?Q?D5nHncJB6lTFg+FN3Khs5143?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4bbd2bb1-75ef-4a05-a62f-08d900aef5ef X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:09:30.1612 (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: VNKYxoiyzM9iOwPKeD39bs59IVtm1A6epVc0uXnYaVOyr5fn0OYoAfwk094JNtBHaD5dJgRtNKeXwBLBCzwhGqez3jvfxs9HOTC5Ee+968c= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB5078 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.121; 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+importer=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 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 a407a3814b..272af60b44 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 it up itself */ + if (!thr_running) { + nbd_free_connect_thread(thr); + } =20 yank_unregister_instance(BLOCKDEV_YANK_INSTANCE(bs->node_name)); =20 @@ -297,7 +311,7 @@ static void coroutine_fn nbd_client_co_drain_begin(Bloc= kDriverState *bs) qemu_co_sleep_wake(s->connection_co_sleep_ns_state); } =20 - nbd_co_establish_connection_cancel(bs, false); + nbd_co_establish_connection_cancel(bs); =20 reconnect_delay_timer_del(s); =20 @@ -337,7 +351,7 @@ static void nbd_teardown_connection(BlockDriverState *b= s) if (s->connection_co_sleep_ns_state) { qemu_co_sleep_wake(s->connection_co_sleep_ns_state); } - nbd_co_establish_connection_cancel(bs, true); + nbd_co_establish_connection_cancel(bs); } if (qemu_in_coroutine()) { s->teardown_co =3D qemu_coroutine_self(); @@ -448,11 +462,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) { @@ -496,12 +505,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) { @@ -549,18 +552,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 @@ -571,21 +568,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); } @@ -2306,6 +2292,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. @@ -2322,8 +2310,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 Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618561140; cv=pass; d=zohomail.com; s=zohoarc; b=loLQVcynJz///XTUemTvLSXRle/+KFoMZI0DvCzquXDx1UCj6uMaDkna0nQFsIkwvAI0o/VNKBnzYi+1l9YtnWFvwkmlKw0R2ukdfDVUrXTGuPKxF04JWFBbmt7f4LDlNCG4B9w3dJCTKRW/9V8KEE4Us0ISCkD2TfbPhcLnces= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618561140; 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=vtju8JLKUCtgURwEpQJNHEca/ScnIMVuOyhf17idpsY=; b=Kr8q9nVVStpiaxv0ed7Utt1nJICGd5Z67lHJzUkPbFf2BxDp0NRFvJPspID5w5cD5yTWa2/MaU4ICJTW3Toz6h2+7PxM2JYEw04oFLNtsaTLZAHNPW7EVMa7xosOwoHjlU6aW86SNQax9HlC6/8aVybhZhknSihWF8X+7NHutZk= 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+importer=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 1618561140054715.7573503470522; Fri, 16 Apr 2021 01:19:00 -0700 (PDT) Received: from localhost ([::1]:37758 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJgo-0005H3-Ov for importer@patchew.org; Fri, 16 Apr 2021 04:18:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57626) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJXr-0001C6-1C; Fri, 16 Apr 2021 04:09:43 -0400 Received: from mail-eopbgr80121.outbound.protection.outlook.com ([40.107.8.121]:41299 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 1lXJXp-0007qY-1i; Fri, 16 Apr 2021 04:09:42 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB5078.eurprd08.prod.outlook.com (2603:10a6:20b:e7::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.19; Fri, 16 Apr 2021 08:09:31 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:09:31 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:09:30 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gtZDk9BJ45NsihIpUldobB3nKzoaGbYSBPDQkASIyge9Tk/aRUNBW2t7PX6oLGz+KY78Nr1IeB4DWrFpppCDzoBth3cPiemEFiFJPfXehiEGLSs0bfF4LpuTx8e2hI7Q0q5rDKe+QnWniX29DLeyKTlg+l4JMHC4sI10x7kXaEZMwg7s4zI4NjY03d2kEMa5BMoT4I7bZHOYOGT/6IbPK+HsiCFe2FMaxzx46/mAP/zsPzl3ccFfDeIntZ7CL3jJmUFKVOBcfqGSbjCjWYSzm3GJPl8l/hIwIQfwm+kCLT5kxviGirehmGnpRLa5cZc/0K8Ks3zpTg1KOEk92Qt5ug== 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=vtju8JLKUCtgURwEpQJNHEca/ScnIMVuOyhf17idpsY=; b=BH6ruUC3U/+8Pd+cRf4ko7OtfEwLN8rjZGAK8YFp41E87E9Vbihnj9QwhXA4NvLtOSntHFNvf5onX3Mf1QxuW+SbhSAyVLiRXAXUGecCilc9IMQy9rWXoV9LLCt54nr2oO/wMPRdwRXgXkPdRri1dVRdWiGW/CBIKb3OMN/2mJhzw6xTLtPf5t6Os2uiQBersMa6KNEqz1Hn1oOmW7gDGY8WjKugd8a9co0LGjdVNy8Uy04P5nMR5mUNszr+1ZOcGpYXZ4vfKkMzOBNKvX9+tGN6LGr6T3n02FqQ3sSd4HG/DSTQLH0/URtpOJM1ttUeF4wrwoVflN9Gpae/9syIFg== 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=vtju8JLKUCtgURwEpQJNHEca/ScnIMVuOyhf17idpsY=; b=UEFYZMcNguE7/clYtlnsVMw9H9EabzeBA+c+OoFyoXSubJpEWArWC6denE2pVFeRHHqWdaeEU3Yc/S1GV78t1avQJZ6oOTpz5reg9skpL/WUDm/MDvTvcaMVo1eeZYnmBFumYMZgj1fF2nIfjAbG3nHaXFVMbPTPSORjyfB0lXU= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 04/33] block/nbd: nbd_client_handshake(): fix leak of s->ioc Date: Fri, 16 Apr 2021 11:08:42 +0300 Message-Id: <20210416080911.83197-5-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: a966ea7d-5f56-4564-e802-08d900aef6b5 X-MS-TrafficTypeDiagnostic: AM6PR08MB5078: 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: FT7GBYP8rW7KfRQ86u09ZrFvhDc6jexvo15gEQGLee2yXe/taRyBMDUaXmAf23qR6NOWGwnkManHBWKHXaksQEsVL1qjQ/3rsqxbMET5mQNnK60XtVt7GOpCaWvVxSfXj4Z4ofD2g/InsDgYMqHoEZ9NFTQgmqjKEoLy1eyFWovJxH8VBoazf+vbK1F4b+63BSby93sRhYhnIFfMnHz+yUobmH00El7cqa04vDZ1QJ27iL1h/kuzqjMYJFwITMjOJkg/qafQLqo6uYzyE8e2JdhI1gmiFUUJGkIlCboC/rHCsEk75KZHa3gmG3GVjAG2PSnIB7s1LgnTX2khL3rGSues1BssqY0LEfpgLxt6tCMLPML1XGsxh0i6b+Wnup2Us/G4fTFYBIHlV/5CjGoTOYw7/iIKHRnZWzMbFsRK7mM8a3umLQ5pWGcPdo/qKxWAFu1u3O7xtmaTM15z88ICradVVBybm8JoFB2iv7Grzg8ojVVdOLqdBQUXdnyAeFj9/NRki53xODeqTbH1jjbDN1IugtpMUEygilk8u4YRrvJOhZnJT5iVejWTud380O1jeqfkrVgJftqGmc4ncrKUbU7piCI2IJpvHj1kKaFUDDePoN4CB1Nju3SQoQ/lpNSETTlk2MRifIUZ65GVOd7ReNYnzAAT5LwBBR4l6fClndmDffnbymdLtJu2MHEqZxnd 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)(346002)(396003)(136003)(376002)(39840400004)(366004)(86362001)(36756003)(2616005)(66476007)(66946007)(66556008)(26005)(16526019)(6916009)(2906002)(6666004)(5660300002)(69590400012)(107886003)(186003)(4326008)(6506007)(316002)(478600001)(8676002)(8936002)(38350700002)(1076003)(4744005)(6486002)(83380400001)(956004)(52116002)(38100700002)(6512007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?0+R63F4BZrgEX41kw8zzgG4WKZOc8Bncw0kL1ie0wCfiNa9K0tJ3la/3P8+K?= =?us-ascii?Q?bp5+MAu7w5nt3TT2FhSKg/Hc+QKOnEjMCUwHG/dnDJ22JMbr0ldbeQMYGj52?= =?us-ascii?Q?lIZhx+eq3eMe9wunajkvnx0KoJ38RtIVZHH++0QADL9tPDkaDpeUncE4xEFb?= =?us-ascii?Q?QLw9iRSf37m5KWGCQppFBuFBDmByDmsgNPh92Ya93EfS2yGj1bxnhzObsNlb?= =?us-ascii?Q?N20Q3dSkib+cqDQ3D6RtGG3e+CZ4EbNduQcegMTjNSJnjxxjFuRywb77QWiw?= =?us-ascii?Q?xEuGaFkEBaSdfIOAEuE23vAZX0Ly7ipSbUYnd22GHUVsjfVLMl9ddvYZilvM?= =?us-ascii?Q?6OI2x6EiO9uYPoDQ3tU/f7LTjfcUfbKFZsN+GTZcR4mFtdYyCwX6fEVCWSBS?= =?us-ascii?Q?Q16J52+o5Bj5qbhSEQIKNp9eV7rzoyESqBuewWkt+4PJer7QGC+Jg/X4aoIw?= =?us-ascii?Q?0BzkWVKXqxVUGbnUGUOleL/LH63on0ZebXbR6K1vl3XeFOCl+Kyhx8IKXTtG?= =?us-ascii?Q?wuW18Lx3a3deQAP6bQyBiDTcNJFgkWoNSTQeW0x1gSDF9dIBMogXV8BBqZIe?= =?us-ascii?Q?OWapiT3x3BT8vk1lNjL6KV8dDdzmkdhcz1YlvlMLHzfW0XJPF6pkV0N1oONY?= =?us-ascii?Q?ldpYtON2yceZ/Wr/aSwLj5QIX5ayd2SgXhE82K0Zv9f8Y+DqDGH+MnMUzpaR?= =?us-ascii?Q?AzFxwThsFar7qEvE2hp7MJ7wxYiNNXe0BQRDcSA1IiTRnuX/VOYzK+3U3Ufu?= =?us-ascii?Q?RN7jGXrjvSk9rTIVqBLCaQJ3XpW+X8Hh0jGVpMkISEkEPV71tHd+lLtgiaDp?= =?us-ascii?Q?5jEO2B4TtwQ7GbAPlpZd6gpgfmtNOfYUZ8Y+EGUqIK5YmCqABWbGJDcaLkU8?= =?us-ascii?Q?UR/reSqHsn4Jix5b/Qcq5sNSet1du5Cg/6g8zpOp4xo467e3zPaopdYbiq7u?= =?us-ascii?Q?7foK+zCiin1MLDZuPnrq+fusPuwiaMsPnqYsvIyM55DQJ6lpvdBsnuXGrv/7?= =?us-ascii?Q?tr9BVyKI5yP5DYPOmLG9h1u3yaETW2W9cRYBQa51SSk1p4b6OK0W0a/ftrJS?= =?us-ascii?Q?z379+3vcLyRZ7WZhRZNC/4oxFmuRX3J9PaFY6imEWP0Nn8xi5f71PdeCNRDV?= =?us-ascii?Q?vshn622bki1t9alv6hMWs/Bbliy6LJRsR2+V6kcCc+VzC59mzzCPXnkHd2Rz?= =?us-ascii?Q?bxvgOn/4IvLelSWn5PgUsw78gaZgmIcYXrEiup3YCgtqCmW+/j87U9UtUTH7?= =?us-ascii?Q?cU9t1BJyvMCvqGooCXpNmJs4zj2CbaruAF5+rjIp1d69uzqrCducGFDL6RLc?= =?us-ascii?Q?dHy3FkIE3bYpuSqMzW1r+8OW?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: a966ea7d-5f56-4564-e802-08d900aef6b5 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:09:31.5232 (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: wb7feD3lqbQ6wWfzn2V7JCEGLQ1OLruiOzuH85BVnfwJ01ShFgFINZ/1eR0clJ39Vc9o+GexOOX+tUxRQjiRXNMBKE6aQuuTIgDej8QI2aE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB5078 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.121; 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+importer=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 272af60b44..6efa11a185 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -1891,6 +1891,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 Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618560866; cv=pass; d=zohomail.com; s=zohoarc; b=jcuWHzp7sqQLQD9Ynw1BGPsyClXKnd113jQQhO75lsIs7nZtAWd8mUvYR+cz1LU8dmRQuW1CGwT0rFin3XNucSKYYUAu8LZFmng/kTIizdIr8ug178iKK9UjiWSwiLucZavYJtt0Ie3kRdXcPXgnfEcYACC73qiDg+Revba2l2o= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618560866; 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=jU09PGIUfiPs5pgcLw7Sg/FG4Akd8NODqwTKNuMbBns=; b=mJp0RGPECVDuNKIk3nQZBTjDC+xenPpMaNyoaZeZ2pOqAickABX05NcWEQo/P4KVdT2uWqoFbXvqfH5OIis8XXQrM+nOM0p1NbmA+Zd/PUSLthubH58MA04vQBYxK+NcR/qG53rAtGFPs3bo1q2N16KuQqcs8BIE2uOl436cGTY= 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+importer=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 1618560866587821.6526699900581; Fri, 16 Apr 2021 01:14:26 -0700 (PDT) Received: from localhost ([::1]:48674 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJcO-0006Rm-8M for importer@patchew.org; Fri, 16 Apr 2021 04:14:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57542) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJXm-00011F-Hc; Fri, 16 Apr 2021 04:09:38 -0400 Received: from mail-eopbgr80134.outbound.protection.outlook.com ([40.107.8.134]:28800 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 1lXJXk-0007vT-Pa; Fri, 16 Apr 2021 04:09:38 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB3717.eurprd08.prod.outlook.com (2603:10a6:20b:8e::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.19; Fri, 16 Apr 2021 08:09:33 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:09:32 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:09:31 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Zv23kGYzoGwf58FdLmLeEephLbBlITfSTqzDP6jvpDIqAaapkV5WgDVI2pLXimAlJFB+NyQt0rM03c5nYD1SLt27R97Pp+i3uKexOgNZjn7tqJz0hlgBQ21bfZs+9g064/hG4ook5uHXQrloBQBAO7yyOOevyDxxqLOgR8tt4SYtBWunoxFq3wzJ+vl7pAtKO8UABYfBiVkyz/smPslWdbRUoeHL+Ep0XGyY8rg6RlPNGNhgIHULnQfjRtB0WRTyUPEe5W8g+phkXklyuwtOXfRZYz/mRcfUB2xIQcuU3VQlxGzw/8lr8bMkawhtmEpu+Z3TtiQYYaoveVfFguDlLQ== 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=jU09PGIUfiPs5pgcLw7Sg/FG4Akd8NODqwTKNuMbBns=; b=Tfjbdu/TdiWm/V2Xkj+mdeiMWYv+v2wmaPMChzBSuFyGU7F8poxJgBxXJ2cfMmuS2H6YZdnRgrGvmSbKi82PG0k4j3PDJWQ8+CyX0RwSYwJz29H+uWn7kx6qyeNldc73oA9lzgXfAMiLl/QszNZY8Sv1+4graAYPAVklTq5z2wS/lxc3lsRWk0e5jc92+i2yVWdQJ4eM/ROxw5lzoPfr+R0tvyie+F0LKHMOOfhLB6vV7ZPO5lXmBmCsubo95zWtABmf947pQAkSTldBP3/nNw9o37eP3rSnV+WOyPfGhA/3TOtzYdvklgxgtu6dzXOScbkSeZ84fY0IVaQlZMgsjA== 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=jU09PGIUfiPs5pgcLw7Sg/FG4Akd8NODqwTKNuMbBns=; b=mGE18bJXjXKHaWIKaBXRsDZqRLfCvoBC4dmvrT7MYmGmotydfRn36GAWJ3vCIIWGKF6v4BU6/xJGo5r+hgVNXXJ/Wr7ec+NdEIinlXMFlhItBszYG5hHluFhEkuVMnudgztE4YpUIR6eU5YekPgsupJP4sMHlmhYsUMhWhhhprw= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 05/33] block/nbd: BDRVNBDState: drop unused connect_err and connect_status Date: Fri, 16 Apr 2021 11:08:43 +0300 Message-Id: <20210416080911.83197-6-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: 5d24d243-c016-4d4b-5df2-08d900aef784 X-MS-TrafficTypeDiagnostic: AM6PR08MB3717: 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: BmO5gZmD1SEHQz7cZgupeJY/e5TJJnHg8+L+hFTRQw7WCCWKG8ArJAXd/IK9k2OrFOSOHuUBN+95X1m+VNoDVxouhlQZq1+ZR4vopo22k9/2FhuOTddUE/JuOS3G75vZ1s/QQVkZmHaegXzS6sf3clftM2IowLK4p40F0bngi4xlMRHWYRRafpUoAto3lpJRNyViGv1OpW3AntZ12l5SZTSIZCnA1v2joCtggJM18Hswh9+uvfqz7azOoKQJ0ZgIey7id89zl4KEwLr6iPI+/cfWwOdVhtDDkol7YGJBykw/sIYY3hqUaEe6zajWSXDn4gp1nqQhFt8RjddadcrbKgzhMktSLWLAecpACqeoTm2SZvGstW4pXBWFVvEh1jSJHDbr4mRuexa6sf82Yh8hDElNGGu33hy3slvRtW/lqLa7YThffOzwlotItQebASAB2OCdR5mH+MYaeovmD//2e4rD4XYdpHAPwWUxixJaMrBwQINyNM3wCxWG2A0CtwWg0BdpmHNj/rh2pOGB51NFRJ+XErsmN6k/Y50RaC0+Hcul5ZSyH5v1W3nSJxwUfCEbYVFzCjV/sucWlGy4PnExXM8nN8yR1hDv0CJBXMhne5ANnvs9FfUBKmbJeSFC7jLOkyiDiHzcFv/UQ1vl7WkS1BJaYHVgcvYS73c7G8EPa5v67TwKbOzZsDkfrMBQC/a7 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)(346002)(396003)(136003)(376002)(39840400004)(366004)(86362001)(36756003)(66556008)(2616005)(66476007)(186003)(6666004)(66946007)(6916009)(107886003)(2906002)(26005)(6506007)(69590400012)(16526019)(5660300002)(4326008)(52116002)(478600001)(8676002)(8936002)(1076003)(38350700002)(956004)(38100700002)(83380400001)(6486002)(316002)(6512007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?eroPa8PDFOZupEJrddrjvvYvbEUPceKyhV1y+SXA6d2KHj5uEiMJ3CI1zXVV?= =?us-ascii?Q?8kr9D3xXQSAYaobFum0TrQmDbtf8GqFLOZEU17aSom1ZIHIsLXYL3rMC+dSO?= =?us-ascii?Q?NvMt0pDzg+l+N1hz4gIKNtSAMs5SMz+C5FoUGJQgZtHF87DsyiaEWt4T5ySR?= =?us-ascii?Q?7+D/dDSxfrFYkHc98ecVdeETf0eKwG7al89Q+txBtyCRc9mWD0scwtkgK/zc?= =?us-ascii?Q?4akZ1gLdtY0d24Yn/5K5JoiCvwoZEQh/59WqaXRFdoj+OTij6FT8iCNZyv1g?= =?us-ascii?Q?OeevQl6AHySJlrxjhA0Ua/1tn049h28VYRFFJz/L5eCTzlO31JcbNK/O5gN1?= =?us-ascii?Q?O46sr1C94aYGA7qd4UVJ89tEWvI1KyH2WywIZDXaeqCCBJZ5Nh9KDCY8ON/u?= =?us-ascii?Q?kEvY5yDeA0jb0EUsYM3wb6KM2NIbYAL7JUddgKlMkeP33NKzfLKh114wqfgY?= =?us-ascii?Q?LBRhzaOwO2lgNo45CTYcY1SuAjcuVOZBLDEuqBcmE2TSddhBx+6tqTXcYf5m?= =?us-ascii?Q?odhOM8eAIDPAl3nlFGLXK7MqGIRiDlhat+Qr2MHjlw0ZtJ4GtBNC6tCL0ryQ?= =?us-ascii?Q?ufcuT/nOeGpRgIc+EB5w3VTgObj4nGCpXiVw36B/ZM7WoocNbJaNF5DEEnIc?= =?us-ascii?Q?IBJT1ukzFvK8P065n9qfRLeO7eS6O7+HD3RO3tQggyGxWYHzAkfYytgZ3E8D?= =?us-ascii?Q?0kamLShauibjDbOFf3ucpep9n4RoNHaaJ5cxFOiVBbaN7QFCxhX3VQE+HAN8?= =?us-ascii?Q?6d3EQQZ3wVLlz4C+uDKZB9H+N0FCba9n8V//Y+3V5zVmWmyi0NXrguuP66f2?= =?us-ascii?Q?4AwDLVwqq9lXzPgF/3qIM05OStGkc6b9LlJXUbGLZ52NFUXle2FkIeFxqRAk?= =?us-ascii?Q?+zCBOv+VLTBGgYJxPMj1NcUaku3bFgfM3sI17GBLF/skRPvDBZjXYlXSpQwH?= =?us-ascii?Q?zmCKnNJg+eyb4kKaa6R2Hm7tr7cf8KwfGTHMRIcawrrAW1H8Q/uS+8RpCt6i?= =?us-ascii?Q?7G59xkegGn+3I407Ai8xc94/eJremh0UZL4s6UHGwsCRb0XZdgvWEuWsC9lu?= =?us-ascii?Q?9i+jKse2jAJnsY4C0zrkNTsFgUP7uciJSBJxgZg/i5RurYSfZlelPJSSSYn5?= =?us-ascii?Q?PgOS9QW0ux31FM6difP2HlFmEAkxNZSBKawfp4XrXVtPF0trK4bZQtqgyfEW?= =?us-ascii?Q?nZvaS12jE1ebUMObNreKrmb9O3wb07gCGKlrCSKbp73dxPzrJ+cJasJDEqkw?= =?us-ascii?Q?qAIws1wfIwDC8GkRd4jQNKqkjTjso9/mFnl1/xuS9pIZHyIMMuzPO/y6k5RT?= =?us-ascii?Q?JxFYwQBRCKxYLo0cIGSKgss1?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5d24d243-c016-4d4b-5df2-08d900aef784 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:09:32.8354 (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: GE4b/ZUHlnISmJhgFEKfG9lbET8vzGYtheNFvcPG2jfb27Xr99WSu7QZWbiufZzPXfK5AtXJ+QQXR+gdP4FpTNPpkgi9fu3vEqZAANfH/CI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3717 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.134; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-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+importer=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 6efa11a185..d67556c7ee 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; @@ -580,7 +578,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; @@ -621,14 +618,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; @@ -643,11 +640,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 Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618560750; cv=pass; d=zohomail.com; s=zohoarc; b=cWl6NovU9SfAac85ShzqIFEA+WGbiRW8aeLZ/2wTs8GPQzIn8jd9MNEh6FVU/KCMZHvEqkFEkS4SQBAQa8Tihvc3I0xsIozgO530mdtRCeKJDlujjLU8/2WeUWBCijcL/R2UfjrApvfAc5G1iWzZxa4Dm+on2H65ODxeq7RpKFU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618560750; 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=4dkEdJbUjzw0iP9lP0eHXAeU3jqJNb+tilVCb+ppkwk=; b=AW1VPSiH/1KYc7L3zNF0pBHrZHnnJNdjcOYADzRRmb41p4VuADTUAhky6H4JUUgfQ1BDvdm5LKX0KhJ1dHDFlpM1q8nd1I6n9Wi19yRzY/v0qtPF41jPCKl+hV7/sXNNH+IUUcK7tP44cYkZDM3rw7DYQxWymsjsDF8AJGXmhOI= 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+importer=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 1618560750026853.4853776027754; Fri, 16 Apr 2021 01:12:30 -0700 (PDT) Received: from localhost ([::1]:42206 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJaX-0003qQ-6v for importer@patchew.org; Fri, 16 Apr 2021 04:12:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57616) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJXq-0001A4-6O; Fri, 16 Apr 2021 04:09:42 -0400 Received: from mail-db8eur05on2123.outbound.protection.outlook.com ([40.107.20.123]:43105 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 1lXJXn-0007xx-Pb; Fri, 16 Apr 2021 04:09:41 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4691.eurprd08.prod.outlook.com (2603:10a6:20b:cc::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.22; Fri, 16 Apr 2021 08:09:34 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:09:34 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:09:33 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k+Z+z0Nqk7/5RQS/t/rAY52nN3HhtBBcc5gJw4WlAdQVM+b0AgO3wzyfpWVjYNN9vJH9dYINXgU5o/lJMKh3KWvPipk+M3fTy92bB9xxj8u1/QcVB6RYBo5jWyAVEOt96kRa451Ik2OYORQ3Ix3mARQbtqp1NEU13XOiMwQaIUKh4NqfRfSYR5CX8QfglUtqd9ufUPg/JUzzQUTmdsEwprrmTUEC8iD6L+NsUarpPGOttjFIxvD/cVidBDtcPU267KhmDi1v5k7N7Q8GFYu1PtLG9yV0eaw4lvxdc3AqrqrvYit6Uxcg8jwYPuQIwo0TSds/QTQle86HzfGkk3GEKg== 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=4dkEdJbUjzw0iP9lP0eHXAeU3jqJNb+tilVCb+ppkwk=; b=hk7WCJZv47XEWbQzP2GaYnJuZ1RXrSHRxdPDatFkQhnkt9DRiwFeH/m/Lox1MXXpX2PS4EUVBZogoi64fWvAm+FELc6m8I7dVWDfUHTTdY+VtUCLCzrH1fvbvQGxrKY8HDMPzBhsxb8+6D48PFUMgmzJLbg4BtzPVLF2VmBp1wzEydrSejUnrz6BTUnj+4oaE4VvUtXuoOxMqrWmd14+wVPgFQOgEvplsKffTSdOA8f1fDVG3tDTJ0g6bFeW2Z7MBlJongJBEX8J3OSTnMwSsBfzbIrjmN9Gu6nbugIjnlsMCf0WEWiNZpDkry7GJm5OWgHKi3mch03t+SBVo2SUyA== 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=4dkEdJbUjzw0iP9lP0eHXAeU3jqJNb+tilVCb+ppkwk=; b=ZxixKz1/ohpdU6kqLe0upA22VcQ9pNMq2vMh+xLSdDwsA73o/J2xMfcwoVqrfLZeiQKi+/s2aIf/6J8H/pJ0HgKTn5sYI9kYbEce8gAMIHsKxZMuwyoTk+Pn12L+7QQ6t+JYWZHi+pZQWpjrdHj6S7Koicksp/+olRdB/cRKH7Q= 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, rvkagan@yandex-team.ru, den@openvz.org, Stefan Hajnoczi , Fam Zheng Subject: [PATCH v3 06/33] util/async: aio_co_schedule(): support reschedule in same ctx Date: Fri, 16 Apr 2021 11:08:44 +0300 Message-Id: <20210416080911.83197-7-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: 570b131b-d988-47c0-fbb8-08d900aef86a X-MS-TrafficTypeDiagnostic: AM6PR08MB4691: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8882; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WaWIrdrqkFRH3DoDiMjb8SS0j0hiWLY6s6DLvt9qxxJsX5eUcEb0IZTH0qKgtkRm2aWkt/93FLcyo6P7+JlMcG7alxLFraBhVNyPI3aZKZdL2WfTjGaJ8EXdFptYOCPbfA21kb35owpQaJW/uRHo/0jOzslnZMHe3t2UeCwrbiicr6qAKuf4KkaUoePL7e287af9v+LlPgCKqlHryiwv88I5e04nUL4yTJUCqiOi3JVCMMDRck4nJLB6tEmwCWrL0sS/ZdY4VKq3vBcQg5MYZvJvSbchn2uevpPgFSgI3X4RVZw1jpZPYz0rl1Ajs9Ha2jHs7LP54PBz8Z0iL3er8cusSeL1o1mUmD/mOrdUraOycjtbTFc7OSkQu4g3gTpuI7zibqzQpfmdpzwkvQLbZMEtmMEcOw1UI0whmj2c56AuipQLp/M0TpKNny52SoPBIIshJ0Ec9+1N7JQOSFJpPSIDpLpgjDkwSMrCFyI1f1+U2BADiQKU2TQwcbRjd1UmDJyeGEXLB9FJ8DC+FjIHkCCOEVxc3hrG15wKk1U+cfi9SYxeqzyj00pbqxw54nY9CU7QxEIw5GXQzEhsUd/PaaPdTcbRiRt+KriweUHiW5lcyA86NsNMszsvD59yVSUdiuzHHFvNwN0YAKjpElJ3y/zFVDpfiUp2RhM9xyejcfajeXZ/+CTdquOfIjpKNJTEDyGv1c9zqKFi16/S9oCybw== 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)(376002)(346002)(366004)(66946007)(8936002)(6666004)(86362001)(2906002)(186003)(52116002)(4326008)(6506007)(6512007)(26005)(2616005)(1076003)(956004)(83380400001)(16526019)(66476007)(69590400012)(6916009)(36756003)(38350700002)(38100700002)(508600001)(6486002)(54906003)(5660300002)(8676002)(66556008)(34490700003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?cpcxh9NBMBYarXI9xEZ+3mSn78lqdtMRT30HAioDpX8OVTlDGy0TGZeaDViM?= =?us-ascii?Q?dBU6AHs/VHDpnZkC3oom0VA7e/MoQGI3cE9r3G+lCsfYYMIs4hUEkZdIGO83?= =?us-ascii?Q?XcNdN7VEnqxrOHtAmV8wju1BkthFQ36sv0igz7PewXqqqProK7NAdkLY4qlx?= =?us-ascii?Q?ZWQDuKU9lLL/MeknlhdejjnyDwBZy8AHS0k9Ta3r7ZmpnLi7mQBqKLSFj9Ap?= =?us-ascii?Q?ZY+f1d4liDF+ZsWj6GE/nW7vpl1JmuekbDuJVi8qfeAHH1+OmFXidDn0nIrI?= =?us-ascii?Q?gS0OBz8OeHRNMooKxOwb7ycxVDdMrxWrtk0tfudeiZEu1AGTWnbo3Wmk4oqB?= =?us-ascii?Q?llx4pFY0vJfu2Tjab099CNXtp0/JoxVdHxuGv9l0aDrmP1SG/govhaSZpNY9?= =?us-ascii?Q?OstXnvG9FkzA/KvwGaiZ1FAHeoV/YHkqvRlnLPEP+IoEoFsLRcjdNVFfHK6F?= =?us-ascii?Q?CzfSMe4RmcJp54bl3LpNZW4ys2cbputfj7WnRFoWO2CojlH5qcJXUvMA9InL?= =?us-ascii?Q?fMt2qPa0O3BDWe4iIH9JUmJaXkeBIBeTR9QwUgwg+KTzQCL2jtP+3GFccOWs?= =?us-ascii?Q?KwzHmEYju+Tu91aIT3b1qDfZZwK96No2+ifHSfIngbELUZuV6BtBFv82hVr5?= =?us-ascii?Q?wlytS9OMdjIW6e2GSjszl68cxRxj34Ny1epw18weUGWaB1jC5JCt4HUtCsAO?= =?us-ascii?Q?s25XT2GfXYYMo0l71TnOnf/XI1JlKT8heFVk6BgtMW16+0sC6tZl5hlPrt1v?= =?us-ascii?Q?GgF+mh4rwwQtF62MViycqRi5UJN1THaipj+JmVkLS2OV1Y95fpq21fAOHQUO?= =?us-ascii?Q?ZFAuYfrWt6ycjoft/P7X9eS2PLLDEAfM0X0rxyvBd04AS3kZ+D3HIkQ9rqJA?= =?us-ascii?Q?JpgLYcdI4nNSe7mRquUt771JSye5yLW6wGEkqbjpCf/JrIqv7b6V+iiXxFEF?= =?us-ascii?Q?vBQlol6W0HJ776rx8HnKTkZV0Tkh/5peJnX+0osxQh7j6Xjqi4EtEjk37RpQ?= =?us-ascii?Q?7k2DSBR6IOuu0deM3u8hSQtzNwi8xNhKZ88eOdhtBnItHemCG4Hp8zj2vHKj?= =?us-ascii?Q?DEBvfbpIcWgR1BOjuN4IN1Su7uRE1A378TmWjT6/2xAlIdc0OiOwc9iESf8l?= =?us-ascii?Q?gBL1S3pUOkHO9kx3zIY+3SzucbH9x4Eho5aSPUQIjpR6ikHCjDpHH/6bUojt?= =?us-ascii?Q?Pt+Kc+b4pS5mMueA/2Jvt9K8vaK3r7w4qyem/nZhmh3GKmH7c35X5uvFojs5?= =?us-ascii?Q?k53s6+0KHCO42SSeEQHgUVNqGn2gjhn2oChbScJt2TP4kQblgvm1q8lPZ1Vk?= =?us-ascii?Q?4SguMyaPl5EvYuTFUJc1arTd?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 570b131b-d988-47c0-fbb8-08d900aef86a X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:09:34.5041 (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: dXNoPBJLZU29gMaOI9s3TWcZ13fjVT60MWyXOaCQBVxqW5xIOeGjLalvO8amrrO+CmjD8zzHp6v7m3WojDxqiSyNECrA6YZALnX+uNoIVuQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4691 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.20.123; 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" With the following patch we want to call wake coroutine from thread. And it doesn't work with aio_co_wake: Assume we have no iothreads. Assume we have a coroutine A, which waits in the yield point for external aio_co_wake(), and no progress can be done until it happen. Main thread is in blocking aio_poll() (for example, in blk_read()). Now, in a separate thread we do aio_co_wake(). It calls aio_co_enter(), which goes through last "else" branch and do aio_context_acquire(ctx). Now we have a deadlock, as aio_poll() will not release the context lock until some progress is done, and progress can't be done until aio_co_wake() wake the coroutine A. And it can't because it wait for aio_context_acquire(). Still, aio_co_schedule() works well in parallel with blocking aio_poll(). So we want use it. Let's add a possibility of rescheduling coroutine in same ctx where it was yield'ed. Fetch co->ctx in same way as it is done in aio_co_wake(). Signed-off-by: Vladimir Sementsov-Ogievskiy --- include/block/aio.h | 2 +- util/async.c | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/include/block/aio.h b/include/block/aio.h index 5f342267d5..744b695525 100644 --- a/include/block/aio.h +++ b/include/block/aio.h @@ -643,7 +643,7 @@ static inline bool aio_node_check(AioContext *ctx, bool= is_external) =20 /** * aio_co_schedule: - * @ctx: the aio context + * @ctx: the aio context, if NULL, the current ctx of @co will be used. * @co: the coroutine * * Start a coroutine on a remote AioContext. diff --git a/util/async.c b/util/async.c index 674dbefb7c..750be555c6 100644 --- a/util/async.c +++ b/util/async.c @@ -545,6 +545,14 @@ fail: =20 void aio_co_schedule(AioContext *ctx, Coroutine *co) { + if (!ctx) { + /* + * Read coroutine before co->ctx. Matches smp_wmb in + * qemu_coroutine_enter. + */ + smp_read_barrier_depends(); + ctx =3D qatomic_read(&co->ctx); + } trace_aio_co_schedule(ctx, co); const char *scheduled =3D qatomic_cmpxchg(&co->scheduled, NULL, __func__); --=20 2.29.2 From nobody Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618560886; cv=pass; d=zohomail.com; s=zohoarc; b=TOXvyluqYHN2Fm/tavuq1TcT/VMM4ReSVYuuB/XdK/a6s598kY3pxCmXiKpBvTo1jAf/TNF+ErdwEXT2eVUXxWBZWGGNSLyR2VQxY5BMSjLSreuvGihHtQFWQ+rLzSff8Rjb1SD1DWr/L47AtAnErJV2nS81VXaJzDI3Sbdc4es= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618560886; 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=Bf69RTA15HpCY2rwgaFIBvDkjazq7pv3eLSBZ43/J9g=; b=ew/cUiuOwhlHicgxgHRtPLH+fMaEb5l0u5q55Xzs2Db7PBCohuu5K/dst31B4PkdzVuNpEnXaeNJrv38z/6r5Z2qZrLgLSn1JaDM2lf99NNlAkorB6NX3rk0cDXzcPkkeTlAvJQsnieCP+Bg0P21R8+xM1dmOBeXhbFwNF+aW/g= 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+importer=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 1618560886187950.0166709791696; Fri, 16 Apr 2021 01:14:46 -0700 (PDT) Received: from localhost ([::1]:49250 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJcj-0006ff-38 for importer@patchew.org; Fri, 16 Apr 2021 04:14:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57636) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJXr-0001DQ-QJ; Fri, 16 Apr 2021 04:09:43 -0400 Received: from mail-eopbgr80113.outbound.protection.outlook.com ([40.107.8.113]:56453 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 1lXJXp-0007yQ-JD; Fri, 16 Apr 2021 04:09:43 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB3717.eurprd08.prod.outlook.com (2603:10a6:20b:8e::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.19; Fri, 16 Apr 2021 08:09:38 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:09:38 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:09:34 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MegP/niqeO4Aihk5Cfmgf9FvHFF3VY/gqLft6fNdyX5lpf9OnNsk3kaXBNniP9WjQYlz3XDffwJvCfgsGz2U2F0lywheeobsU0gn8j5c8+JSEkaxAEOYkUeD16Ld2iOGqEnYcddgD5qG/apCTjtkwutozw/iRdGPqGxxqURlg9yXG/NMcoR438mYkTqEVM4ZiLCmQnh0PMgQx4Y+tInJMQI/dmYNReTTq93xt7iAS9pJIy0RR5NAprrmyY7gxRE2ptsKjo6u2P4qzPaw1Gtvh4KmjoXSITIjjsG/QDh1jcO9f0RldDUgrLG4BPkL32zBk99lpNLIjHEMsRZBc7wMQg== 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=Bf69RTA15HpCY2rwgaFIBvDkjazq7pv3eLSBZ43/J9g=; b=cYSyc0fXbOQMBjzFOjiTlU849CnwQb2cdujxBMD9R9i+iaxWdBZ2iI9MTXu4acXJdu9kjAe3QXRku/E2LNr23Ha+3ZubcgCl2HGDWyZqwaSdXPabVt5tDy44pRPaTT4enVV+J4GbvEurtaAdFj89uCYOYnTF0nEhyLj0gWXn6v1u/PRMs9oJTS/sZTOT+cHFoKtmYfg8bNkHjW7hO7Fk5t7SvZjuHOqiuDKAb2RokJQpKJQmVxT9HZxPxjqn6qMSsqUb9R5YejRlZfFt2/FjYYSTSmd28lXJlU/MsQZDh1XndUn+XBbrnHfg8paNWZngtHSdqGrez+WWUNGwFB2aJA== 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=Bf69RTA15HpCY2rwgaFIBvDkjazq7pv3eLSBZ43/J9g=; b=RkJTVZCh+x5yHC57tXhEEI95ow/5xC8F/UKxnqFC8vH0IdIbIuw0A0mxYoo0ux7qwQTGixKD8G5UXczPaTNCdxgvCjNkrU74OLAHgxTHPbM+n83tWa3hmg/XZQfs6jp8YpLU22jQHeJjyOCgMiGq3BOAXlo/oYcyPzYURk356JQ= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 07/33] block/nbd: simplify waking of nbd_co_establish_connection() Date: Fri, 16 Apr 2021 11:08:45 +0300 Message-Id: <20210416080911.83197-8-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: 4926b3ce-1cc0-4ec8-e448-08d900aef958 X-MS-TrafficTypeDiagnostic: AM6PR08MB3717: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:164; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1hHdou2Yh13vUkenfWc0nVNFfxcVbdTPYP4hJ/9DRjjxQAvVwM9eYr5SEgHoj+Mpi6jfjySiQge3YOfqjKGZiBzzJb+rekIwpMr2LukjAHFyD331PyYi6HSS+ikKnibaTM1MRPqDs2XJZ2WvzKgIe5BvVNIGz1Mi+iM68Uk1f3/wFoyAz/wTsR7Kbsr/RlsKGvojuXZTdan5KHgPcxMVNXmTz2ZeaNYpvdONnTgUCCpryIi0Wkud0DTihSjAbMyTey6BYXcXjS5FPqK0/9EIkLsEZtR4pPnRyOybnCHzZWDjQvcGfhYPEzY+xVxRmj5JuQBgSAfh9rPaAkKHT0XMfetHnR0ChPusbM5aJdHmFqs02+pLMnf8lp6ZGu1SYzPKDCf0kTZNI8GltZL4HR6Y7u+23bG9OgS55bVFkL068E2wuvE3P4K8RD0palSxvrao+APvytdDzcADf2uqkR/98w9PVmuOvkHiq52H3tVcj0mEiI8SvPl6lyZzQDmk9TjT2nGmTx/2PvbvlBYsuKoVdAiSilxcg4YSizbUZGwpypUnK+2ggtlDN09EiqQjhiiDRZgWc9+gmChz09eQCC/dEcC0nmncUZITaXafIih1NDhVVHNWaUEyqtep/GceO4Fz2wqydTv2ybYcEiPykHu0uwFNuT8E/GhMr+h9whQVuvmZvpBOF4rSnWpfo066nElF 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)(346002)(396003)(136003)(376002)(39840400004)(366004)(86362001)(36756003)(66556008)(2616005)(66476007)(186003)(6666004)(66946007)(6916009)(107886003)(2906002)(26005)(6506007)(69590400012)(16526019)(5660300002)(4326008)(52116002)(478600001)(8676002)(8936002)(1076003)(38350700002)(956004)(38100700002)(83380400001)(6486002)(316002)(6512007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?EiDUIk0EEYP7p/dQerjsie/UKGiue6UaBfBvdBTfDn3Fs9genyhi51Zrl15g?= =?us-ascii?Q?V2CIuXynh0CFS38xNPwwCYI5NFoGMiIMZ63UJRkDOgACFAPeApmXarq+12CT?= =?us-ascii?Q?FbjAgWHJXOohZ7JVhSq5TsiY0CCNNdN+dUcxoDLh6imN5/ETnK1pV2jA7QE9?= =?us-ascii?Q?D/ZeUNOCNszCaJDl2TzixlWrS2J0LJLZ+N3AvVbEbA3v7bk6VBv3lq/FDXYu?= =?us-ascii?Q?k0iof7Ga2S8s9aTPrMFS8A4tO2TUTMefeQL+gyF9OWECbXVCoDOhEFfcDI3o?= =?us-ascii?Q?YMRuqrjjfgANVqFlaL3kkHFu6E5Epxz9/aJdck+kSqy458rB5cq1bseZUXh8?= =?us-ascii?Q?0omqWxFWhWF9qotsMLCQbmu9cUNkQy8HYlHK96HKqOwchBD5JZNUOrL3aZls?= =?us-ascii?Q?VYjrYcmdExgxoZzFbK/NmUKVvqfE+qA19b3uhs5IV5Q2EKwG+V+kmjPT+Dlw?= =?us-ascii?Q?ITSP3j+miARyUv1VMp2+twbG8mAs5hDvmhYYdVL2CVr2RqHteMT7Lo6pQ6+k?= =?us-ascii?Q?H6Fqy2w9DH2qkaGZUd+NvzT1Qj0TkPm5adFgBEKtaXzBHlwtGNNnSoauzptV?= =?us-ascii?Q?Dl6RunwDp6poYMkZo4Fh1X7V2ehPKIsKrH7gV+x8mlNWwQ2hE9JKTk6ZrcCC?= =?us-ascii?Q?jh6kBF9037DJS5oAGYm15NRfAtV6dow66ZuzprI0DPAk/zRJnRQ8kDvJFZuQ?= =?us-ascii?Q?0Zf/Gd1FihfYTfAcfe5uQc0dXrXjuNE5g0zyh782xL1p969a15cRuUlGgWHR?= =?us-ascii?Q?giA1qt+/+J7MKZJST+DJERflAJnhq6mTsfWVYapxtsINTm0gMgCN4HQGNpkx?= =?us-ascii?Q?QVfILvGfWOIpDkBE6tcnj9OG9vEQbXKhrBKNhmp+8Dn9YQ/JLCCMV/ypYAuq?= =?us-ascii?Q?NIZpaqK+BgBJMHLI9z6ldc2i5CnhJQctnsQ7pDBVTQuPWH4tXjNswFv+hgIw?= =?us-ascii?Q?DURGA7nYi8Iq2fGWGCD2AOAJ/CHMFrroMqT2m4FXWjw4A+1+/lbvn7tEkZ2q?= =?us-ascii?Q?NXkS0AiUwF4VTfxlGToSYGL1ctx+L1G5rOHQqNLEvx9goY8dq2UBPuPjG9Sz?= =?us-ascii?Q?yRy8zTkNX4eaQtl68aYZ785994oMpLi3ntNQ0ucasEiZ8YSDg5yAnI/bl0TA?= =?us-ascii?Q?HrO7OjtzoRey3U6zMafAaFDVr9iJc9CsmzVANGs6kShh7cMA77ikEFEAJUUh?= =?us-ascii?Q?em08qIVYs1JN6kdEMN4wa8leiCBPJzWAupde3IDm3iavwRlLRk/pIBqSvDMO?= =?us-ascii?Q?HRXe3t9816/sdYwoADmd1tQsudXC8liUSY2mdIgSSfKBSM+ka2UeZHpmx6fS?= =?us-ascii?Q?aESDKvEZr8gmEgO9ZT8LoAuy?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4926b3ce-1cc0-4ec8-e448-08d900aef958 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:09:35.9219 (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: yvlGHB7y2thySQglAWeyQnrfCFPzMZcNTZhniWwExmpmk5SH+4ZKXbBWOxJwIkib+MLHZZy9MOcPiFVyKLbShOqOzZnlcKRowStPEiekhFc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3717 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.113; 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Instead of connect_bh, bh_ctx and wait_connect fields we can live with only one link to waiting coroutine, protected by mutex. So new logic is: nbd_co_establish_connection() sets wait_co under mutex, release the mutex and do yield(). Note, that wait_co may be scheduled by thread immediately after unlocking the mutex. Still, in main thread (or iothread) we'll not reach the code for entering the coroutine until the yield() so we are safe. Both connect_thread_func() and nbd_co_establish_connection_cancel() do the following to handle wait_co: Under mutex, if thr->wait_co is not NULL, call aio_co_wake() (which never tries to acquire aio context since previous commit, so we are safe to do it under thr->mutex) and set thr->wait_co to NULL. This way we protect ourselves of scheduling it twice. Also this commit make nbd_co_establish_connection() less connected to bs (we have generic pointer to the coroutine, not use s->connection_co directly). So, we are on the way of splitting connection API out of nbd.c (which is overcomplicated now). Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- block/nbd.c | 49 +++++++++---------------------------------------- 1 file changed, 9 insertions(+), 40 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index d67556c7ee..e1f39eda6c 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,10 @@ 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= ) */ + Coroutine *wait_co; /* nbd_co_establish_connection() wait in yield() */ } NBDConnectThread; =20 typedef struct BDRVNBDState { @@ -138,7 +132,6 @@ typedef struct BDRVNBDState { char *x_dirty_bitmap; bool alloc_depth; =20 - bool wait_connect; NBDConnectThread *connect_thread; } BDRVNBDState; =20 @@ -374,15 +367,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); @@ -390,8 +374,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); @@ -429,11 +411,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_schedule(NULL, thr->wait_co); + thr->wait_co =3D NULL; } break; case CONNECT_THREAD_RUNNING_DETACHED: @@ -487,20 +467,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); @@ -555,24 +529,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; =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; + if (thr->wait_co) { + aio_co_schedule(NULL, thr->wait_co); + thr->wait_co =3D NULL; } } =20 qemu_mutex_unlock(&thr->mutex); =20 - if (wake) { - aio_co_wake(s->connection_co); - } } =20 static coroutine_fn void nbd_reconnect_attempt(BDRVNBDState *s) --=20 2.29.2 From nobody Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618561006; cv=pass; d=zohomail.com; s=zohoarc; b=JTgXAGBEwy0eaF/M6B5GkObI7f5HkieeMyTAiYJwX1OdaAtthNeqhttwCGRHXP0dBi0vGB69akl/O0vs68njYvMHwl0B/cBNJDaTDGVLCyW2fq+1b/UcVoLSU2EuFJkM4v9HIK8TkEQgNrH7IGTZcFcAjAy/sKHVLoxxSKnhJHA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618561006; 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=gxTHnmb3cCRujztHtOleMzUew0v6XhZ4Tnu8nH0peuM=; b=ROjERa8eJtxF1aTLQ1hG8IWwPfMqDRXo+xD0+az6Yb9qFB8YfmyyUCCK8j4nugy3MKP+Ng0wbION6MTALZgWxqxevrOpd1uM2j8EyHQu7bVMxIfx/EFy7D6JERQBiLGmH55ERINEExNF3DMyYY2vW2ADmc8mZomtNtZgYal08f0= 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+importer=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 1618561006334506.897577317887; Fri, 16 Apr 2021 01:16:46 -0700 (PDT) Received: from localhost ([::1]:57854 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJef-0001un-5t for importer@patchew.org; Fri, 16 Apr 2021 04:16:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57652) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJXv-0001H8-Jc; Fri, 16 Apr 2021 04:09:47 -0400 Received: from mail-db8eur05on2123.outbound.protection.outlook.com ([40.107.20.123]:43105 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 1lXJXr-0007xx-9Q; Fri, 16 Apr 2021 04:09:46 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4691.eurprd08.prod.outlook.com (2603:10a6:20b:cc::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.22; Fri, 16 Apr 2021 08:09:38 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:09:38 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:09:36 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=A7EcBNfvf7y/0iY9ipOBmJhnduS2b9xfXrOg35Z2uYXgm+V48Xh5yfICZ5slWHmnwom2HPNiH4Td7//RRvSWQAQb9XX1pM96PTE58y/Roic/cHwBpLCIXVqAHcw5LK8fWc1xgxm5t5/CVj954VJ203P3gEfWnpJ2RTzXGl6X5DIM4/2nQmhOfa9EuznIX6xJMZbXytgfKaiUojfA16AFu39TbW9yz/SpDU/EiPhsLhRU62cYZi9ViXwYQ9tbUfwAp3gNJZKjQk/pA/hWVKFmrjnhq6+JNlNOFyiKzpslwro1WgDjutO9Ed0HRQZL3eJAIJe1oz37ANZrSvmvMmRI4A== 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=gxTHnmb3cCRujztHtOleMzUew0v6XhZ4Tnu8nH0peuM=; b=hm/4uLgrT7VcmQc7Yi/qZ+dLCa3ogDlOKKHRJ/uzp94ssGpZ6wMvtlqOE6bPvl/LsrhLUBTwGkllnUK8QX3REeezLfLLUiPjGyuxbQprj+Vl90nf3iQrfthgZb8fT8plEOSb2atenxGcTTTRvrikM5rN6hTGRqnDyEYRgU0DILD8rFcQnAj8Iw+4/438QVoXz8KzfiYqA3WqG4bP/gTOTuienH/1sM4S3RTCAZM6JGAhjm3Ox1GgsSvAB6CsBSe0ajm/q9I6jDE0sXyweRn69Upy/ID33xLCxMVTrlJRr1dGcfrpp3JA4TDlFWTqEJrbD+Xt+ZyauqhiP9w8J26veQ== 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=gxTHnmb3cCRujztHtOleMzUew0v6XhZ4Tnu8nH0peuM=; b=DbkEmdIqhm+GNd86lFcDgtRvz0CFxWTFzSMkGJkDx4UsMqUq0SSy8NXTIFHP1KzI6nbVc2IrskCzwBl+0oxQiA5THL0eTCVIxGE0s2HDBvhAvD5VyQLaTG7zbqBfAs0cekvau/h6elC2G9I/ldEAMUyCsgQ+75CJtauD/GOT6H4= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 08/33] block/nbd: drop thr->state Date: Fri, 16 Apr 2021 11:08:46 +0300 Message-Id: <20210416080911.83197-9-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: e2261666-9265-47ad-19bc-08d900aefa2f X-MS-TrafficTypeDiagnostic: AM6PR08MB4691: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5236; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: hp5VU9ajb2PBif+UAmzI3M6FTMnSmF0d7eXiQJIo8v5YxVwfPokjIzFRXwsZ/CNnYXTomrg00F7emc4WzDUb7N1kMyZ0mzsQfhyg2/o5ZFB1pWT5pBSeprnU8LDgkeCJbTHSjUMCSShETifQLIRy6wUKyNLam9e3DGsjJGrmnrXo0TALP5Em/y48og6bwikxt8fMZ4Nz37ZYCnsP32OIw4EcIKXk5LhZiR92vfAKKXniqeOt0aKQP0JNCoZ7ZHFWoVdAGwuH5CNm/gRaptJBtLWa651ZwJpsy40ngrITEy7kgmhkj6eoWQs1ejVOzwWh6CwIIgMu9l3SEPNKqh9IzfLtwLc9KmCNW/dVytNKqq24s90zKO9LfEk/hJK1dDh5M4fE6gLoA+t456BocvFZ1ZCXAUtKLZPHBsZXt4OI+JvKJE4IQsDRIHRyiyRjFsn/kexJOhLBAoSYmui/uyS59EBe9Nv/sl0+FYQAs1a0CeGUPBK+uDiNNgNH53pkEwmRZHRsY547UsDf5KbKDH69Z017x3m6B2KcUhwtkmtUItLs6zTeJwpOBvftTyjGeSV+d3jY8j7VhbFpZP5CwP8GhpE+pUlLOaJ4KzIGW58bvjbzq39EzFtQiCWAAef0c8sFvNWQSw5/FaXowRAc99LikLHiPYUEKdWU9YffVECuNdEd9OQpmPyAKM4STIcke34ns2MtuTv5K2QbXoxYiA7Iew== 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)(376002)(346002)(366004)(66946007)(107886003)(8936002)(6666004)(86362001)(2906002)(186003)(52116002)(4326008)(6506007)(6512007)(26005)(2616005)(1076003)(956004)(83380400001)(16526019)(66476007)(69590400012)(6916009)(36756003)(38350700002)(38100700002)(508600001)(6486002)(5660300002)(8676002)(66556008)(34490700003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?HU5VDPqQ8zn0Gc7RegUB6KleKhaQ5SV7DMTy0kNLIrax/XURhZXxyTsCByKA?= =?us-ascii?Q?uHniAEgtn7nxlONEYRPZbJWn06DZ7ygBBJGBEzC5iRyiYp9Ff2tVMXR0PPzn?= =?us-ascii?Q?YXInh+GDI2gYAZmhOnxQ1xU63b1pHUK9Wt+kc5VZOer/fDkdA7xiUI6/3z9E?= =?us-ascii?Q?q9OhN+3o8rQo3Evl2lcM5RXlBl2rcVpo29LJDm3W/1aVEYNilpMaYBgkK5Ej?= =?us-ascii?Q?OOwYt3dxjx9i3SEBQ6buxKCTSxjzu1egeJLDJkWCM3Ly6Win36ZZ+ysM92Qa?= =?us-ascii?Q?9EQR0lzJOeiPXO8dblIjuUM86/lAayzAmSg0W6rHiqGcIayLOLRMufoGKRiL?= =?us-ascii?Q?C1vAOfZr+Z2C81tzHPJyc66KltktvBbn3fBS1EjituAsS+CwXduaCr5rgKHD?= =?us-ascii?Q?BInAvPXZAPrqfsQ6K+jP1FqwaP1kWJlgaec29W/EXaM2Y4OVxJwWo1efET51?= =?us-ascii?Q?IpNQd7CAywpvE/KM3upkvDy03blgnzrSf/fZEnEhDXGM5H05fdFtxRxyzcIU?= =?us-ascii?Q?g6Cd7kXqBXwCkeImBkjZ44eZ9dyVnUilcBzHYtzI8qobCGKC6DtTuqGT9nQ+?= =?us-ascii?Q?51h3fjz87L2pfrBHfxxdcy6CQN/zEn9CVgUe0KwPUFKkD4fwllhWp0yGXJ/A?= =?us-ascii?Q?H/J6Rpgibfh8x4mJckKa0RITgY33kmXfJWfd2i+WlxwR3ZDbSktmPPwT1vJD?= =?us-ascii?Q?Yt40ebIF92P77HT1U7Iimic85PPttNML+6Jb34ba1M8xhZqW/7ABKDRkn0G8?= =?us-ascii?Q?Hf5+DFP0Pi3t6QlcIVD2svbal+HX+3TRfwihH22o0j1q8HIwbiyp1USwfJPV?= =?us-ascii?Q?CsQK012oIn7KkPixvhge+rI2mP46/3ZGpywPsRN0aR9mGiSWnqYIQT1cWliT?= =?us-ascii?Q?nsj4bC7JEfkMNdmpwy9b50YuJkACDcv1a7ryXm3OyABsIsl/jwlZHWzadEbS?= =?us-ascii?Q?LsnRT9h4sUVTS0eOsFP5hbokM5UL/JcWOxzbotxvmbW/7V1BukkYxtKmky75?= =?us-ascii?Q?Mjc0b08nkB9tFYTXwHcTBXRCn6vJE437nXYhYIU6MXMByanStYn1fUBN0QT7?= =?us-ascii?Q?q9hARIrdJy+sN/xxmHEkytOfzUK5ygpurryt/aTIIES9wwOfJeJXgScGTMY/?= =?us-ascii?Q?aUGC4rqFLXwtd0WuLUHQrQp7QgkS7KUxy2z//WVR6CB3dyiEKqpGpBtY/7t+?= =?us-ascii?Q?G5+/+G7S3Kwe6KZRhhTNuvnwDWJFwsEh4Thqjusb+nBWHVeDmY2Is1JJz/93?= =?us-ascii?Q?D7MnSjfnLSZIo3WP3QADT8kHV+joh1hhVtryM+KMYF9Ce6s0AySR8dEGtRRL?= =?us-ascii?Q?OMrADcYmXx9ez6qpzpWCLV25?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: e2261666-9265-47ad-19bc-08d900aefa2f X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:09:37.3526 (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: IHOQGV6cxs2DSvxXHH/8d03VoO0AtvPO0y2dzcNgjMs8tn8xMy9m5sYIzKQKfE4d9ZU3bgTr671hm4C6FbsOyS8I28XCz8dlyriE7SBp1a8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4691 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.20.123; 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+importer=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. Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/nbd.c | 125 ++++++++++++++-------------------------------------- 1 file changed, 34 insertions(+), 91 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index e1f39eda6c..2b26a033a4 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -66,24 +66,6 @@ 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 */ @@ -97,7 +79,8 @@ typedef struct NBDConnectThread { =20 QemuMutex mutex; /* All further fields are protected by mutex */ - NBDConnectThreadState state; /* current state of the thread */ + bool running; /* thread is running now */ + bool detached; /* thread is detached and should cleanup the state */ Coroutine *wait_co; /* nbd_co_establish_connection() wait in yield() */ } NBDConnectThread; =20 @@ -147,17 +130,17 @@ 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; =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; + if (thr->running) { + thr->detached =3D true; } + do_free =3D !thr->running && !thr->detached; qemu_mutex_unlock(&thr->mutex); =20 /* the runaway thread will clean it up itself */ - if (!thr_running) { + if (do_free) { nbd_free_connect_thread(thr); } =20 @@ -373,7 +356,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); @@ -408,20 +390,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_schedule(NULL, 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_schedule(NULL, thr->wait_co); + thr->wait_co =3D NULL; } + do_free =3D thr->detached; =20 qemu_mutex_unlock(&thr->mutex); =20 @@ -435,36 +410,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(); @@ -479,10 +442,15 @@ 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) { + /* + * 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. + */ + error_setg(errp, "Connection attempt cancelled by other operation"= ); + } else { error_propagate(errp, thr->err); thr->err =3D NULL; s->sioc =3D thr->sioc; @@ -491,33 +459,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,12 +478,9 @@ static void nbd_co_establish_connection_cancel(BlockDr= iverState *bs) =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 */ - if (thr->wait_co) { - aio_co_schedule(NULL, thr->wait_co); - thr->wait_co =3D NULL; - } + if (thr->wait_co) { + aio_co_schedule(NULL, thr->wait_co); + thr->wait_co =3D NULL; } =20 qemu_mutex_unlock(&thr->mutex); --=20 2.29.2 From nobody Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618560926; cv=pass; d=zohomail.com; s=zohoarc; b=URbMK5cDa2uPHoeFkMUUTQOOd0qUDRmfErubu9jhqT4Lb+eZX5QhTN6YE+ZSdf2ylWfuMMG/VqQg+iF2blcAZf74bcUGQgZZbJYTBE9bOE+bLadAed6QaKOStr7iJ1jZsaQC967vfL+NWcHgdvTJvSZd3vkAR07O8CbOD3nBWeE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618560926; 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=2HVou16nuRKjB/2sTi9n9MPkFdbgdvEXaQgaBBLJ5kE=; b=gnqp0lzBIVvtjPZUO1Fg1Ht8SG/h+W+ga66HclprfKr7z6iAixMomtXW3ZBzPEU6e8TD0Jp0W2BB1ItdpORDoiKYWQnTRFMykxVgyXDMosDOlpP9+YFmcD8JeWmJhiwZ8+DSkBGaE6VM6x9iFF8J+Czj7ww1m5o6A9UWLgMdjHw= 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+importer=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 1618560926257607.3818709881326; Fri, 16 Apr 2021 01:15:26 -0700 (PDT) Received: from localhost ([::1]:52938 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJdN-00089w-0U for importer@patchew.org; Fri, 16 Apr 2021 04:15:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57664) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJXz-0001Jm-BZ; Fri, 16 Apr 2021 04:09:51 -0400 Received: from mail-db8eur05on2123.outbound.protection.outlook.com ([40.107.20.123]:43105 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 1lXJXw-0007xx-Fw; Fri, 16 Apr 2021 04:09:50 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4691.eurprd08.prod.outlook.com (2603:10a6:20b:cc::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.22; Fri, 16 Apr 2021 08:09:40 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:09:40 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:09:37 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UohggJ0UHEKT9M1sikKN2MtyhmqnHUE3QvJBVeqH+/jFptCViCBhvmbZo/QGwR1Sj9FbsoKNBhd1b8a+6QFpXoO0wy2xAxNPjM/d5+9ibmbbowgD3cqkM502dh8qKpPkoBttpmHrEWOBBVd4zEHbJoULTrY5HW7T25MMKKkVdFbD+gKjF5/nYAXXvsUSdh92UAnqh8+I+CGcZhJnXv4IcK54AL6McBSDhcHC74hoXoQnnLPf5NQMJWGMUQ74+17crSn6DTQe8gUhdF8u1wbdV8KEE45nNh3+awR0hGrgopWTaL2dMNZ1bFCc39qiPShbXSvXEjQVC4T2pyWgPocKfA== 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=2HVou16nuRKjB/2sTi9n9MPkFdbgdvEXaQgaBBLJ5kE=; b=Lwj5EjzWK8pYHNZ6encGlcpFwHNBvP4CPKhuvVS/zIOF0usdAi4rSBxcZPBCSKGr6+DEngyMgE6BkaSJ0GjK7MrhJ7tEqiRiFsG8seNetJFq+buTdLZRzpH60KuikYsUJ07WtdSpzxNGR4WIkSr0r2ltSDElSjiokxIh5uAe0VtlUCVd9qRp9p76+qk/OZRelIm3HJhMc9u185MNVOmo8VC+6e9PeZwpWK/l1dyFypHJA5kD5Qy9ptvXtvaZdFVLgzGhDI7/eEaIj2qIPlvW0zoO4SxOkhph1rWs/xkfzLJF9yKpqgAkPMf2ciAKtHFGroLPuZo42jlfuDVifEVAUw== 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=2HVou16nuRKjB/2sTi9n9MPkFdbgdvEXaQgaBBLJ5kE=; b=swAQPA/CO/RtHXFhhSntZCYyqz6VLUb3wC8S4px+tGthAdMki0Cs6jmBrBgg6KkhjMoCv36a7m38JaABAZWJOFp5tktQrjO+EDWMSsiRwPNc6iqdw/vP+2CTg9kpmKNFCfSVgLHrzcVGjashjxni/RyNbuWcpgF3Ee3/ZzCv+b4= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 09/33] block/nbd: bs-independent interface for nbd_co_establish_connection() Date: Fri, 16 Apr 2021 11:08:47 +0300 Message-Id: <20210416080911.83197-10-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: d3173344-502c-41b8-82de-08d900aefb01 X-MS-TrafficTypeDiagnostic: AM6PR08MB4691: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:663; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NTJjjT0neiST3KpJ14dkKIFW5e29lpAQJPLNaA37hM33oR2rKaSJktKC7Z9yMAgQHdioba07jlWO9BuLwe7n5hXWJDQEDRzsPZBnNMkSzSzBhomCVpFYsJvzBjRgG4sVq5XuOYMoEdhTORmYxPIexkyrOSRzCY6hAhpon8P4eWgquVgvsY2nbW7wxSi96ns0E0BCHVRBqI/rJI+Lu4z/hGVxr6Q/ayB25NkKiebnhrJCrLVgPsmQeiNVv7foFJF+IyAd6Lyv6SvTraGTNFD7y0sZSMZwK/qYl3Yem7wn+3P+XnqjWvO783U+aQWvMQR9aX7EfAI6nqCTSCmkne5yGe0iyDkmR+9+imMwI77DOLT0fYyFo96/6Qr0CGCNprQyaNzOpKOQEiJdZwDB5a/NLKNg/y9BjRfomElhQTi4+bXFN2WvUXhx8Q23T55vHmeyHHuVxGZrUZexkTipsOx77dnePHfNrn3EqgnghuPwrvpQMTd6NSV9oG7Ww4B5jaYHsWq3dHV+11o7UQ8WKPljo7JpRb7OqzkHw9WVBQ8onl48uOwHNMKcbETA3xr6LezFMrNkV5tlXjk3mA98h53s6sNfJRIVWhhV4yaIKv37AS8PFEC2e6NECgi4bwXPv5CQwlbe7QXE5xp1lGG+rjaEBlxj8rY7bgoAh4hwOmi/VNbC7IGSkmjQ4mrU7FDoddm296BRDs2jXqD8cwQ1wi+GPA== 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)(376002)(346002)(366004)(66946007)(107886003)(8936002)(6666004)(86362001)(2906002)(186003)(52116002)(4326008)(6506007)(6512007)(26005)(2616005)(1076003)(956004)(83380400001)(16526019)(66476007)(69590400012)(6916009)(36756003)(38350700002)(38100700002)(508600001)(6486002)(5660300002)(8676002)(66556008)(34490700003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?LbKtiypMKgGQYDzILDsSoGDMrsp8SsJ15dB/bSJpdOUS3mPSYDn7Q1zAw4vl?= =?us-ascii?Q?5vvD7IZC5vvPo57D0PGAuhvuYOGN8uckspVg6v+cWBC2LA3ml7WCf/AnfXH3?= =?us-ascii?Q?EGs80s7UzXeyx8v13ApUu6QSIHtozemPfrj6S5iryI6McLGFAYVCeg5Xppiz?= =?us-ascii?Q?7oeDgMwDZ/aJ/1cbOPu5t5EVrejpfJYHgJkYLp+vNp9oPLFYEC+9veKg65qR?= =?us-ascii?Q?10fTXaysW1QTksSINL+iqWTSky8o1+zGgfGgYN+hHXagE0pYR2Y2V+R2FL8a?= =?us-ascii?Q?tX9KFiKs5l4ksqIxstLxaQdNPlYI1wlcFb0i1Oihzi86BfAW8k3rXQXSaiQ9?= =?us-ascii?Q?L9VhUkzkMNyXdVZKeqhPfPPM7DLfPzPSXMDMhBtLP7Uk52PZPQYzhLyMlWzm?= =?us-ascii?Q?GC/1IJEeBoA+ohYq4YoD1h954pQ38HfKN+WnwjptNLkMp0TM9XLinFR826qG?= =?us-ascii?Q?Nij4+CDAw5gUV9ewsp2Rgm04DAocixT01egbfH6C17BbFllTwyfz3QNSDbFR?= =?us-ascii?Q?Wse13j/ecvfyJLNO5GAnDpCrjue3VC8iRMfbMUvIcjNR+Ze2zpICDWYrkA0v?= =?us-ascii?Q?VSntj6AZoVxhGi3A4aWss70aq4R0MWXCcZFeXBwpROKj6sP9a1vjk8WmtxQe?= =?us-ascii?Q?q8kD4QQLiYMCDHsPoO0uu0qr0eSoTP/lZoBXsnw1ltUkCAycdfYUlTScVJyw?= =?us-ascii?Q?PWXoWr+I5CGz0ZoSCN+glL+g92E/NDWLKnxtnp4wUiNvljrKmrtDF3asm/xc?= =?us-ascii?Q?dh3QseAi33P8C9u9IxlP05llfYFURB1eA8l7wxOSwFw01iZeg6MtZGisvecn?= =?us-ascii?Q?knaJyMGkgxrtrnBXwgetb6acQynBPmAb4m+ICRZ+gJ3nHKfiry6twSJX1Bkp?= =?us-ascii?Q?+WFCpouyfXnmBrJLE2zoZGHhKcIF8/ofFHJBT7yaXXpGwkjbN2/UN0pmG9XR?= =?us-ascii?Q?Gye9jLlQ0Q1owJ9LG1TB/S3YrVVDtcQiedGymZtIfTkHQSe9btMOXAmzrJBE?= =?us-ascii?Q?eQKlxePJpWAZ1RlXipY1nIfm+8BxcQ3ucCjOw/lie+HwdtPEAYL/KtXuXHYH?= =?us-ascii?Q?bOHMz9v7yXXd5PW3Gi3zBsVzhkc5ORdC0TUURRK/r7bt05/6jLb05nxZUqxD?= =?us-ascii?Q?9zveq5W+iZo8ZPID8GX1yT+l0XJnNoCyXSUz7Lk2p5UQDlFtekYGsyfCm87M?= =?us-ascii?Q?Agd1kxYJaVtrmjiukmwFM4HN3v30FSAGDSD3wiz46TXSijwA+mGoh8D6caSi?= =?us-ascii?Q?Rf+IQYw7mJ4FEhcSq94Z6tD0wnGbsgNpS4obhbb6/uemQZJlhYJLZ7TMpYKb?= =?us-ascii?Q?LedAPerx+vM84jYsSXyZpUxX?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: d3173344-502c-41b8-82de-08d900aefb01 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:09:38.7754 (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: 1/rY2auuH7y9655nGroKytPTxfuKguQrBOXuXLJ+C/LKXyvDuD9A16ct5U9F3KJVkeI7RyCsecqeUDHKiJ6p13hoZxYi2biLvwW1FvU5fuQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4691 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.20.123; 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+importer=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 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 | 49 +++++++++++++++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 18 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index 2b26a033a4..dd97ea0916 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -121,7 +121,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); @@ -407,22 +408,36 @@ 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 thread is running, wait for completion + * if thread is already succeeded in background, and user didn't get the + * result, just return it now + * otherwise if thread is not running, start a thread and wait for compl= etion + */ +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; @@ -436,13 +451,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) { /* * Obviously, drained section wants to start. Report the attempt as @@ -453,17 +467,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 /* @@ -530,11 +539,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 Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618561285; cv=pass; d=zohomail.com; s=zohoarc; b=lydDrHfrTxY7qR3+QQ3VHDttGi6jNfsKnYJ/DonDmHUFi6cfpGd+4aaUR/cJ/213Cg9FJL5DouDFueav57nZObdPc+j5LZG2MFJzIKQfE+nh97ieLtKcV8ySDLz1Ok2rR6+bMhz/jqWe+5NxjCDdcJMOOYDIbfQ9n4FW4TSksqc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618561285; 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=6b90KSbPR0eAQ04ZIMLVux2xwrm/Ca03zr/SIJFTSYQ=; b=IQhrBBmoCpjEe9M7aHWNDaGEi5Xd9Y3UwKfQYWmoT9BnrTzx+YR2wI6fesEuFAQNrw+ZRgfu0ytLwtL0kwdTQ2WAse1VSOvWOkupLMGGBV9NHtepTCe7l12MPwiRhBWSVQ2qnlYMowg96lj3Eaz/5CfNv8Mf7ZI56K805Cqyn4M= 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+importer=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 1618561285147577.5795166661625; Fri, 16 Apr 2021 01:21:25 -0700 (PDT) Received: from localhost ([::1]:46544 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJjA-0000S8-3g for importer@patchew.org; Fri, 16 Apr 2021 04:21:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57706) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJY4-0001Oh-W6; Fri, 16 Apr 2021 04:09:57 -0400 Received: from mail-db8eur05on2123.outbound.protection.outlook.com ([40.107.20.123]:43105 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 1lXJY0-0007xx-5P; Fri, 16 Apr 2021 04:09:55 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4691.eurprd08.prod.outlook.com (2603:10a6:20b:cc::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.22; Fri, 16 Apr 2021 08:09:42 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:09:42 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:09:39 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UHVGl9AQmjOp0gNLNiOK3Ll54ttM9a3kIzqM8wmlK8wH6OLm5xh3iDx8i2MFYIld6PkPpnXLsmcY6bJ6288NKIeZ8a359ru/lS3FH+uCbU0ckuyQjXBzyK5ElXiNLrieqjABTs1gdqLT4amuChNaNWHaMKO+CDK6fMp0siQU4vygdP3Cqc+HCXwNx3RLQMOw30RpY6UOujYxiVqGQMih+k3+4DMECfBlAcNuQcEgFWxTgO71vW340NlUPrAmmjf4yofYFrDe7g1jP5MgsU+aiyipggfHmThEHZmURkQqbJvcJkB4XVQoJk1N5TRp8LbjkGyFLV9eG4H2p9Nxpl0oCQ== 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=6b90KSbPR0eAQ04ZIMLVux2xwrm/Ca03zr/SIJFTSYQ=; b=g5yDpG/APdpXe6Z/HnT6Ra2Fj9R9jnNX05kyjU+CdzXQrRV3AQJPsfpSKdAkwMyP6AAoJ1tF7nAjjh31cu4CkL4gq/bGdfFezvfVFIJZJjRnqtqQizYhO7SxSBd6ubnXIkZ1wxyoPRU1xess1qIzRF8hIwU3C5ymPeSHBaeog7CS1jZFgFZcFuJd9YCuu0DX+z+YlljZ7A59ExHFL230azZMBolCuIy1gMz9Zqi68b8DVZgEbNuaDgztOZHeQi5OlpfWcIQha4N0/8yUzNuR36XTdu03Z3hwzZGYjz9vXmQpAQpdYsdsPYswVvB0UrQiVY32we4mv3JVR/ula/lJmw== 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=6b90KSbPR0eAQ04ZIMLVux2xwrm/Ca03zr/SIJFTSYQ=; b=hV6jlij2NMz03asEXI9IjYOVs4VeVD1/d1+E3vlUXsvhdzXT/pd3d4PuOPYLkwTgWbf6V3igvIoM+z/p/UtSFUnEY4L9Rap2xDCV6I2GGMatKsaFekdUR5HHI1HaO1G1u69sQK2cytIYhNCgtaTyf+cztFYBNjoUnEkWppsQDTA= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 10/33] block/nbd: make nbd_co_establish_connection_cancel() bs-independent Date: Fri, 16 Apr 2021 11:08:48 +0300 Message-Id: <20210416080911.83197-11-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: 04ba3310-d2a9-45f6-8be9-08d900aefbf1 X-MS-TrafficTypeDiagnostic: AM6PR08MB4691: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:376; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vJfV8L4INJbERcB3YFp+ESAAVvuJm/L0vEUoA6/TA4laAU4ATK+qUyndsvcPneN8Szg1hev4llAJZYU7+MWs6Krzzz3MTxi5l3s4PMN48RWi2eLdX8WlH3c145j7B1bXPqfLjR2EHrxprYAXgRSKKUj1H8YT0J2SX6C/E54be0UTd7bMBl0AMYS5FY2Sdk89IeLufFCXkBg8Ua6+YgjqZhg3I/IDf57p1i1IlwOjZRp9pGUofCmjLbnFtpJC5XsySUdtag1TkIzJN5chA12KBcVQ8cLvARXd5awHMKHLQDH0w3sYbr8yMrOlgUSXB1c7gbNmlC1c5E8POZnp2T7lS1qOcWC/IYo5kSOVf+XvNKyVbjvzN440eMAd7yWHRBvApFeMuugU2x3U55hHFPK8ZsBTcWBJKxWv5Xdo7CV7mEhMJTCGTERibAUwRSTUHzSKSPaKO+YHLdnmKBmwSaKA2IXU+2z4NO5dP+YG6555NA/lo4nK6aYW07jIfDr76oxqeawgyf8iHRmCDhwZ2ZHGZisURUxChhuMpcOUdf0XcCIdA6WNFR/oqE0q8DAiaAu8qGi/bJkKA9ayMGgoXNQXStnRhytnqyXd/KE+sn7XI1Pc8YdS1FvaMqkdiz51ayws5VMSw8DAOUtQQ5B3AVQrHkdfWzLwlhxhHNhX3PhcrcZepW8VX9TpADMrdhGGVw09jDcoWo/+wB+28rK0FFQVLQ== 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)(376002)(346002)(366004)(66946007)(107886003)(8936002)(6666004)(86362001)(2906002)(186003)(52116002)(4326008)(6506007)(6512007)(26005)(2616005)(1076003)(956004)(83380400001)(16526019)(66476007)(69590400012)(6916009)(36756003)(38350700002)(38100700002)(508600001)(6486002)(5660300002)(8676002)(66556008)(34490700003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?7XBYDYPH4b9qELUNIUhpdsP9RPgYWtuFJ4kUHM2mqnF1udAG8pNL2ytlqCrt?= =?us-ascii?Q?J2IBCcbQia2C7Kd+ezMcF6whHM9+cewCJuIl1hFcv3VSNZD+8btfLhBLLcfy?= =?us-ascii?Q?C6zt/Ne8Wuoa/t22L5WBn/SXToFXlQdOOP587ppgR5mqZJNgmCGuRyl7rKQz?= =?us-ascii?Q?0Jo5GNp4kBC1DnbLLxzqX8SHIrAla+tBO4q/00gu0K41iHp6FqhHApDT6N/B?= =?us-ascii?Q?DOU7T15Yh7dFhDfRuB893h9t/DCXgrIFEl4Bk92n4gKM+VA4zv+AzHomDokP?= =?us-ascii?Q?srsviaYzku3Adm5Ug0XBpk+NFoReW52rr4NryJ+AIaFbkohP44Viq91CHiQl?= =?us-ascii?Q?syaj8UvtmHpU8HV9hxT30tV4/w6e5Yz7ZfKde7OWdpe63F6Z9urnR1r9YtSQ?= =?us-ascii?Q?jXD6opV1YS0WQr4IGgfqf1TPVJB5YUai313Ek7kdmpLZuy1IlTyru9Kxld3d?= =?us-ascii?Q?p8zOQtq6eAJdLADRZXCdr4zLgLcXS9yM66JhuTkdeJbjHeMhj9kmvm1/r3K9?= =?us-ascii?Q?N53wTqZYB+eFMi1gXpZu71MCPd097IO4CQZL0ySaoQi9uXwrSMoYYql4nP8e?= =?us-ascii?Q?VsAkV4bfKnRd6uZmOZ63PEjEXGNAdBt9KOiheasRvSKu+ig48216+kHtGYvq?= =?us-ascii?Q?t+41Pv1DBBKhwkL/RG6mw1dtWnFzpy7jJmQamX9OIQzlj5sZzyuUB5sz/InZ?= =?us-ascii?Q?v5mr/wU6aHoSSPmMVsBtcjNyXYmTakBad2CrWrU2r11cBuPPArUL/FEKRUPj?= =?us-ascii?Q?tuUA6vQngPefsMm6o0Uau0woXOMJNgYxOeYjGO0R+5KD/RfxjCV9KmoCt47P?= =?us-ascii?Q?M/prYm42JUp9safUgTKnNQlt4WG/cKlo3yzcPqN7OJ3MxpP++gdprGlzGzMb?= =?us-ascii?Q?TkS0tVndQ0+SafWaJ0vFjy3/IjaYPsvvpY3HwKrERwvjUgeh2Nl6fnzuTzlE?= =?us-ascii?Q?my/tNozKSqWnFvbtjwFEPuKqZIcGH2jsy6nW90RCJ2Kq29OsxF+qeiSqfzQ9?= =?us-ascii?Q?+yNf2z1HdqgezJhNOFYrmUq451FQu7tShLUYOSVVjvgYmwKDUKBE0yt8XE5V?= =?us-ascii?Q?ZGPWsOi8fZueXpbZoO7wvCrj4Tce0aB0J95Bp6hcc65kIWjbJI04Pu8GiJI7?= =?us-ascii?Q?l/UW9ZfToiCLATRPH2TWFdSQm49BZPaWdpnhO3ydPC+PURSR7JE6zaxvTI0b?= =?us-ascii?Q?f5Fc0EjxgE4s1aZIL+Ea/zNSLnvcYpYrpWh6KjSSnaDPVUm01kGCfKIrsnwa?= =?us-ascii?Q?NVOTcljNn7B8yQ4AUOGtxM+7+igAAVvyM8aopV9XLORR7fsX+/u82SYAcmUf?= =?us-ascii?Q?CkNd8vk03+cLQU1noB3rKAJe?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 04ba3310-d2a9-45f6-8be9-08d900aefbf1 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:09:40.2529 (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: YTzimF9gqOfZRe3HLEnQvTQ2WCHOKwLqdYothH62Tv2B0rIwSEEQCocLLfyliGUErD6AtiUNGMcHTWNXeFzua/RK2Xd/uKbC4VHEDmazBgg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4691 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.20.123; 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+importer=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 | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index dd97ea0916..dab73bdf3b 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -123,7 +123,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 @@ -286,7 +286,7 @@ static void coroutine_fn nbd_client_co_drain_begin(Bloc= kDriverState *bs) qemu_co_sleep_wake(s->connection_co_sleep_ns_state); } =20 - nbd_co_establish_connection_cancel(bs); + nbd_co_establish_connection_cancel(s->connect_thread); =20 reconnect_delay_timer_del(s); =20 @@ -326,7 +326,7 @@ static void nbd_teardown_connection(BlockDriverState *b= s) if (s->connection_co_sleep_ns_state) { qemu_co_sleep_wake(s->connection_co_sleep_ns_state); } - 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(); @@ -477,14 +477,12 @@ 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 it does= n't + * stop the thread itself neither close the socket. It just safely wakes + * nbd_co_establish_connection() sleeping in the 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; - qemu_mutex_lock(&thr->mutex); =20 if (thr->wait_co) { --=20 2.29.2 From nobody Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618561157; cv=pass; d=zohomail.com; s=zohoarc; b=c8Kwo7iYPkcmCstC6KVIG8aahNbK0pD4t7hGgneydOjBJZ44jytIhj6gcnZ9thoE13J9myok+y+YZhMTbw0FDgUqU+MsQyWOX8HAd8YVoiNbl+j2kGl28aL8ia31PtilM/0fZ/vEMlZv6JlXaJvAgOzvYioiC9VsGcE8IAWGJjk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618561157; 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=+u8wbFiEu6QXR4/9V/lBrL/to7ALkbC0wv1rMvfxmUE=; b=iuCkLR8LS6VY8tgYZ7ePDYQOnsZpOHxRl57e5oLrp+O/kfJuzUZDv3kZoKQYifWZo59Hq76yZuDTY639w/JEqMY523bLkv+8P2Md5qR5QmzZaMCCptXQi7eB4apaVWm4vzhRQcSUqMBg3q8zduK0pqUst66ZQltcTA4FQY5WRqU= 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+importer=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 1618561157787300.48000341365173; Fri, 16 Apr 2021 01:19:17 -0700 (PDT) Received: from localhost ([::1]:38326 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJh6-0005Vq-Jl for importer@patchew.org; Fri, 16 Apr 2021 04:19:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57726) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJY6-0001Qs-WB; Fri, 16 Apr 2021 04:09:59 -0400 Received: from mail-db8eur05on2107.outbound.protection.outlook.com ([40.107.20.107]:39777 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 1lXJY4-00087j-6t; Fri, 16 Apr 2021 04:09:58 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4691.eurprd08.prod.outlook.com (2603:10a6:20b:cc::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.22; Fri, 16 Apr 2021 08:09:47 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:09:47 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:09:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gKuSMuEcqCCFzqLNvecWmRncQIMf27JT8nn7H2YI4TUpDe/W6YBHXEvc42+7luXmRf9k0wJQ+z7zwszgtleW1GwGTl7rqcMkUutStlHvmt+Aa0AxeM9V3UzTVt1gMJjEWhFPK7NvJ0L2F4NZnTyKI42ZU3uxzmNmgXiclapZ4IOo4sjEnNYY73z8Mg9eW7jG7ZtBohHD3eGPDIYFanv3ciL36Cb3SksIbKbsHNmmOmln4qA7hhTPlbHgBW9KWHoSO+M08k9piEnaFZNEQWdEwi2LwEd0LqenxOcWxgJHVJi76tZBGH9dcVZN2ACgXz/jBeWF17V/rFaJeKFIfgBR+w== 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=+u8wbFiEu6QXR4/9V/lBrL/to7ALkbC0wv1rMvfxmUE=; b=neB7KwFGhWhzFLnykiMappclo/LhIOanl3k2GVBN8LSxDSkziz9I0f+xQPzomVmOy8+PTmlaiC/F0ChW4SqN+FbZcqhF39Lg7qrkZt6Ah97dVT/SW58/KYLhtd8qFE73ZzZ34bzDIHHzOSt6HP8b+kIfTizpsvTQSNfCezvzP7iwqfFX9YrARGdS9nhgJFWk+Xq+d9GrHVvGMnAd6I7KM24Pe0DZyeo3+nIE3X/NtWt/in0KTQu3bB2p6ShOpvnjCY8GGd0oYRcJQgnCg1SOyLj6eKfOIpqyexZE8OnBJGgdOREpV1CYq8eYLSbJWAFhneB6LyWSZu5y4oonD8VK5Q== 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=+u8wbFiEu6QXR4/9V/lBrL/to7ALkbC0wv1rMvfxmUE=; b=eZYUr7mgAox116hjbVHh56mwQ/GaqK3MPYShWHwE11MeuVFNTQ21NvXHurhwIQUcQru+gMB7w4j8qD2K0++aoK5OXrMs6q/QW6icE6/+Fy4jvmlWiHgHn77bJt/gkJnqcIrBoW49sbSS3lbQieOYzRt/myo4Jbjh4tuvK/FOnzU= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 11/33] block/nbd: rename NBDConnectThread to NBDClientConnection Date: Fri, 16 Apr 2021 11:08:49 +0300 Message-Id: <20210416080911.83197-12-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: 554904be-3b49-4362-121f-08d900aefcc1 X-MS-TrafficTypeDiagnostic: AM6PR08MB4691: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:173; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: T3cDtyCTfkEBYMBT6Gs5yy65yPiiFvOrOzxXYG6Uydw7tDHc8SxbOE5pVA9yfSUVNgTcP/eUZSZ2snYZYYOwbJzdo5h+bWAjN5y5QHZX5Wisr7MsoR8zsUODZrxibnDWSccLMTJx3MMWsbRoNNwtmHMRpZeq+/0wm32qyyT7w0scadzNzWxuferud3KYVgwkyPB/+Xl9UmPSS5NpbwYb4bDh4kvtMMw7cZ6uU+w6xlP+qix2p2ZXLKKxe0ctUrr8WkA/oj4BP5tEpDF+zsvmfS2UffALzi727IJPgplFRaZuIMxcozhEVYROKRG9dQpsBzJeV9um3byxxraGsPYXpdPNkCVyDDmilNqJgBGfkz6UKz0tCPFXcH726Qo5cyUHpXynK31RT2LAZbS59SEq9eBkmrws3KUbcdcbgwA3FrwKPv8rZOaaos76k+zvENJvtNBl6q4+dfIBHg10IdocLj8l57J0R1iffiOpIlr0RkGh/YkkXaqfPzaVlAreZ7lSMAUkKW3DiB08HCr76lV5SlLAt944jnYprL+SDgFjWDQ+Zor7k2WlLH24mPwInBmsfy0Or9haZfvRgOb+onekYbCLbcmNnjfbKOmhz5M52b7UBS8CF2XTyI2ooFoS2iK554I05TUCw/E5Q9S7GldriSyxZJyDPgccF4PN3DtGDVXF7GmgWRKBDkiAx4f7b+NO 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)(376002)(346002)(366004)(39840400004)(396003)(66946007)(107886003)(8936002)(86362001)(2906002)(186003)(52116002)(4326008)(6506007)(6512007)(26005)(478600001)(2616005)(1076003)(956004)(83380400001)(16526019)(66476007)(69590400012)(6916009)(316002)(36756003)(38350700002)(38100700002)(6486002)(5660300002)(8676002)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?fzROfTE5a9pJr/La7vRI3KvdbdC5hzb9UuyadYYvOz8vCiItY413up8v9z+/?= =?us-ascii?Q?9uJ1Ws4Egh70LAmylgmgvJKPQPEDRecNC+A+4n4H17dwNJfKKyVJjVZj48h/?= =?us-ascii?Q?LBYpat74Ic8E5UIOBCtyM9+gzF7eI4tfUSxbZhxeD9XYuA7ecyFv5DqZYWOF?= =?us-ascii?Q?0h23l+PLvEquKkhThHNDNdCg6X6hvHhPW7ppClMlgYJYbhpla6e+P04Y7a77?= =?us-ascii?Q?iI4Lzc8+1iGypYH54lgF+7289+o+pV8LtRDcmSj0/0Me9LLg9Hu+23X0CcPc?= =?us-ascii?Q?NmOS4SM/VJ3oJxfhsS/erMqwlzHw01Wnm1SCW+mmn7FHril0CufL80WGs3nj?= =?us-ascii?Q?hUCs9yFakwNha1Tw7pjd0smtTsE7rrilVyqrcvf3ozo0s4DhTeTehxA6RGQU?= =?us-ascii?Q?7XX/ZgJW/fh+irOQnQFaeh/aqMX19MfqadCItmASlOevUcWXQJ2MYWU5xqtx?= =?us-ascii?Q?yHeSqMiPArTtuSYmx9kR4mq792HW9UUCnIhBUryBKupTFPnlocmde0H9N4Nl?= =?us-ascii?Q?iuIV62kntKRk84pgrVxl26oibZxFgIT6ECnRQGRAEIfh7M7eKGi2kG+bNY46?= =?us-ascii?Q?1TK6dN63sLV1WvruwVwJsCNobJqbbvxfWaLjNsNw75DMIE/n5PQ6TlG0AT8y?= =?us-ascii?Q?TRI/ek1s3ICdNdeR+tNv/dgXP7agDGRNZEq7HZpGNbahqmeooG31B0UIHB54?= =?us-ascii?Q?iqL5BH9AoD+o5cCKzo/Hxvv4cLMjQ+Ynmy3skjjWEmTBbY8SkfO8R0LDThnh?= =?us-ascii?Q?1ydqWhIIw8mBfc02DauG67oF7T5l3+t7U5v568SKKUF7ILWTfSu+jwTc801U?= =?us-ascii?Q?Mx8/nRKMpYxTqPKHIkzwbCNCKcgXyb2/anrG6t3oWsse62G20afHuTxja8In?= =?us-ascii?Q?j+cajhQarCwjQzywDtqh7M4b7ZCDzzNHjiX/6J/3/Z99PUCJe3MaIMCj2GFM?= =?us-ascii?Q?bGtxXTaAscBQnqSZgpScNQyWPbnDWmRZIsNRIGIDdVahZa+gmQVtRmGnDZVq?= =?us-ascii?Q?siZDmlVr9kZVlDV6nuX8aYb3XLyLKoXr0p10q+JQZtYs2odQIX6A3Wl+JwOa?= =?us-ascii?Q?Ys9Svu3wKKuzRFrahAs2RtnPuE5NHdeLxzQHpokL1FD2lmNqRF7mcw6vEHmF?= =?us-ascii?Q?5IybopZN/MhDl+hzmeESJ7dIYTgQ/i/gI76MAx13waLDa+l95xbjoc4+U6pZ?= =?us-ascii?Q?h5HO2VYgZqYsoAkzDHDTglcbLtSPDtQu2pVwvBZCkTHu9wBs68EPtetvrnOS?= =?us-ascii?Q?wkBtAjmli9u1yoxgXmMLYbZWlP0hWpaD5ufQm8iEKTjWoGdGcVLwFXtG0+Pt?= =?us-ascii?Q?6wXasKVx8f5b1CcNJoCqURwc?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 554904be-3b49-4362-121f-08d900aefcc1 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:09:41.6916 (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: 6prt5BJaKA+q9kNGFP6MdBQ8HCzpdwlEuceYf5UNoibPAStIXzsTdfW2di3xkVY8ZuJCVMbcxQKzj60PvpQYz8BwW1m6fpfi1Fuidja9JrA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4691 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.20.107; 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+importer=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 connection code to own file and want clear names and APIs. 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: Eric Blake Reviewed-by: Roman Kagan --- block/nbd.c | 137 ++++++++++++++++++++++++++-------------------------- 1 file changed, 68 insertions(+), 69 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index dab73bdf3b..9ce6a323eb 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 @@ -82,7 +82,7 @@ typedef struct NBDConnectThread { bool running; /* thread is running now */ bool detached; /* thread is detached and should cleanup the state */ Coroutine *wait_co; /* nbd_co_establish_connection() wait in yield() */ -} NBDConnectThread; +} NBDClientConnection; =20 typedef struct BDRVNBDState { QIOChannelSocket *sioc; /* The master data channel */ @@ -115,34 +115,34 @@ 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; =20 - qemu_mutex_lock(&thr->mutex); - if (thr->running) { - thr->detached =3D true; + qemu_mutex_lock(&conn->mutex); + if (conn->running) { + conn->detached =3D true; } - do_free =3D !thr->running && !thr->detached; - qemu_mutex_unlock(&thr->mutex); + do_free =3D !conn->running && !conn->detached; + qemu_mutex_unlock(&conn->mutex); =20 /* the runaway thread will clean it 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)); @@ -286,7 +286,7 @@ static void coroutine_fn nbd_client_co_drain_begin(Bloc= kDriverState *bs) qemu_co_sleep_wake(s->connection_co_sleep_ns_state); } =20 - nbd_co_establish_connection_cancel(s->connect_thread); + nbd_co_establish_connection_cancel(s->conn); =20 reconnect_delay_timer_del(s); =20 @@ -326,7 +326,7 @@ static void nbd_teardown_connection(BlockDriverState *b= s) if (s->connection_co_sleep_ns_state) { qemu_co_sleep_wake(s->connection_co_sleep_ns_state); } - 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(); @@ -353,101 +353,101 @@ 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 =3D false; =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 - qemu_mutex_lock(&thr->mutex); + qemu_mutex_lock(&conn->mutex); =20 - assert(thr->running); - thr->running =3D false; - if (thr->wait_co) { - aio_co_schedule(NULL, thr->wait_co); - thr->wait_co =3D NULL; + assert(conn->running); + conn->running =3D false; + if (conn->wait_co) { + aio_co_schedule(NULL, 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 thread is running, wait for completion * if thread is already succeeded in background, and user didn't get the * result, just return it now * otherwise if thread is not running, start a thread and wait for compl= etion */ 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 @@ -455,9 +455,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) { /* * Obviously, drained section wants to start. Report the attempt as * failed. Still connect thread is executing in background, and its @@ -465,12 +465,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; } @@ -481,17 +481,16 @@ nbd_co_establish_connection(NBDConnectThread *thr, Er= ror **errp) * stop the thread itself neither close the socket. It just safely wakes * nbd_co_establish_connection() sleeping in the yield(). */ -static void nbd_co_establish_connection_cancel(NBDConnectThread *thr) +static void nbd_co_establish_connection_cancel(NBDClientConnection *conn) { - qemu_mutex_lock(&thr->mutex); + qemu_mutex_lock(&conn->mutex); =20 - if (thr->wait_co) { - aio_co_schedule(NULL, thr->wait_co); - thr->wait_co =3D NULL; + if (conn->wait_co) { + aio_co_schedule(NULL, conn->wait_co); + conn->wait_co =3D NULL; } =20 - qemu_mutex_unlock(&thr->mutex); - + qemu_mutex_unlock(&conn->mutex); } =20 static coroutine_fn void nbd_reconnect_attempt(BDRVNBDState *s) @@ -537,7 +536,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 Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618561044; cv=pass; d=zohomail.com; s=zohoarc; b=V3/CRMozAXLZTkG+ENFLirkjVeJIGz66aNbX3NySEz3oWzrzySJIt0/2TswApoOOIpCmnY56B5dzeB6DEMnp8M37BTqqt2GKeVqhGqQOojtmUclhsdVKcbpEA11tzmtIKJiuuXMi2SvICINqJaBQ2c3wFTv3PuHhYCPfwMkbLcY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618561044; 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=QyLFtyvqd9vWQR68F+LPTxA6XgmQma/UqgmxnnZ6OuQ=; b=f2mo6kNCWSViqqo+SyCOfe9XjuAjv4wARBV4rXovCHUe2uy1TEDLdlc0RkjlNSL0o0iWyl1a/M+izoh8rs56M6+3SRch9v3wqP42fuC8CAdr8e+hrWzhevxIVqGjv71YSl+sLP6cCx9RbC3fqO9c5UtbmNfRQoQ4M+M4TqN2mDY= 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+importer=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 1618561044630208.29021926901987; Fri, 16 Apr 2021 01:17:24 -0700 (PDT) Received: from localhost ([::1]:33270 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJfH-0003Nb-IZ for importer@patchew.org; Fri, 16 Apr 2021 04:17:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57734) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJY7-0001TK-T1; Fri, 16 Apr 2021 04:10:00 -0400 Received: from mail-db8eur05on2123.outbound.protection.outlook.com ([40.107.20.123]:43105 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 1lXJY5-0007xx-Kc; Fri, 16 Apr 2021 04:09:59 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4691.eurprd08.prod.outlook.com (2603:10a6:20b:cc::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.22; Fri, 16 Apr 2021 08:09:48 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:09:48 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:09:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GzOTSjrB0aJOH9ZnvlJdL2J8ph4w626dJdyO4qxrPtI09GQ620JYBLy6JUWt7lu/niLREZnXpbMBkc2oVmhutMrAlflzoolS1udHy39YTOfQHeZ/3QetiB6Ns6Kn1h6R38b3BY06pNdJBfi/A1fy9D04ciSttbkk3T3jRtPNRRi00wPvC57trhzOpJFKlJkKH3CMiSfg2D21MHX9f7BOSupqjJFn4pXp9NHyqW4TG3hqWXgNEMVe21BvQd7nFWapFY2Bt72XUMpUnTL0lK09wsKSV0bCIFl4WG2lT+p1rklDo7el93r7/mq4z+qBP18/XyX+CRxmghkPdl3m9cCwZg== 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=QyLFtyvqd9vWQR68F+LPTxA6XgmQma/UqgmxnnZ6OuQ=; b=cEkCpjee4oeSGJ4s3TaWJ1xqcoGNhFPptw6hfyjwzIGkwCXdJ29njfh4M+8p/b/Mz87zKqcj0Z2oDJIlces32kuRwO3eo5JRpujC5+fvzsLEeB1rJeGnJkWVObrmOUHLqtpFx/Aqzyni31cdMku1lQ9H/YP2qGGn+lP2tISIFRjoG1/jlDSTdKCVB50Fs/H8Xn7NiQ+CVTTJzqTxwRH4Ytm+ewQHZTMnkfo4Uqtx2U/H9I37ikRzTi/FgR/X2Vfj02WR/Jyw15IAFOwBWl9JUBjz5fS2zG+xgdi+CNYfdRkVr8yu+4JYHrqvU/bUWZk0Xp23BRB44FG4iOQymCdHzA== 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=QyLFtyvqd9vWQR68F+LPTxA6XgmQma/UqgmxnnZ6OuQ=; b=FDGj6x2lbfQ5qC9kWgRl0tnavSG8OFjIIBf5pAe2slv2oZkANz7X2lb4SATIdpAvaDddnod+C7oB8whb/F/d/4beeZ9vf/8cYbHS1xb7x11zBSg8QIGxe+FQ6VtIPylg4elKqLWUXZORMSPM2g0vCZXC3Zh0oYstGt0u19q2lck= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 12/33] block/nbd: introduce nbd_client_connection_new() Date: Fri, 16 Apr 2021 11:08:50 +0300 Message-Id: <20210416080911.83197-13-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: 00364896-13ab-41c4-6b79-08d900aefd9e X-MS-TrafficTypeDiagnostic: AM6PR08MB4691: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:34; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qLxL+p2H9pBqpoveKJaiVYtglgWuQtOnR776HFhshmTSmbIonLAZxONQuQi50kdE+lOdsMYgU4fXk03BpSak8u47aUG0ORYdLfrxS8A2YT5oHZEPIbn+Yes7aneOBBKjmFjVZYDGUs8nlyWFhgbGR3oxNGUOrCDC84xDk8Hq6xXlWmk2+yB/oF4avGXwgsdonoKUxGZDb2fsyHGN6hDtQCuArY6laoT0k1Haxxgi00yGWLvoRHVVSx+uIvEwmZwpNiJFmtzQe7Fqhma/woF5SYoqeqXlCZz4dinf/RpuUSDtZ4ns3Ex97w7iJhgoBQw8bJfM4+Sbzmjd39g8UY0hE6eukUf7SqncWyNKd24rJph1ovg7IB5vreOW4Y/TWRbGn9s4lABlyKDAePn+sEfDGUJFAjgn2nNePuiwVLNWCE+CTw/JkftU51aJUgGsPbggHLD4CC3uL4x7N6ZGvVLKlScL1MKgxcsdDgmmjlTTRsZcOgAaUtnl+2t6X3Yrq6OMyvlZm4Cz1CNzjobmpPKY+TjmL6Nv4JXC2jZhzw7wtm/C5gampQAKceqNEXa8C0Up3JE390EE8ys+b6kDtCwjvW/gw7V44BdDr3PsHZAaZvHUsdzJZ0gfKOdfq9epT8D6KfCoXZ6eenob4UbmPSgOso4pHEbd3jky0VG6tjTtnALTO6jv/6YeMygXmJhBY3y7 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)(376002)(346002)(366004)(39840400004)(396003)(66946007)(107886003)(8936002)(6666004)(86362001)(2906002)(186003)(52116002)(4326008)(6506007)(6512007)(26005)(478600001)(2616005)(1076003)(956004)(83380400001)(16526019)(66476007)(69590400012)(6916009)(316002)(36756003)(38350700002)(38100700002)(6486002)(5660300002)(8676002)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?hAdjOXbB9eo92qGDRzEHL+6IK1HH1s/g4u3h1ki4u0ZoblYGAmgubfgaY5Mw?= =?us-ascii?Q?vsnVFROfi5KkMJP69CqCWsJmWp4OPJFf/BttkM9INV+gjnlRR8AjGOlIDX4H?= =?us-ascii?Q?KeSFjrJojNs0xJ2+b2PJiRu1lxYimrH2sgq32Q8sKUkrfu2jUWQJiWfz4PKV?= =?us-ascii?Q?AZtGKji3U9ibI16Bd3ZPYrytbrairCrkEbme+TTkOKDu9rh7OW2sldmMh8II?= =?us-ascii?Q?AJlY4UCCPVFC4X2DthiGtSgZ15CPTUT0EJfCrD8mV8cFZYnG6wXz8drqgC8D?= =?us-ascii?Q?8FW8Q8AWLeKf37TVCV5KtqanjmMJhx5iklLGtLSPjaEUJU7SLq2Z7zApR8yz?= =?us-ascii?Q?B9B6YPiRJtMaijuA665e32VGAq1xQCX91A/1FsywZ2c3bD8n4QUTLvUAiJLK?= =?us-ascii?Q?JJKKoMgYgUGVX6KlY3qfJwoIxERyb/jTjoFWRs7Jan0HmMl+hRs7wcBnZB72?= =?us-ascii?Q?PigL+ckBj6OlbWl0YKuY7cIn9qKz3mzTzKioOC1VtLkFitGQnLvO9/1Ze4bs?= =?us-ascii?Q?/h0Raq23xFQS4KtXs1ra4zSoATnmz7noIiP6UoaAhtnOEBYCNK3hWlro5IFp?= =?us-ascii?Q?uy6mceJHI8ONnd85Eu5OqS9BoZR68Tb3tF8UgEgOdlyzShM9BX65giaUXqsh?= =?us-ascii?Q?a/DgGLxKBNm1d7LiN3grPFlFGsMeca5L+NbEVeeVQLTfymKLucycAMnTdlJ/?= =?us-ascii?Q?7x6xsvXU2oQZmgVQGShgJcG/thymip6uj8iJnLuSDR9b9UPUQRm34yQMU0LF?= =?us-ascii?Q?/ER2LBRI93EJgnX4Hky6+yPgro1a4bfuo6ruhsV9fTTXJbN8jeyxDLuLJcK3?= =?us-ascii?Q?Fx831haxhshn7TX/EqqIGybTuQnTQ7JUTf+BHoC7Xh9ZZuWyw7ZXOcxeb12t?= =?us-ascii?Q?Dr3yGIqCZ/cz7eCkIV/jgVVWoU9FKHALul2q9zcuUgk8rs3uLVMHl6yRziLi?= =?us-ascii?Q?7kuI//oRFqe8pHt3YRtnLse8KcymLoiwQvLQ05yb4XL83md+dASQ5BfEITYn?= =?us-ascii?Q?RmjGjAMOlaymFrEz2Hub/heM351mn7OtYmgSkWhjasyte0q3mBzbfN7VWdNg?= =?us-ascii?Q?VK4tMd4+SH0EeqttJxOGOXRzhY/ty72Q6GaO7H5p0tgQcr4gGqpSsMMmLLH/?= =?us-ascii?Q?2eW6e72PyBCzLAfnKPz0kDEHZzYXpjclSmOKEppV1YhtlSCRJDwfM47HBUxH?= =?us-ascii?Q?U7JX5kHjFhDSafNJkWwmOLea7JxE7wDF5XomP6c+EW87b0NBbybdKEqKLHD4?= =?us-ascii?Q?uhW1JiFZtQ2FTG3HGicT77HpKkeuaCb1JQr4Vz52LrBBmhKhU/Y+ywPV5YAf?= =?us-ascii?Q?TKJSUHcIlsMJ4kRUK2zFiihO?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 00364896-13ab-41c4-6b79-08d900aefd9e X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:09:43.0934 (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: wgJsb7Afk6Bj3FIpEEnOySa9auMvqn+u6LAdRE9RN7DJybRUurYGad6x9cFMH8g2qkKNUmRIOCq5Tr/YlbRjShTlCUpkSevLl9LLPnLUNFc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4691 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.20.123; 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" This is the 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: 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 9ce6a323eb..21a4039359 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -351,15 +351,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) @@ -2208,7 +2211,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 Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618560998; cv=pass; d=zohomail.com; s=zohoarc; b=no4DvrJdpFbacJRsz/7abvzXy5ulPSSORKpWRTFrew/z39DwO0pZSocfwhD4GTZkPVZn/eo6j3jf+eFh7O8KSlAhCW6STzMhuviXQS6Q5xVzNIUcrf98ZthKHGr0CM4kKWM/HP9J4ThLfCiGW6nSLFAKj3MDBeLQatIVOfTaOac= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618560998; 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=358NJVTgyVzJ3QwaOBehidG2e+cywKypgvSITGQTvGc=; b=CTMWC1Fy9M7F70cgWWB59QMpQPZJRZh9flpMDNcSLaw4vv9eTXlwDywhMqgBQILwoQ9mlk0jTantN1ByFDylof1qqc7cNOwpP0hwv3054Jfnt6VivwAfUAMGKuC/4hebrx0XK4V8MOXWjWdk1yH0P+HVfwwkVbsSR9MzEPL3GZg= 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+importer=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 1618560998740634.4423182775085; Fri, 16 Apr 2021 01:16:38 -0700 (PDT) Received: from localhost ([::1]:57180 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJeX-0001d4-Hq for importer@patchew.org; Fri, 16 Apr 2021 04:16:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57860) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJYH-0001bA-Nf; Fri, 16 Apr 2021 04:10:09 -0400 Received: from mail-eopbgr140137.outbound.protection.outlook.com ([40.107.14.137]:53094 helo=EUR01-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 1lXJY8-00089h-TN; Fri, 16 Apr 2021 04:10:09 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4691.eurprd08.prod.outlook.com (2603:10a6:20b:cc::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.22; Fri, 16 Apr 2021 08:09:50 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:09:50 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:09:43 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TKFLAtSA5quZPZ10qcCP5NgmHY4I+QB1QGXWtjq6i17AvnH/MgBsVwzOiEz7WCw96gKgDfUyOTN+sqCswJVuqHz0jJyYrPvSrhNoyOyHMtClGMd+TKPGe6wzzFJImGkIo9CguixVFiewAdplrPITbzZDPq+KRB0hCS7RTBBXrZr7MM7MHACVk973PKpZN8qfgxYMZcqpcPcQ+OLGY0IGjjCoR3QA1X3374MUgT/30tLkW7vkIPblqjxl6T3LuBr3PRFxWU+jcbUU3J6xvAoo11ypEjs9zlJ7HgIkTizHN6gdhyZs1VxdPuMXW3KVACZJV5kpamCow6epJ+vL2Djtqw== 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=358NJVTgyVzJ3QwaOBehidG2e+cywKypgvSITGQTvGc=; b=ZiSsPb+aU4pzikba9zl2LheXY4Wems3evPKxAvxyA4vA3Ow8THmdbK+uMLmQtCI3W0Nl83zVXIQLddDmHeWkvB7L5TdzX0fzIZooqQOIW6SOg07hk4xR2VRvmYeudmcXGwsxjvQgLvbFxbHEL+3N8UNVDvtCHfrhKHe4pegUYGnPskSpX93/ikerasrzeA0JsnHZ4K815zpQRmprz9oYn4FfEaOXxnOM1UnyIWrppeCY/23hY5SSxxyxYE0GXwPaW3vq4OIUuidL3UWOWTWhhbFx9mBP4hfESnpWN3QGFiefI7u8PqBGrP9q1NifxwzKYlU3y3yOHFUHDfpavIQJqg== 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=358NJVTgyVzJ3QwaOBehidG2e+cywKypgvSITGQTvGc=; b=fATpULmFzfTLiqqh+aK5lb0Br+A0bvnZDjFLTQ1uxYk0wx1M5nrM/f+iuDif7YYJ8jp37hU5gO6lQDsTxRmrHK3lqmoYE6mU2BJmwmmob9RuBrxuEN+D2bGZO+T4mwIN0NPbaHtaohZhkTsBT5epx6uHih2w2fU7oIBiwl+C9QY= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 13/33] block/nbd: introduce nbd_client_connection_release() Date: Fri, 16 Apr 2021 11:08:51 +0300 Message-Id: <20210416080911.83197-14-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: d6841c93-6f43-4eff-db06-08d900aefe6e X-MS-TrafficTypeDiagnostic: AM6PR08MB4691: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:114; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: u49BUyA1eHTMs6Mka9zoVyA9U+6gSktPLval+K5IKzvk802095Y16BqJ9JT/Whb+nGdNz8RrA1JkUSXcoaTBM0NW6FynhJnIcJAUxrk82ylFxIYoJLTiYDBHBqvAg49coQ2iBfTn+kRsFuhpWf4UBTf53jJBUk7ncDGW2rkPJsUu0k1VI3P2lL/qHXhIwoHo2qcsN80aDmL+zoq1m5mrlYuq2ne53fHuNcFSM4DEyYf054IjAo3/8R+AdgjWSvxf21Fp2Cf/BVPdNoO1ymSedAEqVfbBkaTetHVVDZEoyHtVoZdCGOOmkUZu3RUN/A0ozpq/gmWP2/UirOH7cxxYMYi9RgT16yBsiqL9Z5H5vOkNshMheh8P6KUysptq/O0cCZvem+BPLwJAR2d3/+abob4lyxzH6N6U/X3eVaZzC5ZUVJqdzvht+TSK3c2lEcm6uj9cR7GxkD+TjV0N0t61xjAQm1ztwlz5aZGVyRgWmdMLylON/QFlJ8MiyPmyvpQVTnCpaLfsZuU9Ks85+qzh7ulWf5wzqVPfw8PQtfqXuDAi5ekSr7GjHtoAqX6vAGptFUi+71iOtbKiD5xmPOBOk2CWZeMuyWd7NVfK+VcrmBpVttZUcnKA1A0JjMpbdKvw3/wYa5yRvorv0zZWlTOOJ5UWPD47rxDFjtwLJ8a70OP9xDo9Z+9bA3M2bGJ0iIYr 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)(376002)(346002)(366004)(39840400004)(396003)(66946007)(107886003)(8936002)(6666004)(86362001)(2906002)(186003)(52116002)(4326008)(6506007)(6512007)(26005)(478600001)(2616005)(1076003)(956004)(83380400001)(16526019)(66476007)(69590400012)(6916009)(316002)(36756003)(38350700002)(38100700002)(6486002)(5660300002)(8676002)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?YKumxr+aehwFpNzN2wwXSDrHa36LdWJB2kr6iKe8oeB9E1YUe+QNiYvsl94f?= =?us-ascii?Q?IKyDBVEllVHBOH+l3J9nXA9cmadHIbBMhguTwcG8RTjUEpccSk15lAx4au+C?= =?us-ascii?Q?OevDG+bbtnbhrsSl9/eDFX+HIAwwl29R94DnmeKKGWubszeeOuwYlT+vu0hg?= =?us-ascii?Q?qqGUTur6o3LOpAIa9FUEiVnid1/WKOHGBg03krfUvokCKqirP6iStEt6OGUZ?= =?us-ascii?Q?Ot7F4K26MMZdCGw+0cR7Xr47vaW03/DHzxAqL3TSlNS1CmxX1Alpgi3N8iQt?= =?us-ascii?Q?NvqFkuUZgi9iQLtWyOE4PtiWKIsifEE0khjuqsou7ZrRRagg1llPnSktuU44?= =?us-ascii?Q?6bBiw3aq4jbJqACF91Unnai+L5dmsrD9gYuTfpnI4b35/QTPUybBn2T0jUP0?= =?us-ascii?Q?qVks5CzZOoqsU7HpZqwdCIwFzwh/rDu+4BggWEM3a4vDjIncE27okpJxJu1/?= =?us-ascii?Q?fXv7+wgUS5LsvQlOMk9nwBQBJeLTxeXpxHMzMCpqBnFHXqYMf7e4bKw/IVCE?= =?us-ascii?Q?sgDfvrFkS5nUXOLLa3JskbpuCIN89XDFVNKlD9p1iUxr9gzkVnurshFPbcds?= =?us-ascii?Q?QPkaWNrbJxZhRjs+TGAfvgMp5s5C31251fnf4sfWrRt+Lno+lKcv6R6xrfEM?= =?us-ascii?Q?H0C16kZZJixMKwzaadIz/3Fe6yofAfTm38ZKHPu7458mNv2bOGc3qWNKTwob?= =?us-ascii?Q?zVAoS3+w+3qLd54KrRAfAqRufJYHXLDCyS2qQgLMXuAYtRSNkNwnMkLCLaFY?= =?us-ascii?Q?Ye5HbuNW4isR+k8mY1R8b/Yr+GX66ioiE9+o72DNSvpqUwv9SqSZuYCQthAF?= =?us-ascii?Q?Ygd3KNMup2YXg8npa+mZvZhTiR67hyKiEiVRUY4kXKX9aVMHhKTHiQujuCz6?= =?us-ascii?Q?cgreb8nyfSSok22EG8FX+0PBWloDMr6vGDO7L1Af4FUvaXtDpmVlvNVWnj7D?= =?us-ascii?Q?qSUlNoA4wVBT25O10FNAvi14N+PqvdQdPHowFHQCzhGqBCV7/cWDKRFRfSh+?= =?us-ascii?Q?KoQ7mUT/XBIwctFfQwUy/Xkrn0jsHuliwadmU7wEoB3w0albdUfssJIGExL0?= =?us-ascii?Q?HY+ZMrHlN4batNpZ+QTZ0AlubNi+aBINJjuB67W78bd6TiHqI3IGyAVwKhMi?= =?us-ascii?Q?jNhc26zC/3f3Z+T/8JYGHMlJ71uw67MUl8HiCcAQrQFMb/tFx9RKfsjsnOtu?= =?us-ascii?Q?Yu5Z4+6thH9eDyzJvGx9DBwVpsEW2jhJ7rMhJcxYbqUBlHygAwlrAdMtgCH7?= =?us-ascii?Q?LLPTYN8QP8LNx6RUcIP4wHRlNx/Wo62VRQh0qFL6TVR+35DYoJmbI+K75S/M?= =?us-ascii?Q?THR6A5Azccu3QLGqBKWlhskB?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: d6841c93-6f43-4eff-db06-08d900aefe6e X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:09:44.4295 (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: JbKT3/e7l5cEFVM+t1BWf4GO/uRzFzHgewE3S3PG+UrZ3Kr83bV6xViTcCw0pZ56c52Oz1fhhTbCKEsrQE2S7MQ6mycclX6WJ/qXpOzaohw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4691 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.14.137; envelope-from=vsementsov@virtuozzo.com; helo=EUR01-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+importer=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 --- block/nbd.c | 43 ++++++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index 21a4039359..8531d019b2 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -118,7 +118,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 * @@ -130,20 +130,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; - - qemu_mutex_lock(&conn->mutex); - if (conn->running) { - conn->detached =3D true; - } - do_free =3D !conn->running && !conn->detached; - qemu_mutex_unlock(&conn->mutex); =20 - /* the runaway thread will clean it 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 @@ -365,7 +354,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); @@ -379,8 +368,8 @@ static void nbd_free_connect_thread(NBDClientConnection= *conn) static void *connect_thread_func(void *opaque) { NBDClientConnection *conn =3D opaque; + bool do_free; int ret; - bool do_free =3D false; =20 conn->sioc =3D qio_channel_socket_new(); =20 @@ -405,12 +394,32 @@ 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; + + if (!conn) { + return; + } + + qemu_mutex_lock(&conn->mutex); + if (conn->running) { + conn->detached =3D true; + } + do_free =3D !conn->running && !conn->detached; + qemu_mutex_unlock(&conn->mutex); + + if (do_free) { + nbd_client_connection_do_free(conn); + } +} + /* * Get a new connection in context of @conn: * if thread is running, wait for completion --=20 2.29.2 From nobody Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618561551; cv=pass; d=zohomail.com; s=zohoarc; b=WFVwh7uWbJIbVN/Om235ADx7fodH8XVaJ0IpWs8Urz8n58/Fdyppm7fKBAYwpjWzizrimy2W6Tn/X/n/hQt4EP6/RgYdTrkrSb6tKlISOb4yZaglyn4Zv0Sju0L9uyZooowKE9vhwD2vURuCMpjpPx//IOLx7P6nJY5MpRIv7pA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618561551; 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=pWXfklPfTJ4QOaMqPMKb2N3YkUuS6RCwGyHUQO09/uM=; b=J3VzxW4NSHAqmU6CcJjUEkTVKw8VgzSHgpvSc5H2SAiaqQSvQxgzG/gs4Ek42703j9Npha5YSkSW6ssCUbF54AXJVvRsCDGu9tavze48tu8hhmawWzTOw+YSCnFcPGiPOCACa4QnyyWX5Sb4e+zLdSAyD6oRjs/SuhiV82P4jl4= 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+importer=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 1618561551407439.06544203966496; Fri, 16 Apr 2021 01:25:51 -0700 (PDT) Received: from localhost ([::1]:35584 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJnS-0007oK-92 for importer@patchew.org; Fri, 16 Apr 2021 04:25:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57762) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJYA-0001WR-Kh; Fri, 16 Apr 2021 04:10:05 -0400 Received: from mail-db8eur05on2107.outbound.protection.outlook.com ([40.107.20.107]:39777 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 1lXJY7-00087j-Kk; Fri, 16 Apr 2021 04:10:02 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4691.eurprd08.prod.outlook.com (2603:10a6:20b:cc::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.22; Fri, 16 Apr 2021 08:09:50 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:09:50 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:09:44 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IiXTY8rWsJkrTuiCtcEFg25UY1EDGCLJXNz1zRIgThsLYPPWK647sfh9IP7nZI4Y8y1jccI79WTEeDAyteqn5e6aAFg58G2LCk0Ze5Fwxcns5VoJVEsp5FgV1Cjb0CZwzWTjcd1sck5Mv7fy5ZTqT/rc4kPzaXC9qJkGyYLtMVY/TokG5yAmBhnNBTZeVdm7XKRIupQIzbgvWSExhmttQnU0o/9EoBbv8RcZaHJC9StOF+1dW4eylZdUG5cq6SUQZPoTkV8G32ARNPm/w8Rk2wulft1YDcEzjkZf5001giiEr2YiXJBB9A7cK1JR50Eg8tV2mZJLVXGJwuovFAVjuQ== 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=pWXfklPfTJ4QOaMqPMKb2N3YkUuS6RCwGyHUQO09/uM=; b=ZnuXIbiaFH6XdkPnyxv9t4b6ZFmIpWuEROueI3O5FcdKjVPbH3HUghoN0d0LhxxACYsnlSM7vc1ICE0QKf36wuB9CBVHNeyhsIKR2C9CgjYZ1h8sIy9y6OjHI2Hr00hn7Iv7+65gxhLfDh7v4I4OJOXLRh5FplaXD/wrFF0TnFUpXMShvKqFiyHH/kcPKRo0gEnEgn+hhDSNigjh+R/ZeJd3+FqzUEAOthrz5KHbnAHWCrxjB3z2r69HtEPxjIbfscbyQ/o+DSrEF0SEVNNvycvHlHcCNRwqQ7ifo8JAQ/gMmIUw7VlbxlpH+3MuJzxl4LjITz2CnCWaMs1BH1glOA== 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=pWXfklPfTJ4QOaMqPMKb2N3YkUuS6RCwGyHUQO09/uM=; b=pMFNLBLvoDq2pDMkUFTecDkAvnnzqFdPUpk031nv1P3lEWe0sgxfaHc42cNTEKM067UfU0qMpg+6/UDWWsWiP3TIVA3lWzYzD5ErjdL7OPfhR+EUdzAdvVhqZQFeTFDKlOVLh3fO0tS8vVpWIyk1UVJB4nnb1SiVeBppQ6vsL/0= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 14/33] nbd: move connection code from block/nbd to nbd/client-connection Date: Fri, 16 Apr 2021 11:08:52 +0300 Message-Id: <20210416080911.83197-15-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: aea21422-c5c3-43f8-19d7-08d900aeff3c X-MS-TrafficTypeDiagnostic: AM6PR08MB4691: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:313; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rmQS5TrwNMNOlSJ6xXUEcPINgpoR/T24eio1NBKAjRm0pCMOhMH1qky6wtFSki1/ZHKHfIiNJRoFvKfD9PRjhbhteTQTWy/3UwCnDnnY40kPay//TlNxSxVJ7GiZ+pM8YvijSZvD9l9p87UFSjRT/rpWPzoLdTX1H+QvYubqs7PFIWqOM52X33gEJvj8/L+UC0snJZ2rsJiwV6BBuVAHfOCX7EitgPbsU4lHXoyhdvTlBKLJXQAaIfyv31D64iXFBMimYzFyaLZ1OpRSiL6Mu+oJJsvhRX6BiGrGlUPJLSZUKe8+32zTcdnnLbO4G7hU+2ME8rEaCSfwby9MdNNyeJeZ6KpAoyNUnvN4w4stYtHE5796AhEtWxm00JslSSP7LCVEP90XZNUGLjCJgNWGGKGoz6JVRuqPnXP9R6v+Mp7AXLfGBdW1zhi+1boSF/LK3HpaVRn+Gy09GnQJdeWxrpDWrKsFsyuphm/nPX2wU9rxxitpnpJFnC+3xerbK6i7UYJIqH0QLCsnMaNinZ1ADzm+1qUCwiiECu4LMUWBGHq83dnxElTiwsLlKTvpYcs4i7Xbf4UBnk8HdbsJEmPkIeSS6f4StnW7yfK2qysaMUZCO87lIWrl5ZJRhaNcHewGgxV9+GR8h3i8JhOS6I7/PmDKL4sQusGkWsXW+XXPoDLAH4RScIbphWpri37GCuJ7 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)(376002)(346002)(366004)(39840400004)(396003)(66946007)(107886003)(8936002)(6666004)(86362001)(2906002)(186003)(52116002)(4326008)(6506007)(6512007)(26005)(478600001)(2616005)(1076003)(956004)(83380400001)(16526019)(30864003)(66476007)(69590400012)(6916009)(316002)(36756003)(38350700002)(38100700002)(6486002)(5660300002)(8676002)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?KoaOFV+TP+xd3Oz//cLUpgXU5lZMPpfI/alU+QEyEkwyCuJyP58yp7PwvkCi?= =?us-ascii?Q?XCX4YgeJ+0bGVr0n1daQyare02GVwUv+Mr+JXQGhkAQ2vgWOgxnAOHrxEV4j?= =?us-ascii?Q?hI0wtX9oN4xlVahXakYKgZN8YRp0f7CFQq22ZAZUIs/oBSJ/LmQcm/LyYZre?= =?us-ascii?Q?A2+BWgnIKNEDzA1YHcJsKExKT+bw+06iF6z6qPz5Zgtz1ZhU7VX2DIZSBVca?= =?us-ascii?Q?sE7TfMpgC9TLcfwiBXUsp7ozeuY6SsIxnyFQwQSy8EeiGF3mb6tTI2r6RsZ6?= =?us-ascii?Q?NGcMOQo7KWunJQ+nUWvB7wttQcTFlfwRPD519ZmAKEdozhyIz3L6AwRME3s7?= =?us-ascii?Q?K4Y7ken0KiLgJJluoaG1rgAb7uOI4CHOT+F8PXN6V20i5VKCsWWiPEVtMLIE?= =?us-ascii?Q?T6x9fcnrnmZIPl9at9CasVPNMFoBoI+Z8q6xXeJDs/di3rrVksykVgFgclsS?= =?us-ascii?Q?aiwOJ0tXta8aKPGP7iB5AYzgf1eupmc67dY6tZM/FJl4WbWhUNyJX5QeiECq?= =?us-ascii?Q?7VPTT+iT3QKJkjdtqT/lFWtWF4CR7ttyF/jOpcVjbYC024gNsjQ8jNic3+uS?= =?us-ascii?Q?GtofmJ8OrqBsi87EICbEXdKb6khXTrHXnJyowO3cBHs3bt1cXJWWqMaaduS9?= =?us-ascii?Q?1Ucgl6FTwM5tglZkxdZIYGmLtqtC7u78W1lOU4NdUD6f2E0nQwYHQ7OqNOo0?= =?us-ascii?Q?EPT6UDptshwgZvxCMFYnPoVdaMDpunrcSWeRnKOL/TS8V/YJvJH7tAMOYqQP?= =?us-ascii?Q?pWmYCXsmxr+YCGp2v540HE+TgoLBLRSF6rdjK04zFYQr2oBCOse1rgOsQiqI?= =?us-ascii?Q?j9FmPBh+uZxA+JjR/tcsfjTjvZJVzSu/ERqrXfZ/Idi6m3vVtz7PlXMjqibQ?= =?us-ascii?Q?+6q2qSw81EacgF1yOt367zcKzGY5S94rwGV8etCahQ1wolBwRL4mCsCrat5E?= =?us-ascii?Q?mEi5PmBO9h4quPjGXVmJt00QfyWRccEWiukwOe3To7wH6dlfFvSRLlJp708E?= =?us-ascii?Q?fLhN2QSYqnItZW2UEZRWf+j1uX7AS/aNLEjlhIIBxO9Qjr4aEtAznQPGBtvO?= =?us-ascii?Q?n5kigg1+KnXI31OC1mZlkANDDuITWzlRyDIermtGFmCnOJdgwxJE738OKn/d?= =?us-ascii?Q?Jsm0uBdWMf8wBQmbfIUqhsu6iGwxZh3ieAlAJOSLuSyW8AWOWOIl4Dr5mIQh?= =?us-ascii?Q?Bf124nhLzMc5uZkO3mr4HT9BZ048Gq4r7dZgBD4uAdis1WkMhU4rHZPy0mSk?= =?us-ascii?Q?fT2fuzVfpvRU9Y+Z6cH+wkwgRkk3loV8PD0LA9oJQYsbcSAfeVed4nug9+qk?= =?us-ascii?Q?K9r2DKeOtiYGpe+jwdJ0hEBy?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: aea21422-c5c3-43f8-19d7-08d900aeff3c X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:09:45.7786 (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: JyZ4VAlwqzEeME6GkJ+I5uBDasDavv1wnDOcfu/zWvDTm++8NNmukESrvMP4P1KbplmeyD/FifWtr/JSTEOKdZEu+nbrEMbjcTcvTgS/Rgg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4691 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.20.107; 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+importer=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_unref() 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 | 187 ----------------------------------- nbd/client-connection.c | 212 ++++++++++++++++++++++++++++++++++++++++ nbd/meson.build | 1 + 4 files changed, 224 insertions(+), 187 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 8531d019b2..9bd68dcf10 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -66,24 +66,6 @@ typedef enum NBDClientState { NBD_CLIENT_QUIT } NBDClientState; =20 -typedef struct NBDClientConnection { - /* Initialization constants */ - SocketAddress *saddr; /* address to connect to */ - - /* - * Result of last attempt. Valid in FAIL and SUCCESS states. - * If you want to steal error, don't forget to set pointer to NULL. - */ - QIOChannelSocket *sioc; - Error *err; - - QemuMutex mutex; - /* All further fields are protected by mutex */ - bool running; /* thread is running now */ - bool detached; /* thread is detached and should cleanup the state */ - Coroutine *wait_co; /* nbd_co_establish_connection() wait in yield() */ -} NBDClientConnection; - typedef struct BDRVNBDState { QIOChannelSocket *sioc; /* The master data channel */ QIOChannel *ioc; /* The current I/O channel which may differ (eg TLS) = */ @@ -118,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 @@ -340,171 +318,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; - bool do_free; - int ret; - - 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; - } - - qemu_mutex_lock(&conn->mutex); - - assert(conn->running); - conn->running =3D false; - if (conn->wait_co) { - aio_co_schedule(NULL, 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; - - if (!conn) { - return; - } - - qemu_mutex_lock(&conn->mutex); - if (conn->running) { - conn->detached =3D true; - } - do_free =3D !conn->running && !conn->detached; - qemu_mutex_unlock(&conn->mutex); - - if (do_free) { - nbd_client_connection_do_free(conn); - } -} - -/* - * Get a new connection in context of @conn: - * if thread is running, wait for completion - * if thread is already succeeded in background, and user didn't get the - * result, just return it now - * otherwise if thread is not running, start a thread and wait for compl= etion - */ -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) { - /* - * 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. - */ - 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 it does= n't - * stop the thread itself neither close the socket. It just safely wakes - * nbd_co_establish_connection() sleeping in the yield(). - */ -static void nbd_co_establish_connection_cancel(NBDClientConnection *conn) -{ - qemu_mutex_lock(&conn->mutex); - - if (conn->wait_co) { - aio_co_schedule(NULL, conn->wait_co); - conn->wait_co =3D NULL; - } - - qemu_mutex_unlock(&conn->mutex); -} - 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..4e39a5b1af --- /dev/null +++ b/nbd/client-connection.c @@ -0,0 +1,212 @@ +/* + * 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 */ + + /* + * Result of last attempt. Valid in FAIL and SUCCESS states. + * If you want to steal error, don't forget to set pointer to NULL. + */ + QIOChannelSocket *sioc; + Error *err; + + QemuMutex mutex; + /* All further fields are protected by mutex */ + bool running; /* thread is running now */ + bool detached; /* thread is detached and should cleanup the state */ + Coroutine *wait_co; /* nbd_co_establish_connection() wait in yield() */ +}; + +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; + bool do_free; + int ret; + + 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; + } + + qemu_mutex_lock(&conn->mutex); + + assert(conn->running); + conn->running =3D false; + if (conn->wait_co) { + aio_co_schedule(NULL, 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; + + if (!conn) { + return; + } + + qemu_mutex_lock(&conn->mutex); + if (conn->running) { + conn->detached =3D true; + } + do_free =3D !conn->running && !conn->detached; + qemu_mutex_unlock(&conn->mutex); + + if (do_free) { + nbd_client_connection_do_free(conn); + } +} + +/* + * Get a new connection in context of @conn: + * if thread is running, wait for completion + * if thread is already succeeded in background, and user didn't get the + * result, just return it now + * otherwise if thread is not running, start a thread and wait for compl= etion + */ +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) { + /* + * 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. + */ + 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 it does= n't + * stop the thread itself neither close the socket. It just safely wakes + * nbd_co_establish_connection() sleeping in the yield(). + */ +void coroutine_fn nbd_co_establish_connection_cancel(NBDClientConnection *= conn) +{ + qemu_mutex_lock(&conn->mutex); + + if (conn->wait_co) { + aio_co_schedule(NULL, conn->wait_co); + conn->wait_co =3D NULL; + } + + qemu_mutex_unlock(&conn->mutex); +} 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 Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618561683; cv=pass; d=zohomail.com; s=zohoarc; b=Wd+3XlpzqqfLLc8zELGB6/c/gzBUvV5mQw/SA9t9mnMx9mLXspPdFwIixjSykf0K0jMpu2YNVzs6dqlkU9STtjTNRF5sRFbxGlJcmmv5aNOWkK4TJ4pjh528oolgq6vE+PL0Rmo5v1aSipqfIE5x9NiOy/X3orPNxnvM7IIZdgQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618561683; 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=PZfG9qsRCErsRvW4xZyjiJ6iX3nZILdkxZQ3+ic+hVg=; b=XZ/G+l73O20UHl8V863e6gy9Br3Zy4PDPeXPXBu9HX6SHl5LQC3uLXLFpo0tD4UKHSgd5HL7WCbRSPqHl9DbAsPJAD9H/C+ketcSrY7/bylG79uhd9dKcU/s6RSlNBI4YkQfEvTm9V8mOdy/M5baYuCZBesvTIzp+jTNCX6AvjU= 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+importer=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 1618561683055982.607963075027; Fri, 16 Apr 2021 01:28:03 -0700 (PDT) Received: from localhost ([::1]:42170 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJpZ-000299-UN for importer@patchew.org; Fri, 16 Apr 2021 04:28:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57794) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJYB-0001WY-VV; Fri, 16 Apr 2021 04:10:05 -0400 Received: from mail-db8eur05on2123.outbound.protection.outlook.com ([40.107.20.123]:43105 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 1lXJY8-0007xx-If; Fri, 16 Apr 2021 04:10:03 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4691.eurprd08.prod.outlook.com (2603:10a6:20b:cc::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.22; Fri, 16 Apr 2021 08:09:51 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:09:51 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:09:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=K8A6pgL3UYrG3lgoH7XLzYinj1C17D7K8rjQoMlPRqdtSyGxWoEtHtANAXPbOqzxXQqwjn44Qn0NZ555H9PDZY7x9TE7I3ak1E7j34x3XQ8A9vyWna7DJpbk6dqGDlNPzyHQpuf9zC7+9bue6a2hRTT+TWLQkR2W3g8vNfPp/nbAKFqx5TDuWEYQOzt0Ivv5wGJ+fVHuUy4xdt2o4B/v7Fxf6lcv0V6ol2iZQBxpOtRM6VPOs0fpFY/nKv326X6cimc7vPfOfwqsTnM5hzSDF4ztyuABRAJAxH+mWnY0DfYiGUmf6o9Sz6cqPWCObpcj6adePjvL1z2nRdjW6VS3jQ== 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=PZfG9qsRCErsRvW4xZyjiJ6iX3nZILdkxZQ3+ic+hVg=; b=MFTN3+zjWCVValfPa3+08ZYgeqVduM8Xyp98pACA/9Y2kYgXHI5U7mHQ1ZagRhLLG1/AMYrHv+6sbD1Vn+rEj3I1HFeuaGHKET5NMFZ1PE+ZrCr6aAXfrqUB1v+Zk2mg3cshSsfqh40iLwVT5WboHe6OdBqRyjw+3Xn6o4xu4XlR+C9MrhOnOZZTWkuJOm0Ub7AozLeVRrQ+Tv/FHSHtYEX0pYvCBAD8u8h32NmEvMMZXuLATQ4m0NHvkt0vd3EcxI4zg6RdLpuZkvCI3FpmvyP/9639bSN0KsSFF2nLbpkDIE5a6mag2Za8piaYPtNKXGfwBk43D09He87xNN8JyQ== 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=PZfG9qsRCErsRvW4xZyjiJ6iX3nZILdkxZQ3+ic+hVg=; b=LafqtJKzN6IUp9Ph8TBPG65Jzd3iIzk4yqkgA16a1tqkuWmIE7yMwdvz03UMjb21mUXUI9LDJ4/pzNdSHcLq4mIEleTHXcjQMr24vyJr9Rq1Ovwjf1B+UW55rVk/kEipfpu4VBewD1QegpuSeRktPezhaXu4R3aWqUpWVAWQqkM= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 15/33] nbd/client-connection: use QEMU_LOCK_GUARD Date: Fri, 16 Apr 2021 11:08:53 +0300 Message-Id: <20210416080911.83197-16-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: 4f4035bb-9e29-432e-8e32-08d900af0035 X-MS-TrafficTypeDiagnostic: AM6PR08MB4691: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8273; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bOpd22oRwmFSghJ5c1iCWP2rQgys5eU7P6mNEtO03P8YkPcyCi8DyHDtp8d+Gim9ILSA+fnTOyASnHGgP8y8Y4foPOcarW2MgVwMRzzZPHOqM8cjKIByw+cZlJyP8R1wuNinpX9TrPvlUQDOp/cVVupCR5/TUz8nsfuahFLZvnwmw80Rty+OzUqocdrmpJrpXa6OwThhSX8I7un61nMm70ENJgyaMSbYcH5e2faELlLvKGgVWJPyULG1K6rBzYZjGqhM3+ooXRXMNqrb/iDxUr9pZMaHvcLqjbeEmFiwtmBxug8JuOjOEcCmb95efdY8J3srM9U8CMBrpctLE1pLqpUiysehghFksYXPj5VNisxlqdsmrwzYwJCoqHPNhPvqclU5l6Vs6fGH5dLPaYkn3OY2m0htJURLV2KZzW/dCnRSwJX1CauMi73HKfXz/xZB/otwS+gpI9kStDbRd4zjtO6jtkWQvVpqwCoAwMjPn9V4RHCfSEIUgvjLYYpmYW5u9PSUHB67t2jqogU+55ViIRae/VlDsXoQdlNgAywZ632+9EDlbg/E/xpVHn/nKEufWCnOXDMi/P1hlrSGTAhuWQgx9WVNZ5LaSXAiNwkNCD8h3rAih7ex/Ba0koKOa/lcg+cRLlasAwxrplp2+H+x6KY6K5HJDBLfSTdHuY8kKWXgajbUsE4uLRqUPAapIb4r 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)(376002)(346002)(366004)(39840400004)(396003)(66946007)(107886003)(8936002)(6666004)(86362001)(2906002)(186003)(52116002)(4326008)(6506007)(6512007)(26005)(478600001)(2616005)(1076003)(956004)(83380400001)(16526019)(66476007)(69590400012)(6916009)(316002)(36756003)(38350700002)(38100700002)(6486002)(5660300002)(8676002)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?roYzelBvhY8fY4IjbTdWDWYWeLBVeCGQKdLAVwOIbj/ROcZUq3DVFUSXwBWU?= =?us-ascii?Q?srzXK+NArYa18lgc9oHpdFTnCV3Bn1c/BTr5u8vijL0wXkj7+o9VeVM+GFxG?= =?us-ascii?Q?tejHwj/tQA558d//WmGc8P/TR3jBPDuxfrO5j6xmo2KKVZyg0XLjgNzGW5lD?= =?us-ascii?Q?yCMClhvIvLlDKFTGj7KveTmsTA9TeUGkdckjz5LJqbuzQtnLnLtPWXlGc+Qa?= =?us-ascii?Q?9rEsict5zWRozMc1u33l2ZExAAFFKtEsncsdp1MWjLvM4+SpahFvXGadaOQ/?= =?us-ascii?Q?LsJM78g6kXNHiw3ycvK6GiIKqXRt9IEE5Q9bYsGX+oWPJZDz5Arsq6Dm/9gE?= =?us-ascii?Q?fesO3CCVomsz4JMCmqul+bBF9tlqKOEr2itmgpdlq3WvtD6h5hLdDJeUV7Pb?= =?us-ascii?Q?RHoHUuWbB7Q0Dl5SYGJ0XtKJwMWaq/2QYlI8ZtFwkgUCLrdy8EYIp9iINp93?= =?us-ascii?Q?Y2LlzAh8GoTRv76GTXt5TzurxLHsUlVwAmxyJjRYABQk3ProymvUrosHrufj?= =?us-ascii?Q?cG2fUdgJmZBF2oCHvZHoKM+cDfNIzAcqwnuYnPqX+PDaRVB1zmrGwGHVScLJ?= =?us-ascii?Q?gRM8No1ME31nuW5jbd1xqt2SvwWtCe69HhngsrTobRqq8fAAcm/6dc+PWTIH?= =?us-ascii?Q?ZyLmk9l7Q5aVXL0K7lVHtzu0jYILxBjjmAvIrJVYJEI2Eqao9ekXx+dRzQUw?= =?us-ascii?Q?U2tAqLG0kevgEbv+5xROrnEdM2TGtdtMPEXLB2hucqC6LhWZIQoCYXBfG4Ef?= =?us-ascii?Q?2JBbG5I+gyvnqYTfVo6LjAv6KDSaA1H2YQUnZHi5ks+R6TWN7cfDSvANL480?= =?us-ascii?Q?aWM5PSADOj7CIUFIwn8FwttfKZbNmNCxw7lC5NEdAFM0kPEXKbes94QoF18n?= =?us-ascii?Q?fQ467gDZIQxytLXrLNsN6wCzVdRf0jlYgkzq7uHIr3KA7POSdyRe/9cmK1jh?= =?us-ascii?Q?5knlIdTBEIweZyvXM5RxR/8/DqhhaB87QGEamt6wFlu8Ux+xMA/y19pjuu82?= =?us-ascii?Q?4OCkXJj+1l0JpRThwxs2G+bVrH2MVLpuy4gZHbqQkNgwIz01bv+rEc69kIfF?= =?us-ascii?Q?E1c5DshXG+4rM9N126TkGYAfKVYiKUKlCa5Xfs51aDHbcxQOnKh05170bEs7?= =?us-ascii?Q?veUASkdpEl0m6uWWKYkR1I7hBktam+UGWiLasc/58HavKl/tR32YApOCVYW9?= =?us-ascii?Q?NPLNnP9fDNfoEsNKMckcAUS+QYKTTZrvm4KyJDsT9yYE3vr/TxWj9mGKX9WW?= =?us-ascii?Q?9jOyJMUnvbyw5mJvDFB4jFoYvHOkE4wJFVgYdqkO/o+Zuas1jBnyYFAtUeVD?= =?us-ascii?Q?ugrUdS8kNqlnADfisPiMHH88?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4f4035bb-9e29-432e-8e32-08d900af0035 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:09:47.4423 (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: iuwj9dnqkqwUdVkEt7ktSw0wFgBbtXuVgDIua5qXkJB86XCwrMbwJdQ8rXZX/mT1d4g6IwzCWkt+Gf6JIDe3fCcsKh19adl5gj4IWLDum3c= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4691 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.20.123; 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+importer=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 --- nbd/client-connection.c | 94 ++++++++++++++++++----------------------- 1 file changed, 42 insertions(+), 52 deletions(-) diff --git a/nbd/client-connection.c b/nbd/client-connection.c index 4e39a5b1af..b45a0bd5f6 100644 --- a/nbd/client-connection.c +++ b/nbd/client-connection.c @@ -87,17 +87,16 @@ static void *connect_thread_func(void *opaque) conn->sioc =3D NULL; } =20 - qemu_mutex_lock(&conn->mutex); - - assert(conn->running); - conn->running =3D false; - if (conn->wait_co) { - aio_co_schedule(NULL, conn->wait_co); - conn->wait_co =3D NULL; + WITH_QEMU_LOCK_GUARD(&conn->mutex) { + assert(conn->running); + conn->running =3D false; + if (conn->wait_co) { + aio_co_schedule(NULL, conn->wait_co); + conn->wait_co =3D NULL; + } } do_free =3D conn->detached; =20 - qemu_mutex_unlock(&conn->mutex); =20 if (do_free) { nbd_client_connection_do_free(conn); @@ -136,61 +135,54 @@ 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) { - /* - * 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. - */ - 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) { + /* + * Obviously, drained section wants to start. Report the attem= pt as + * failed. Still connect thread is executing in background, an= d its + * result may be used for 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 /* @@ -201,12 +193,10 @@ nbd_co_establish_connection(NBDClientConnection *conn= , Error **errp) */ void coroutine_fn nbd_co_establish_connection_cancel(NBDClientConnection *= conn) { - qemu_mutex_lock(&conn->mutex); + QEMU_LOCK_GUARD(&conn->mutex); =20 if (conn->wait_co) { aio_co_schedule(NULL, conn->wait_co); conn->wait_co =3D NULL; } - - qemu_mutex_unlock(&conn->mutex); } --=20 2.29.2 From nobody Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618561911; cv=pass; d=zohomail.com; s=zohoarc; b=Ouj5q/i1L+TXA/GBTakQXyumHs6zUgiEDHphTAZSJqiU39nDA09xNgXHi1SBKsyevK4Dx3diBJqGK0KB6q2P5082YfPg2LSIngCUDuXQUu4ECGGV3l9ASxUVNAw7S0cuC8lNEtC6o9SwffHIxl7WkNGoMxqfH7UpyxKEX4vFZdg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618561911; 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=kbdZdnVSpBE7cr6CX7U3PHJ1wE1Qt4mkg+T0vtS8HXQ=; b=gfOeFlstM2ANSRb7ki1c1mBRrRnIObjc6W4NiUmC+kVOzLuJ49CQjzcTnlQM8r+dBR1bIbFMRV8OeRRcNomXvs1J0KZlpTEPF13j7miLoYm6ZxVHGeRi/AX5ndpdoBBRdfpSw82tGKvksWAPp+rlH0rfCFgxgaOToa5IKuNRCf8= 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+importer=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 1618561911501773.1758148477422; Fri, 16 Apr 2021 01:31:51 -0700 (PDT) Received: from localhost ([::1]:49756 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJtF-0005Jh-TF for importer@patchew.org; Fri, 16 Apr 2021 04:31:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57826) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJYF-0001Zq-KF; Fri, 16 Apr 2021 04:10:07 -0400 Received: from mail-db8eur05on2107.outbound.protection.outlook.com ([40.107.20.107]:39777 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 1lXJYB-00087j-8L; Fri, 16 Apr 2021 04:10:07 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4691.eurprd08.prod.outlook.com (2603:10a6:20b:cc::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.22; Fri, 16 Apr 2021 08:09:51 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:09:51 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:09:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=K0Hj6yWTXUh8CjK4c4HKZKyyTNA9X0AiiQ8R2O3PezJM380Mv5FOAjrBxCk7ns2oOPkdimd/nBrraSmZfZHXDtSQglHlbwdKRCwmCTs8FlSOzeHabkCaVWht4ivWSGpO4XscnTlYX0LH/eDn2zilJbYsg4wFliyF8gVpshjulxJI34rK18H/7IjAKNchLZhshQs9t9s3+MZgg+gOpOyQLnKXjEVDf1VNo5SxRDj2BGQcT3II6SZbkbKSX5uYtKY/cNh7Dn8Xq9+1ciIfYOghEaAl5d9nJk2oZ89J4YclI/vKs0y0pJUDBOBO72CroI3lmk0zBTYccBB7Byzv9nl+mw== 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=kbdZdnVSpBE7cr6CX7U3PHJ1wE1Qt4mkg+T0vtS8HXQ=; b=ka/kpSlyPKOObP14GT9Y4gwNtnmGeVeCA5bmiK351O2KV/+TQZNcCFfXaj1C1ogamQrrNZWMj/8V8Ox5T7FdqQCuSlkuExTpO9A7Uc083SaxygCC5Cbx847dWNx26HZUs4NjAXFLK4nN+D2SnIpq9A/wRbhUpB/fdohfTzo08Uf3PTTL8VjIJLxLDgBlw+iFWmKvu1cIcjiKwyHlRmiuOedDKfM0F7VamqdqWrGsIS/3TmuljKyKzsnnUbrd7MF8QBcS9IWADwWhcNdcCTLJLiRpRVJJ6N2A1ipTQJoleaWAN7HESBAgODErSjIrqDTq6dOnUU/ypbKVZVIKh+Rc5g== 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=kbdZdnVSpBE7cr6CX7U3PHJ1wE1Qt4mkg+T0vtS8HXQ=; b=NXEU4qFl5rj7RobWW1sISS+NGKf/1wlVhOcgzcVSvwpC7XuD0OM/3uRNNgrtOvgBV3qFpnDc8hYZQnDyKV3hSMXLcaUzw6WOjt5J3grw7ROLk8fPjI/NmYSwnsrlalhz+txzdgCFVAuY3EW/BMdQ6cYLyi8Eo0Bshptgemlrl6I= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 16/33] nbd/client-connection: add possibility of negotiation Date: Fri, 16 Apr 2021 11:08:54 +0300 Message-Id: <20210416080911.83197-17-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: 3a6e5477-c4cc-42d3-8c77-08d900af010a X-MS-TrafficTypeDiagnostic: AM6PR08MB4691: 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: Wc6DtUajFP7vy+VkbOBtvxmDbDmY5bgiI0MmPyOZupWVTxI0q0s4UAN+u2G4XT+g7NDNHlFciK9EcVNrvWC2E3gJxI1FP6v0L8SrPmVqkBs24aFOU341xCJ7fj+Y1JKyopxU9Uc64UafOZcH+AW6So08AUPKgslAYFmBKK6jF0xGV1XHnVEWnTlRZfpzWBw01d6Pj/vFlAtOi63RALr0m+NRO43yiPTzFVfs8vWiGUixAK4HS03BemaVDEKTqwTl1ICWlzaR6g8LvQlOemh3g/vbZIyKMK524iknimg/tYCk7CwVlcKPOkTMS+DYR7J1EKwt5PvsmDiKCoM4y5nQzzP6MMUJkHpgTflb+YEkVDMIvWQZGOSPh8HgYsbhrIgJD9/xpecLawOBYBAFDaGn6Q2pyji3tCEXfrNb5meOqmeedSuts3Zcxv8TqCuNPGcjucE7NP0SupEB13e/I/uOS4UjmSq7BddGhmDC6MHhZZpnz4We/N39b04p7L6XqnmNhJzQQ/g0NF3BIahwV3RL2jZpJNzq7MfmGTWT/px0SN342Ii2oltRwsAVNsa8NA4pTJVifInFx+Co6QfeaOnRRP3I7fXeoHgYp3/9muTGf/nhd80L5CkGgZobdRUZ72U/p3b8MNEkyyw3FO4b7A31IloqV3r4R8W4fWHoebhK0LXorPFCdpIWEKZFmEY1ohp0 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)(376002)(346002)(366004)(39840400004)(396003)(66946007)(107886003)(8936002)(6666004)(86362001)(2906002)(186003)(52116002)(4326008)(6506007)(6512007)(26005)(478600001)(2616005)(1076003)(956004)(83380400001)(16526019)(66476007)(69590400012)(6916009)(316002)(36756003)(38350700002)(38100700002)(6486002)(5660300002)(8676002)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?FQ5q9RV2HoLZpI0GVL399DlgG8LsBjV2GVhGsgIzK38cjRbYkmgDLWlHjOK9?= =?us-ascii?Q?xHXjsPtv3AMfZWRZrBdm/3BZVoP1BsyjLi+H3lDlCInT1qlP3e9j5oEcJlF7?= =?us-ascii?Q?MvVg86n5lFZQwDrjMvUBbii7pH7Dr9qwD3rvEblcxflAjzi6ASdas7GlKNHY?= =?us-ascii?Q?0ENKPfQ0o0GJg3Fd2mae3B6oWF2M+iq4QnWvY7GYEmfKXqTwQd7xEhck1mFi?= =?us-ascii?Q?JqDw77ehaKIC0u5Jb9t4cs5vJaO+g+bEVNxg6egLCLZPkVrf44GxgECOQD1P?= =?us-ascii?Q?OfZ+r0Ym4LduBwJJSIdn8b8OzOQE5QYkTa/hENMFCSlQJSm6oKJy5aSPOckd?= =?us-ascii?Q?7t0ZycX3avWSFuk04fVW5aiEDexJlONH+gpo7PMVXGHjTSNI73EEnGJjNFOq?= =?us-ascii?Q?Q/ce0wHjCd7r8GrK9eJPOGwZuDRn7u1mzf00iidlJ7oJAbGtaLipTh2TMzIr?= =?us-ascii?Q?Fl3/9LsCb4MDW5OXHhMAl3fYJgqQsaHCVJjf/soU/QhVnAfIgRsmW2xV3r3W?= =?us-ascii?Q?VkhtrqQVdA5XHTpSNnDO2zIjk2sMG91uYyDhtznnyZvHqpFzkwyPPV59sPbY?= =?us-ascii?Q?NDu1GC5sCRuFR3L/3FTZ3dIkKw5D3c6RuEk647Vb2Sp16aGba+kRgCMaqSS9?= =?us-ascii?Q?533acLwPax+L4Sc3q9/QYJiU8EsfJHXL4IIsCeK1AElXPvXNLBU8SIRaQVZV?= =?us-ascii?Q?W91PFMe0dS2H/s7BeCvDWSb6wrbk4KCWGGJpyltiSRkDt5Qb1I1yHAN1LwuW?= =?us-ascii?Q?9FgezZgk0wYxJwSidzfI8OmvdWtNUMM3WT0jxcGGOVOeAzPp7yrgodBKCnnV?= =?us-ascii?Q?rgl1cT9UCi1ekT8cQTPZD9AI8VdqsiROeuZe7Siv/jrcWGR8+pVxcElMdd7R?= =?us-ascii?Q?BjmtwtCRR9LXxgVJQWx/m6DDXB6UO4L6zY7kcCLPgWy8w+2vl+Dqh8Qwqb2H?= =?us-ascii?Q?r/SirHX6IJ0+dnL7J2Y6gsbaH2LZW80IfsQIBKxSwjnbP5FO10BIu64wsPL6?= =?us-ascii?Q?mzAbpG8KZ9Gzr8M1bt8yKWu+sAFqq9jszpGU25rNqq6gWblSJgp1BiSrrhTE?= =?us-ascii?Q?Jz3mMq4RM3sU+SHgXE1sFViBiT2A+7WaIDcq3pHVJN1NEGIFxSh8mIWxae47?= =?us-ascii?Q?bdnkUc2FPT2ouy3O7YAJJ53Ic1TtkE5EGP2FQd3HgN8JHx6TFO7YeC/5ry+9?= =?us-ascii?Q?NYDwEg0qkfpLZaFRxMWWhc1Aw9uCyESEmY971Y0+v32hQhXxbriHwRWDs2mR?= =?us-ascii?Q?okwOqp1vnk0Q3w54uTlEkHWhyxc8ycy8uoixVQLHBYnjUXJlvWeTFqO7lRba?= =?us-ascii?Q?TqAOqYpQ1DtlBuLNg37ImNYd?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3a6e5477-c4cc-42d3-8c77-08d900af010a X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:09:48.8342 (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: VvLts80CXUXrOY+xbMLr+0BEv06cSieNq1mk06q/XvR2fdzw46JAZ3MzdC3TRbE+jE12jlY6OhVkI5Qwz1UaIXnglDbGviFSXn0np6sHHSM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4691 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.20.107; 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+importer=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 --- 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 9bd68dcf10..5e63caaf4b 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -361,7 +361,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; @@ -2033,7 +2033,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 b45a0bd5f6..ae4a77f826 100644 --- a/nbd/client-connection.c +++ b/nbd/client-connection.c @@ -30,14 +30,19 @@ #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 /* * Result of last attempt. Valid in FAIL and SUCCESS states. * If you want to steal error, don't forget to set pointer to NULL. */ + NBDExportInfo updated_info; QIOChannelSocket *sioc; + QIOChannel *ioc; Error *err; =20 QemuMutex mutex; @@ -47,12 +52,25 @@ struct NBDClientConnection { Coroutine *wait_co; /* nbd_co_establish_connection() wait in yield() */ }; =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); @@ -68,9 +86,59 @@ 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 + * given @outioc is provided. @outioc is provided only on success. The ca= ll may + * be cancelled in parallel 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; + } + + 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; @@ -81,12 +149,19 @@ 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 + conn->updated_info.x_dirty_bitmap =3D NULL; + conn->updated_info.name =3D NULL; + WITH_QEMU_LOCK_GUARD(&conn->mutex) { assert(conn->running); conn->running =3D false; @@ -94,8 +169,8 @@ static void *connect_thread_func(void *opaque) aio_co_schedule(NULL, conn->wait_co); conn->wait_co =3D NULL; } + do_free =3D conn->detached; } - do_free =3D conn->detached; =20 =20 if (do_free) { @@ -131,12 +206,24 @@ void nbd_client_connection_release(NBDClientConnectio= n *conn) * if thread is already succeeded in background, and user didn't get the * result, just return it now * otherwise if thread is not running, start a thread and wait for compl= etion + * + * 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 @@ -147,6 +234,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 @@ -178,6 +269,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 Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618562047; cv=pass; d=zohomail.com; s=zohoarc; b=Dd0swAcnjBxX4c1Vyry2QzdnvIMc39J4xvv97ZKQp2HQPivCFfSSXx4bhWQVrmSN+33kukAqGJ/3cPQEBpfYUbGMZE+hFWdpdAb4KARE+HVP4ml4m/6RB6NAlJWduVWzYXlSYukY6HooVl7n3SMhvtRKv0fQlAbOzjkJSaIhD8g= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618562047; 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=dqo7qi6WjGjXWGfNa9dVmcOaphVFfX0ksXZlZG39yh0=; b=bjN6n23Rs7mtOXRxlX/TzkdZ4WyC2bnM5quGrbKnNQnS4GqiGoOwYlqRklnVHdbjaaTrINN94JPoacuvnfzmkJagD0WkokY8tjR9C00jct+Cv3l04wlLHQSDzBuShh5wIw418OY1QVTIO64uHbkVI0sR2I0MZg5dgoKgMdn3Rek= 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+importer=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 1618562047170313.7779231206421; Fri, 16 Apr 2021 01:34:07 -0700 (PDT) Received: from localhost ([::1]:54052 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJvS-00075A-0w for importer@patchew.org; Fri, 16 Apr 2021 04:34:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57828) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJYF-0001Zt-Kf; Fri, 16 Apr 2021 04:10:07 -0400 Received: from mail-db8eur05on2123.outbound.protection.outlook.com ([40.107.20.123]:43105 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 1lXJYD-0007xx-AM; Fri, 16 Apr 2021 04:10:07 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4691.eurprd08.prod.outlook.com (2603:10a6:20b:cc::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.22; Fri, 16 Apr 2021 08:09:52 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:09:52 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:09:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Pw41YnIcuSgjCAmxBMuIMvR4fYgLp+67zhFc+Rt08f0ci0yRVXubKzkx149ubYekWTTv0mzJYoAbWrSpl7q4T7zbUegKz4Vj9hh4Wdeui73NezRoXABRUaA15Zx6mCVK1BXQtgr9eau9cszo9IuTR1wAs6SvAxJQuWVm+lDBsm+cCuwYDcXHIi5bS719/MzJLgIB7e7qfMvACjL0dzZJSGL9YB6/cxmGqcwshgyJBZpeqfqYqHrORlJnrA/G66vIoJFu67WnUKX8NLQRyqd4kQQ1j8bhTh7+tCOvotIsOT5NAI69gI+9rOtZJ5SoYQ+Tbt7/ayEaklVcKgV0dfoyHw== 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=dqo7qi6WjGjXWGfNa9dVmcOaphVFfX0ksXZlZG39yh0=; b=aAYXg4gDflHtnloyy2pm/21EYLOAOAm+AbuUTVZL/cqDzzstyXgZLYEp17MIVMm/8cgymQxlcCFMhbphvQ2G1NNZXdvHUH5FO2eHuz2/3F/JRJPDjqOD7n+Vw7F1668rLCjzW6BSN3mcfhyQ2peUW1Sg+7upxTAWJSAddDeOLcvsv1FerNXopgPF8MlmcpXEKecz6aKTd4j3w5/NGbnGmagUMWV5BN+j+LJ/GDAi6MEHRcWOUYU2pG6PhYrrGwikUtRLyVg2e0/sTB5C0zI5toX0KKm+YjmVrQuRsI4mNXtWd+lP4ALBsj863H94u2Y/St28eNoNYwqTS5rSzPxRzg== 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=dqo7qi6WjGjXWGfNa9dVmcOaphVFfX0ksXZlZG39yh0=; b=FJrQGNeicfXuJhA9ffiwcKQmLF8z43mDl8Ba2BFrLwj0l07bbEKD9eFiFtdg8YOxBn1tPshMvoRkN/6uW5oHYYUfb9I/CFNG9Fvr7hru8n1ucELjtvqgzrGA1KZVq4rn+mQhfQbdzfvAkhr1ggM/Su3mtDHGyVjB+k2YQgfSh84= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 17/33] nbd/client-connection: implement connection retry Date: Fri, 16 Apr 2021 11:08:55 +0300 Message-Id: <20210416080911.83197-18-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: 3cd8dbe0-0666-42e7-3ffa-08d900af01d8 X-MS-TrafficTypeDiagnostic: AM6PR08MB4691: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:510; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: G2cElnWA0zZI/A5W5UnFsh9cBSW4TnORGVGerCQW/tixUnxRzYnT8xggdH6KCJcbOYeKeKzjxTLLSoXAPeld3e8+Gr/+TbzyZGR21VjjhashDu7+KnMjYx5ZNsGmGk4vZi1D8aN3LQyO7BibNpzjfgPG8HETsMV05S7JyChkXHjAgTj9GOGkVAtLZP9QNL5mWgtBbXxGye73WbBf6Bvhx21KyDq3G0rUg0YYX/S2dmaoAJkGd/YqBUd8+urMNCgIagKWCfumhzjqizIC49+sOt0xsKfqZt/GNVmYoyA20dYluU/+rSbXbZbzcBAQSpf/xXN3gEvei7XxeOIcoMc+DoblEzOMdy1vMTdr7Z5FVuh86HO+7JW1liKCwOwjXOJmA3TXuHL2yK6/NJs16JK4rNg9Ng3kF4UIklISsJPGI7ZwhOCdNx5qIkoALPj6Z76INpU078jPdgLv/isTSSaePkmJ9PxiYjaZulF9ABB+oXeXCZBMju001uuDM88xUqV6CS/pky3KGxxaVcOTlDDB0kS5birgzgWraf1VPR5AAsb6jiGmaWEtSB+6DgbL7n99sbNC+O0TBPel+OkgvHQ2X2iFxMDI2c7px1PTjS01t3nyTF7V4Xqaqj+FfYZctm7taCGnLaQwY9HwNSeNq8bGlFfZWYatdJXl5g1dcg1XZvJJf1w5dOm8y1jUx7Va3NOw 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)(376002)(346002)(366004)(39840400004)(396003)(66946007)(107886003)(8936002)(6666004)(86362001)(2906002)(186003)(52116002)(4326008)(6506007)(6512007)(26005)(478600001)(2616005)(1076003)(956004)(83380400001)(16526019)(66476007)(69590400012)(6916009)(316002)(36756003)(38350700002)(38100700002)(6486002)(5660300002)(8676002)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?T5s401LQyxSwFfX5SIAPjykkmDF0GpwWqq2CS3N2sPTdllPSEGkxWVEwOngV?= =?us-ascii?Q?4V5d1RFI7is9Zn9YxTGsJI/ZIOE68FNjqqrpdexTBnLMDxWfe5de5pH5Ot6E?= =?us-ascii?Q?acDNKPhwBxyevWhnhvcLa0KEuSL/356v06VopbpH5hmD3W5020iueRzVekKr?= =?us-ascii?Q?VaUTFq0uZA/ssOddGsXxSYxGz+SpPX0votxoxfxq0BVyoj9TZP047K38xWev?= =?us-ascii?Q?+/HhF00h6vx9/sprUyYXCeyKTq3R0C3CeudKjOa4PTwCjL0u+el4PFcOaeAM?= =?us-ascii?Q?2dVXs7CyH8tljvVswP5Ohf1DVnQvyxGP0Mwm+84U0/b77OQ64F+kYcJHWGqa?= =?us-ascii?Q?N04XH79ZzTllQLt/Qn/rHz+PvUrSWyIUX377GJPaI2nwzi7lmcutZduFeF65?= =?us-ascii?Q?8fzPr7G9cVgQWhk3/wTYyp7Nq0R+6s7nafY0YoRUHrnuls+9+4X9wbsca7tk?= =?us-ascii?Q?oDaALaLmbXs4mWfKzp7QSLorrSxxmbqCLSzJ17RVKcvSm1oAactq+fCDf2QX?= =?us-ascii?Q?T/ojyGAUeJ6rLQ0kkhWFM0Oq4xLFTLq1S5m3oa1sMBo+v/+xjxznLQXsN8S+?= =?us-ascii?Q?aP4P5w8lDUZ4LQBypjaKG910dGRGgY1qOHzKr1pli2rJ3ruo70kZJR2flQWQ?= =?us-ascii?Q?g8Oe6jVUufluiSQInHnbE1C41JLkjhqs7IKWUGmHUDEUTcx6Qwwy77aVCsfS?= =?us-ascii?Q?+7qgiewTtQ1bGq6KXmtF9ukVeAtrjLZqH/EYxdI0D+2nREacRMaP0NI4alAV?= =?us-ascii?Q?TaY0lTOjI5TuTDIl72Llxqwj4fwBB667YowhI2gfk1ZEoCL9AIhKDwPnRHck?= =?us-ascii?Q?79OO/MP97lQdUz4FadixRG1HF9Yfs5LD2ohHfjfysLLhCPDjclUhjMq6E5Ol?= =?us-ascii?Q?v2bh/gxohwwLtRfxs6E2DvEj10rTMKsOoHIUoAaaxR2u2ecyAfiS29j5qMa9?= =?us-ascii?Q?bISsqNWH/NoC/vkLgSTy1vBhg71B0VBxGX/qbljXCucGKBKpk41WxBtFroYX?= =?us-ascii?Q?n/qjjw0n/3VEagTZWYu+X/K0+3SQfFVcZiegYythVWe1PEKF4h6x1qDmwSJS?= =?us-ascii?Q?GJmATIwc+8IX6AuawRoY1Qo7QWJDvjvXBOuaSUaFH6NG0NG9AHHJzen1iI2l?= =?us-ascii?Q?81TMhrNQuz8fcC6OZmRp8F1ZsuHFycLDMinqJn/DrEssntHAr0cxBaBuHwbE?= =?us-ascii?Q?Ga9IrFULubS21AASLRmD7eiqW4NON0ZOx+WERqTcDrSrzUsbD1PUk4wyBgVG?= =?us-ascii?Q?8//LtpkLI0/+b6ivBF88WuHlj3sq9oUCPP3GGIpPJTpyKcpkjen9v0t3DoFY?= =?us-ascii?Q?a/0EvMxxJ/sivdSj+ZVEqvux?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3cd8dbe0-0666-42e7-3ffa-08d900af01d8 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:09:50.1763 (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: pLGzI4+nbV21+gCCDvKEu6ZhsOP4GAMuwIimVLuzEjy0piwbdd6DBB1b0kGDzD7BSlI2/TTXFcZcVL+LuBiq4awUhbBYW6P7hbdP9Z/AuFY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4691 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.20.123; 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+importer=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 thread to retry connection until success. 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 --- include/block/nbd.h | 2 ++ nbd/client-connection.c | 55 +++++++++++++++++++++++++++++------------ 2 files changed, 41 insertions(+), 16 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 ae4a77f826..002bd91f42 100644 --- a/nbd/client-connection.c +++ b/nbd/client-connection.c @@ -36,6 +36,8 @@ struct NBDClientConnection { NBDExportInfo initial_info; bool do_negotiation; =20 + bool do_retry; + /* * Result of last attempt. Valid in FAIL and SUCCESS states. * If you want to steal error, don't forget to set pointer to NULL. @@ -52,6 +54,15 @@ struct NBDClientConnection { Coroutine *wait_co; /* nbd_co_establish_connection() wait in yield() */ }; =20 +/* + * The function isn't protected by any mutex, so call it when thread is not + * running. + */ +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, @@ -144,24 +155,37 @@ static void *connect_thread_func(void *opaque) NBDClientConnection *conn =3D opaque; bool do_free; int ret; + uint64_t timeout =3D 1; + uint64_t max_timeout =3D 16; + + while (true) { + conn->sioc =3D qio_channel_socket_new(); + + error_free(conn->err); + conn->err =3D NULL; + conn->updated_info =3D conn->initial_info; + + 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.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->sioc =3D qio_channel_socket_new(); - - error_free(conn->err); - conn->err =3D NULL; - 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; + break; } =20 - conn->updated_info.x_dirty_bitmap =3D NULL; - conn->updated_info.name =3D NULL; - WITH_QEMU_LOCK_GUARD(&conn->mutex) { assert(conn->running); conn->running =3D false; @@ -172,7 +196,6 @@ static void *connect_thread_func(void *opaque) do_free =3D conn->detached; } =20 - if (do_free) { nbd_client_connection_do_free(conn); } --=20 2.29.2 From nobody Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618562152; cv=pass; d=zohomail.com; s=zohoarc; b=bIoDUG0pmXLLnLeHiS+jdTni1dU5l9NxpCPxE9rjb3JG6Ay+tdnRMfI44eFZqgZlCI/+eTXLymDERQxLDHKM+0g9gJetaY9Ri+Q5PGskoOiv9LJ7Jk9ABqZUtoOJW/hiED2EzxEG4e6HU9E+4iOz1xqjTV5Fmj6WoYK+s2rcPFs= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618562152; 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=6bgdpQqqxSl5W3be/xWcDFbiKd4XJljP39avVm2vc6E=; b=fykkss2hfFTfnWN4f22VwEBPVKugWogHlA0ll5fGxnQQKEhkKvpfcua2DIsBkjYsyDIlaqkMJ/Bpbfj3cXdBR3/8xkb0/OXmUChkz/e4PrIr9MffCKbdRElfBufWCL42KueNyEPGNdGbU//ts8ZyAPj95UHbwimJpJ3FiP8ShMM= 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+importer=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 1618562152071526.552103835421; Fri, 16 Apr 2021 01:35:52 -0700 (PDT) Received: from localhost ([::1]:58310 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJx8-0000NA-SO for importer@patchew.org; Fri, 16 Apr 2021 04:35:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57908) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJYJ-0001dj-Aw; Fri, 16 Apr 2021 04:10:11 -0400 Received: from mail-db8eur05on2107.outbound.protection.outlook.com ([40.107.20.107]:39777 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 1lXJYG-00087j-9I; Fri, 16 Apr 2021 04:10:11 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4691.eurprd08.prod.outlook.com (2603:10a6:20b:cc::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.22; Fri, 16 Apr 2021 08:09:52 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:09:52 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:09:50 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TcUmFGB4qEQUeWKJbGfK/G2YipZ4/W6sqXvWRJW14hmSp/iut+GhX2blILgbaZymMNmCuWYYEOSLgV2NGM2K49Ygi4qKTd5pPpRd+UUON3zKr3Ocq2yuMig430btGXGECfg4x3Y0TwloyJMmnhBGBceovwWrsFH44GrQ9WjUDd4V/X07r7uKhEXJXFAm/cN5Ei048sv7rS7+rwN28mtd2NeDzzwBQ8N/ZxF9Qv5i3d/wDmd+HZsJqaF9PXBnof+pL5DV4teIFNOLSuUb1KC2aOXh+InGS+5Kfhr0W0Br/d6h8t6GHoYo9WzSFkQ2KwzXKE9WG7rz8qxHvU2SGnlNHQ== 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=6bgdpQqqxSl5W3be/xWcDFbiKd4XJljP39avVm2vc6E=; b=XzsY3Aj+p7WtE5+FUfiSccwVHRbxLpNIR+FlrrR+aBkyC8wqg6zmYLu/1jO3FzO39yXT8UftrkMGK2LPDAxu1Z54d0FWUQdCY9I0zkp6RnmYUIc7gySh5J7nb4FMYe/muR3eoUIvd9fANtQS7T2Cy0DVLDQ2aJWWy9ny2AHqYiaXZm9fpLgGZR4kLTPs9T+TBUIX71Bwpc0/h2OCbJdxmgpLISQLxHDcUTDzpja0NYPIcQWooVsEVRuywgVwknZpMmTZVLqwYVNCEUvOukW2d1c7YFOUBgppfd6CVlO4qFLWSo6ALqisi9aitgfzyfWwqk2T58PzQM6BQS98vptdOg== 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=6bgdpQqqxSl5W3be/xWcDFbiKd4XJljP39avVm2vc6E=; b=bbH66Zn7gBORPifrhNAUchMb5zGPMNKGNdquv5h1f8vRXtJ6rE3D+lMzrpZvFnxeBya/gDc/A91SsePmwB8n9VKzYap/lyFNVCXlSlGlHkosIHK7H9lG2rK2iZ3SV/xbjWFmbUBlLcOHA6w+GSqVpS3N8rpegIgQEz8DO8WR+V0= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 18/33] nbd/client-connection: shutdown connection on release Date: Fri, 16 Apr 2021 11:08:56 +0300 Message-Id: <20210416080911.83197-19-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: 470f2c9b-8a19-4fd4-683d-08d900af02a6 X-MS-TrafficTypeDiagnostic: AM6PR08MB4691: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:220; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6EdEqiMWx+R/ygjloltVsCmyd+9Rw4iOhAP9hDTvXIX0HKqTTgzxsVJSJ6x6fRDxypBhJt/g+art8OZ6+orL61VceiMb370oPBWpxHiAkAR5J0h88vyKiexVk1iQlWJj0BxhHXBMtcVce7PjksyL/Wtwroaw+I0lKq4EiWVgKF6r3q6puTP0VyI38gObT7R7pGwJXv9g2RWQ4sbKFnf6pBQzF9shBMRrAwDR8BW/RtCVfYG7lhYLKgC5EYrucsFW/USJ+8mni7iKT0XUudH9t/TTx+FgbKnZjFLPS4S78bpm3Hw0QModYLQgP7CVuYYdezLLxoanC5Ger78mN8c4BfTXIWe4wjPPHGRwdoga5nFt4E3y5LWJIOTMMtSPoYcngmICpqifaSxg553AwXgu5a1rPz3IJlZuJ0Xc6BilM2oF3b5hs8eC6MxNEOHjMN+6L+M34tPq4+uhB7VTIgs3CUgooLmJlccYZMiXqNIhayabQMrDlsKsSCKjXAxQDiolDZ5nIQLTWb7xav82WwZ+lZxcpDftlmnG77m62kri/kxm3TBw2oOZ2s/L2wR61SsB+bUg1mT130YmVTW7I602bpQBtfIwcUb3L7EzdkdAPit1eUwI1knp7m4TK9xB83efY9M0qac9R0QdEO3ykEFEF+wYEhXXA5J/4wgJRMm+liHKP1MIfU4Mc9PQmXlv6mvd 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)(376002)(346002)(366004)(39840400004)(396003)(66946007)(107886003)(8936002)(86362001)(2906002)(186003)(52116002)(4326008)(6506007)(6512007)(26005)(478600001)(2616005)(1076003)(956004)(83380400001)(16526019)(66476007)(69590400012)(6916009)(316002)(36756003)(38350700002)(38100700002)(6486002)(5660300002)(8676002)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?7Oj+HF17flno480bMhn+eGBrm4CmPCT7iOhKdUW078CoTtsxMrI3dHmGe2NI?= =?us-ascii?Q?p3wTMzKX0D3e2JG9/s2jLcDDTHxDhL5TSEq41inR96cnFZiixp0osYlszeru?= =?us-ascii?Q?mX3PqWaa9TxUTP92+0Wd+l1zpzYzA+Mb9x77GmgeHbm1AlNqJZPfwavT2cg9?= =?us-ascii?Q?TJ8yRzrGyfc0A87g2yWOD5undSqgtg1wyS7F5VL7Hxa6djCLP4VSnj7sZb/x?= =?us-ascii?Q?WztZvVtIeOMZRSQiFLvod9wVfDphuT+U4PJhwGuPPe8U7TwlTH1RO5nqioLT?= =?us-ascii?Q?L5WhL6t7HyNPpvYcOr2vh8IZLukvALf90GN3V8HBsdijYh9bt6jbo6yBYGPA?= =?us-ascii?Q?sVisnJDGK3Yq9jfyRe9VEKihvjdcaM/BJ1mdkiZDH3uhJq3rHQsgbH4Gqp7e?= =?us-ascii?Q?rap/tJzT/ztN/pDMjaeK7xS4MsF5RfXwDJmKXv0LpC+I/6yARSyg1LkvjEwn?= =?us-ascii?Q?FKocbm/QBL054Ja2NjejkK89s/PlOYVd/vyX3GiRdSZC7zQT3tosg1QvoYxP?= =?us-ascii?Q?Peq8dhkT3lNBCuws14SQcaIxIgH/GfbenTNlyW30QdUxwOjJDLAUDI0vBDKU?= =?us-ascii?Q?RNdES69AAulqdJpCW+HbJnWrDcAHNVpJhb2oDpnC7U9fEltAU1lHLkB22yJx?= =?us-ascii?Q?o7mm/6PQdYPIGzOmvNZYpA3F6WwUbCKMXl2Vgebz6or6lcwTlPygp9k5WnFi?= =?us-ascii?Q?v6ykY1bBkg96KWS0Q5Fzum9uqgSlyCRzypJr7vb43YXlKPqmJw//Isf9Ec7H?= =?us-ascii?Q?dgH76r3jG53YpFIbZZAINQ+k0ChFL7pLONflXTX+fLtFy5UGoVddqQaZFdND?= =?us-ascii?Q?R1Qt4J+rcTosh2V/vxMQh7Ocs7M37lCRleH1JTjBC1I3W0HqoDGIcEhkg/3I?= =?us-ascii?Q?zzIBTQlmOU+yC4E2NauExUTWZvw3DwLFq/1vtQNOtqyjqLlArhmmOmDFxveG?= =?us-ascii?Q?dLSafBT8CILHwr2BxJd39ftnw3/HQtyoZrY3Gl9iQHlVqlCAAWxIfvxiXND1?= =?us-ascii?Q?uHH3tdqbTs/1MDYW8PLYW1weeOA0LRXa4YBsNE1NCl2mvPOwSptPbXEKLlCC?= =?us-ascii?Q?nuwLuhuv5GLcdKLhBeW4Nqzsv48UTKOJvWY34hLyRr1+KawDmFhdMoi1ao6U?= =?us-ascii?Q?+3VzqfHSolw79nirdi+TWUf7jtKkIXG2+ebWVyBmmawp1MaTt72PlM1MGyg2?= =?us-ascii?Q?Cn1/jq6M8pQXkBEJe31JwcSkC83d/oZ6MUexWVJCeiG7i6UKCYPYslth849m?= =?us-ascii?Q?ZYSJwK6/L1jca+9nFlNVXtG+uJUihGnqT04VK5f9/s7as7xnjHiPxmNbKpvF?= =?us-ascii?Q?o5GhPwhyihAPN4crI11sz/QG?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 470f2c9b-8a19-4fd4-683d-08d900af02a6 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:09:51.4995 (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: Nmej1GO2Yp/vx8Bw4MfkT+BFwyDzfjzDAnYiIHX/pBMyk5ILxuMH2JNq7MO7inpAjarK55uIs6ZVjy6vY+uEZu5nkGBbC3fPO+vIm+k6s0w= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4691 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.20.107; 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Now, when thread can do negotiation and retry, it may run relatively long. We need a mechanism to stop it, when user is not interested in result anymore. So, on nbd_client_connection_release() let's shutdown the socked, and do not retry connection if thread is detached. Signed-off-by: Vladimir Sementsov-Ogievskiy --- nbd/client-connection.c | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/nbd/client-connection.c b/nbd/client-connection.c index 002bd91f42..54f73c6c24 100644 --- a/nbd/client-connection.c +++ b/nbd/client-connection.c @@ -158,9 +158,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; @@ -171,14 +175,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; } } @@ -186,15 +196,17 @@ static void *connect_thread_func(void *opaque) break; } =20 - WITH_QEMU_LOCK_GUARD(&conn->mutex) { - assert(conn->running); - conn->running =3D false; - if (conn->wait_co) { - aio_co_schedule(NULL, conn->wait_co); - conn->wait_co =3D NULL; - } - do_free =3D conn->detached; + /* mutex is locked */ + + assert(conn->running); + conn->running =3D false; + if (conn->wait_co) { + aio_co_schedule(NULL, conn->wait_co); + conn->wait_co =3D NULL; } + do_free =3D conn->detached; + + qemu_mutex_unlock(&conn->mutex); =20 if (do_free) { nbd_client_connection_do_free(conn); @@ -215,6 +227,10 @@ void nbd_client_connection_release(NBDClientConnection= *conn) if (conn->running) { conn->detached =3D true; } + if (conn->sioc) { + qio_channel_shutdown(QIO_CHANNEL(conn->sioc), + QIO_CHANNEL_SHUTDOWN_BOTH, NULL); + } do_free =3D !conn->running && !conn->detached; qemu_mutex_unlock(&conn->mutex); =20 --=20 2.29.2 From nobody Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618561412; cv=pass; d=zohomail.com; s=zohoarc; b=NguTQ8NAWa5Hqd5hJxcysF7EHvN/rvaoT//lg8yKB3Cs4vf+TDoKeScONT+1N4QhfFrGOuo+V0aKHQb7HxnAvv+eGWnDKcZ5g1RwvG90Tr7pyse/t6x7P9WjF2NhVEDYU4nFLyJSOO9C7peNKzTRBHEqj7OhYse1Kmb6Tq9sDhI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618561412; 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=3N4rWOaOPbcBIU9ESJdys2fZA7TE6DSpxJ9f4Jdfucg=; b=m0MvdVuW0h4J9l5hVABF5W7hvsOrW3vXjsADslUsDDqifeRGf4O3vNqxQLjJdgGDuS/34MR92cJPnRvxRRT0ktdUTbp3PHf1WFYars0j93t9YQ+rwJa7gBG4Gt5NrQvjLD5dd+nWGj6Eh9NQqMI+x20xG8RM7PgSvC2p7moHaEs= 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+importer=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 1618561412115427.9867352125872; Fri, 16 Apr 2021 01:23:32 -0700 (PDT) Received: from localhost ([::1]:53460 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJlC-0003El-VA for importer@patchew.org; Fri, 16 Apr 2021 04:23:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57948) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJYL-0001hg-1s; Fri, 16 Apr 2021 04:10:13 -0400 Received: from mail-db8eur05on2123.outbound.protection.outlook.com ([40.107.20.123]:43105 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 1lXJYI-0007xx-3U; Fri, 16 Apr 2021 04:10:12 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4691.eurprd08.prod.outlook.com (2603:10a6:20b:cc::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.22; Fri, 16 Apr 2021 08:09:52 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:09:52 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:09:51 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BZBXroVfdi/CBcZOxExxE8FfZfERV+U/+wP1Ngf1iBaL7+5baUBKBjkgv+SF5c7PXyB7m2mqiAq8UjHskXmERLDZ4Ux+7ShHunJg3FG1HfS10pc0n+LuhEbbiKyC117Zr9Eckx4/MKoKobuDpb7V0OZXWDr2PG6Q80yevJfLAz+tJh53YSvlp80DN3r+MKx0wRy87109CsxNhMZBWJM+opbLzC1jXGTRTrMrSZ+eE5cDYjBzeDoE3uOOl+HznlT63FEeaKOWwnMHqOaN+ch9Es2MTLRx536xLh1q2NgJjjwn+PwnAh6rdyVYvex8oDakohY1LA3ZmfJAgocQzoWNDQ== 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=3N4rWOaOPbcBIU9ESJdys2fZA7TE6DSpxJ9f4Jdfucg=; b=fleN8g/11FfMi4kZwu10RjK62VK5G1VwosD+jQWhTK/OLB59QCtHO89XivzrKpznfozn5O0eR8te9O+a+RdC7RTlNrS4jobo3N70Chz7v+7b9W3rd+XxqFhMu/mROgA3962dio5B18I9vLZEnnu7ijYLs1NdkSwLTMhpJ/68dG0QbO0h9dalIaGJuJfnFEbpWmbdMyDn7sDGcpOXujIrTiy2Yd1cwn+mBKlMuolk/0pw+e279yolCCg4a5+TZ0D8Atj7MX6ZKAtdaa8mgcmCcXlEY85zJiO37eQlgj2vrPwLM3FOuEkmB+5JxEi0Nqw86wr039xg/Uhlp5NYKAxUvQ== 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=3N4rWOaOPbcBIU9ESJdys2fZA7TE6DSpxJ9f4Jdfucg=; b=eeTqxUwpok8EUoNU9E6NFqgQmjNu7vJcy9Ux7WoFw09gxaWJ2U74HPIutP4Itgo1QQr7W3Z1eFj3+zJZqIYMspDmh4KYJ0wDkn44IiypWOb2Sq3Q2zHMaMXMr+CtFkhFRa6pGXrIBq/qzdiGQcbl5l5agX3OrC/Q9BqumZGhpLA= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 19/33] block/nbd: split nbd_handle_updated_info out of nbd_client_handshake() Date: Fri, 16 Apr 2021 11:08:57 +0300 Message-Id: <20210416080911.83197-20-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: 9a29cc7a-3b9d-4f61-2edb-08d900af036e X-MS-TrafficTypeDiagnostic: AM6PR08MB4691: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0yX3tck+K6MWARSs2xWR//62GUQKakWpUJ9n7eS4DE4aAjU2ML1M/b5KwaVxLJ9nwSlaOYmnwNoN1GhkYS39LEqLZUJlv2/dIZTl/Os1CzpaS6QdSlIFyH7uI41i4SMxDErD8QxAYGukCkA+e2nKy5bXAsQIA2yIvpkvm2H+1xz4SIdKsiYtdhvD3EconJIdDzaUzheGv5u1MWSHhqUgNKX0lDmM9xNCV8KdPruTxowyB72QzTJVNjCDV2e/K+p8p8TnApWfGkc7f5jSGsFZQsJf+BQy9eJx2kO19K4IwoVluOSoQX2UYQZUiF2+2WWvMbfyDW7W+I1hN9dSvvxlfC/yVFc/nayofjnd2BPghHpWpMqp9BInLi2MUkT/Gbcfj7+pRRdISEOqGpFVi0zGz4s7yxAHo58mZxZ8CoNdwJtGXT3yJBqevLUCrQokJCbwJPwIGXoyzmn/nhtZbSrKTL5OUd3RupGS27i4umvN80dFSOjZB6vpS/3pf3Jg4YnmVE5PbI+h74UuOSvKzs3HX28o+GyyuHbopr911FmaS7+P4cqPVCyv6EVqd0Wj89f/oKYVLlGgcQ81N4asUhd/WJh2L9b6pYGdOL5AaUehqQNKgqFJoTW1GxzXboaD6CEySe0C/WPjnrMtscwwhalA/pWVngtf/z6dshiGaflaGne4LNO0mOlEE63XMXrngTq3 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)(376002)(346002)(366004)(39840400004)(396003)(66946007)(107886003)(8936002)(86362001)(2906002)(186003)(52116002)(4326008)(6506007)(6512007)(26005)(478600001)(2616005)(1076003)(956004)(83380400001)(16526019)(66476007)(69590400012)(6916009)(316002)(36756003)(38350700002)(38100700002)(6486002)(5660300002)(8676002)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?FOz3GCy6/eZBpPTxZOxG57b6Vi9bEJc81olfr62MU0cSB0VF2Wislpd7p81R?= =?us-ascii?Q?2WW26N0Rvk8QjdyMgth2+btTi2fok7yWsYGZ2SdQ4kPw+q0dVAir97lq8miw?= =?us-ascii?Q?uW6J/MlHI7wiCUqnQRsUWugFXDbSeVgpbkEN5XQIG4xrdjO/vOytcusLaKO/?= =?us-ascii?Q?ruaBH1kHuN3vGaUs3Jupf4sNIXTfsPVxeew7o6AvpT/FZDnDnYnqHIIud8MY?= =?us-ascii?Q?R0om76cEFsfG6K5+xz8C+hPCUzqehQZvzMqI5cZlC5MV3zP0ZrWS6+FDJeLy?= =?us-ascii?Q?ZKVuhgb1kEP7fvcoJU9FsKEsFLBLhgiTnJEY8+Om3f90JwC1x6awVDm8z1F9?= =?us-ascii?Q?vbtzRjGs5ch6R+IPYabzSHvy/0pU+dZ/TBGo5spMe5QT1wj19WVhqBTkucTU?= =?us-ascii?Q?JXRUpjhVNEtLu9r8KbEU4gfl/K62uOyJnbuYZzMSAKnSh+l7ZP07fcg0Seqn?= =?us-ascii?Q?TEZchYY9WBSCd6CaZjnTKi94gTh0NitXAcMxuhgW1DsJXe6dqfGVJeeF5r9o?= =?us-ascii?Q?RtSZi4n1v/7RiL5tmtwsrEO/YjrzrfTjPWPcjxml2AHZYSz115DniRjalID9?= =?us-ascii?Q?8Ry0+ZjUd43PfPyS9KUNSdX4XRdb7lvBYa+hilhc/50/QrAJNM87Tk6B37pF?= =?us-ascii?Q?axzhcQsvN3ayAbqTMlXwqzQSNRzmUUtDDntO2ELVUNI/TvYGnXEoRsgpohr8?= =?us-ascii?Q?GWQfqGuvPhPUs2vOAsxGYgM1lcL4/ozLfENzIerBbcybRGksLFgzMVM1ZOlP?= =?us-ascii?Q?T9F6EUhKnFOdT2C+r5uDuIlxXBfSDRMFijO65HVIzFT4ezFsg8E6V9Nf0XLV?= =?us-ascii?Q?DtYHQFeC8g+9zM/qaVn7+n4Ls4vfPlCUoz6A4vOOXLtz7uMx5m2Jk9Y4yPXD?= =?us-ascii?Q?nkzxalBUGyRTd73FuPcAVkkH6UyX3Tu/Kqoc6k0WHZOd/7XcgBbyeuQru7Td?= =?us-ascii?Q?e7+YOilUMilGn9oLBDfGLsDFmoliyB5jxqRW/epc5IWuTXAHrz84z6eq5g1k?= =?us-ascii?Q?0gn4FrSZg3BANcHri48+PxiyOwa0avMgvLwYiVOJk0vR5qUpME39pH7arrlP?= =?us-ascii?Q?pdas52F3psRVAHagiwTZ4O+gXI7nHifBd46AD7KRLOfP16dLDryMWfaKVVuk?= =?us-ascii?Q?7tyb4kYWuW0K974KZIbk8PaK3sr2sKwhlTVStesGZq+suRtQ4NnmcXFyDaO1?= =?us-ascii?Q?AqukyEhAcfu7XzhsGnN4N5nxgEa1cKs7H1jV3LcIUtB7TgeXqP1dq1PQl+fW?= =?us-ascii?Q?0WIIDc22c24xECVCt8crYRMjDLlrOTHthwPLzErlFTbp+MvgODT1W88wvsSe?= =?us-ascii?Q?otge81agrQq5nt0JAk3543RH?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9a29cc7a-3b9d-4f61-2edb-08d900af036e X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:09:52.8108 (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: FYHJswj0LscFZpC8KZBmP/oR2+oE0uiHQFTFe/lVVYjTLO0+6BslgZc0dk4asF7+Cm5u1gVoXORSGyBifnsw6eZEaKA1UavKxneSEbfMMQk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4691 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.20.123; 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+importer=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: Eric Blake Reviewed-by: Roman Kagan --- block/nbd.c | 99 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 57 insertions(+), 42 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index 5e63caaf4b..03ffe95231 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -318,6 +318,50 @@ static bool nbd_client_connecting_wait(BDRVNBDState *s) return qatomic_load_acquire(&s->state) =3D=3D NBD_CLIENT_CONNECTING_WA= IT; } =20 +/* + * Check s->info updated by negotiation process. + * Update @bs correspondingly to new options. + */ +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; @@ -1579,49 +1623,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); @@ -1635,6 +1643,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 Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618561648; cv=pass; d=zohomail.com; s=zohoarc; b=fu7dBxVQf2tNLtS3ghILd+WS+uSDsF4rDv2szY8xam8tf7LFW4ykR1sekXowexRFux9aw3qcMSMZKasylSN74SBMyAKi9ED4yAj1XcacTyW85Cx1iWwMcg1CJJbaF6sk9BPoj5L0DsslIhHFmZ50i/YG1e+2lmaEeZFjvz82ZhM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618561648; 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=IM6CF8bvL++cB6Es+zVhWh/ciJNqYPjJQ3h0gtza894=; b=QOqgRrqCMed3lQpIl0gnUPLjFMdA01N/TzCe/tlKDIVaNjoJhAsyHvvP5EAMU3K5gKxSjxfBal/CbE3KwGfuifCrD1HP/ja/LUEZ3953ZpMWBta9qKGYig3ikGl9rYiRi0YzmxewyAKX2EI2eFpiNPoG217cyKHft1Jcv2CzYmE= 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+importer=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 161856164889092.55865992498093; Fri, 16 Apr 2021 01:27:28 -0700 (PDT) Received: from localhost ([::1]:40098 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJp0-0001JH-Im for importer@patchew.org; Fri, 16 Apr 2021 04:27:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57998) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJYQ-0001kk-So; Fri, 16 Apr 2021 04:10:20 -0400 Received: from mail-eopbgr140137.outbound.protection.outlook.com ([40.107.14.137]:53094 helo=EUR01-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 1lXJYI-00089h-V5; Fri, 16 Apr 2021 04:10:18 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4691.eurprd08.prod.outlook.com (2603:10a6:20b:cc::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.22; Fri, 16 Apr 2021 08:09:54 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:09:54 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:09:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YR64zAyBpAs/sisCkRftvdRmPRdffQB4RvYIi666BNU0rbhHficl0PrYlSrk/7na9/BMw/jMyRQj1rgPReE2mNqTgJRQaKLvlhp+GgA0wHt1IuAZc1N4Z8spTTdn6+VBBr4adXGi3u8pPrcGz4pcu9sMLOeVxpXuongLSbLyRcg7xn+ydR45HHFfriqODXYgzNm065v2Vqr7ELPkXzZfXCvjbgh36245GfDathMIDVqS3bJx4g+N9OjB+5yjnB3Lms87qnxntqpWzrCo+1C0DP/EbPCRVlHYW8LEghx/raJydHekwcCsUbFlIfReft/juHVZsfefjOLRfHHd27C2/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=IM6CF8bvL++cB6Es+zVhWh/ciJNqYPjJQ3h0gtza894=; b=Y0fCJVpXY1fHw/5knYHMq3Xv56uv/i9Z+gCPgQLG0MoOCt8I0V6De8a0fv2wKVeNjJYL4KIkoKPDx/D+G3ndTZdoUtF9eUJjh9EH5P1EE7f5V+HeAqpsBxWpzyBlxM/oNgCooBexBhhu2r2/ACT1vD3wm97bX/yBCCCssPudi+c4+UdTfJrT7JrvrlKRFI134hcu4onZKRIexfWGeyDns2vdESC/q69ndUtGfsfnsr0w4NMNPYDsGrAOiakNtNmp/SxIsGp0krYlnwtVrMbolPgLu0W5/q24TEG2GsMFkAYcYZTck6zAo6ancrvh4a3Ruu8A3kmNA/7UvzpduryIsQ== 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=IM6CF8bvL++cB6Es+zVhWh/ciJNqYPjJQ3h0gtza894=; b=q5H+4cbZI/RacX4DRtJHBfQ2016fcCDIfeoT6yNIJoWSvSTGrSAD+fCiA8W+iovv265SK6/f+k+3JE+JkO3/Ddctuv50ZdBlb6CUCnPHeW/csjz1lWG2o21O6cH+rxF4KfDowXUmKQczivnHZ4O6IPD6+h1q4RDRieBFfS3H4PY= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 20/33] block/nbd: use negotiation of NBDClientConnection Date: Fri, 16 Apr 2021 11:08:58 +0300 Message-Id: <20210416080911.83197-21-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: f7b7f4d0-b78a-4a6e-e8c4-08d900af0439 X-MS-TrafficTypeDiagnostic: AM6PR08MB4691: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:655; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9X+TmojgUQ3XqdV3cb4uDRE+2k/62QkxYRjN7xFAMPpfqgltOHh/OzT8feKwlNZCm8EgmJaxmYSdOAy6pDcoQAOoevwWO/s71hPQce3AlH3TZJjoecpvD+BSXNWJ2DD29965bXALYkCJOieAGBP6urXw5PhHO3MN+EvYNR+psXRYsMwX/kgHdjdSQs95EucMsTnWoUKFKRP9Wm66e2IFxsO8/e1juoaUBVlD5VvkDcbAld4MFT7oJBEKI5q2rH6U8tPQyRDDgJaHEvhaUfMDrVDO8K/5yRewUowVhEhL/eYNnc1eFz60SXyCkMNR1lIcdEDWzaoRpBsWajlfblaaAT9xtGTN4bjg8quFdGYpqM8NPf27xMM3h+DEC+9FDIuD3xrg/tI05BfZsKodOzz94WmXzSQbW2Teyn/zhohRY1AQAHVQqCgg5cdRJiQMDScKVU83+f8WW341kbPhF/3f5E5eBAj+tkH/BDNm5mEWuyh2KaZ5nt0F1xGHaqH2k+gLGNKRS4zW0Z8Ge7mUJ8wi8Q2v4omIc+8ZkNhPWF/SEknvydU5iFqSC2De7zUMcbwsCuqATev1EKqnF8cq4Iae2tPf8Tbv/iOCkBTfpRLAYGI2cGHmVu2cEqhfI2xX2NP5fsvCn980P+tnMZ41MWxljxqw2K82Vg1yyHncYcfhzmiYyhH8hbDlKdxxixmonRXg 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)(376002)(346002)(366004)(39840400004)(396003)(66946007)(107886003)(8936002)(86362001)(2906002)(186003)(52116002)(4326008)(6506007)(6512007)(26005)(478600001)(2616005)(1076003)(956004)(83380400001)(16526019)(66476007)(69590400012)(6916009)(316002)(36756003)(38350700002)(38100700002)(6486002)(5660300002)(8676002)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?8ZqEHh1qFcjb1RTjdIR58fJsi6E5eR5I1HbXeDImgLSlN6pU6gJ5byy3rZcF?= =?us-ascii?Q?E9MRXWhWGc95BkfmpzHcyYyr2uL6LKuNVLGx+KiqERgOIWysKkPX5G/5sbuu?= =?us-ascii?Q?ZWz45sO7mesqxvWzbnY/t2iNCYdQ4JgTJ+i8HDO/ML+30SD+POEzlFg29vpd?= =?us-ascii?Q?1P+oWGcMdAtYCR6tifGBuPTYMf3ewJNmJWa6+QWbMUj9+6/W3ujKL4u5U6+u?= =?us-ascii?Q?L6UYBzerKZ+Pci5XI0cYlmKI8bK1rHJjv6oTA5flMi3JCRHAx2fDl9MQEC60?= =?us-ascii?Q?W/p7mzP3dQgV7123Tc8hZ5s6I9g2RROpSNu/gnaTBvyHeMyrDYEUykOdVWZ0?= =?us-ascii?Q?8llgdaikS8j4u94bBpDlAhoiqE4YzLqSR+PGoTmFQ8NYSlpCL6WNowu3b9Ew?= =?us-ascii?Q?92I7plud1iXTxuo5qNGQXtH/cLlkrcG0gQ9G4oskIBYDjUvA5zyI5EIjbGuq?= =?us-ascii?Q?UMEtlmQ1aOCLLI/OkSBLMq+UEiarRAR0uYU+IFn4gr1AEuaRRYL8EX0+fNjJ?= =?us-ascii?Q?6wsQjTkFKL70Nbf6f8gqQrUXO7kYWgRWzIXB8SriJHXmgL/VgxtM2lXsVWXZ?= =?us-ascii?Q?c7E9qcygvt8mg1XDJJfEdJ6WCYG6WcGWUI07sxa1+3069obat1llRn46C35R?= =?us-ascii?Q?3XSzQNAmK1UWcpX4mpVg12BVMY2agS9d96FxG1Kybm00nujMolcGcpaWQtht?= =?us-ascii?Q?nJ3t5OGDENHCpgn+vmrzSb2+8l1JyoA25iqZueUb2S6d6Ist8vOkER2AYVWN?= =?us-ascii?Q?hkB+25g+XnOHqjWNtsbN1JlysnGQfUrWI2qjy4hwAg2DR/lJvUXmkT17ulKr?= =?us-ascii?Q?GQnJ2gDGhsUflaZyOp7n+J2uii6P1YlBi3MrZqcwEHF+TYBrExHzM2H+/aai?= =?us-ascii?Q?0KJxK4GU9jRj52X9VpCAVRedkb9OQwKhAlXdRbbu/gBlbKKzIBEEjENPiX//?= =?us-ascii?Q?Y83fOYFQiTHShUIacxzAIuAF/76mLrpUjpfmt36ptFfwoaCQTn+8Q/LttrDi?= =?us-ascii?Q?bzQuZc1S2dPeQoPRniyCAGxFQZ+ErwsOjRkhx0dWxuAlPK7016AFgdEDjjPI?= =?us-ascii?Q?rWlifDqsp3nJmsBpANI45fsY3DDE3pQL57EZ6q6FyVs6PpNhhAlNqgzMuyxJ?= =?us-ascii?Q?0/1UWNEhmUG0cZa47JmfNrRv+Pw1ZlATkvdZfKO75TNi9b0gQGtHQKPRAWcB?= =?us-ascii?Q?nR2YemXkcx7MNHC034kh3iZuVMsrHInzkex1DWeEfSclWadflgoWarCiMb0+?= =?us-ascii?Q?csI5OtvxUNg1XOZ3ZpdY/TSQQn9XqAcAd4oo6IRw+/y17H8uFmfgTidVcZCl?= =?us-ascii?Q?lTNoy1sNtsTJQLQQyuUZ66vl?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: f7b7f4d0-b78a-4a6e-e8c4-08d900af0439 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:09:54.1280 (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: nvBy7Ng/5osKkI0C1pq1mCYNxkTBiJiplyUrT2r+h9lXreT+SsiAXuplOy3deOCrlx8wi+ujr5UCbzZilIAsl/O7aDyK02Kf55NUStaUU/k= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4691 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.14.137; envelope-from=vsementsov@virtuozzo.com; helo=EUR01-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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Use a new possibility of negotiation in connect thread. Now we are on the way of simplifying connection_co. We want to move the whole reconnect code to NBDClientConnection. NBDClientConnection already updated to support negotiation and retry. Use now the first thing. 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 03ffe95231..c1e61a2a52 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -365,6 +365,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; @@ -405,30 +406,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) { @@ -2048,7 +2063,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 Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618561468; cv=pass; d=zohomail.com; s=zohoarc; b=Udrj3xKqfDNM8dKaIjj9ZG5oS7dm25QbG4Ay14PVyHEcnwrCim5vLzf4pY7Ov8WoCNSodzhRXJLPodugoE+VLw7vxreDPuJRHTX8tciZei0ajR4tCBaCrTivTrX1z4NZtVy0sWwsubqXAwaEwi89tSFzMsEJcm1/nHQ4RKfi3uc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618561468; 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=lVsGoRBzsXyIJNTyRt29NPPKwaSFQD16j1gtMoEX3RI=; b=YjkkkiNLc+x7t90xdoaISW3bxuf/FW/tTt7kuGFlsrNQQyLvZVoH7CIGHNVOqHof4TDWEr5DncELGHP70KcIFvlUUeOGZr2wx743Y71JP4GHHkwPNej/MiU0U/axgLGfmfWS59bEs1nZ+BI7y6S9mnhW6xa+voULMknmkfRyPMw= 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+importer=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 1618561468883809.0471694650998; Fri, 16 Apr 2021 01:24:28 -0700 (PDT) Received: from localhost ([::1]:57572 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJm6-0004ti-Ju for importer@patchew.org; Fri, 16 Apr 2021 04:24:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58108) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJYY-0001qP-Te; Fri, 16 Apr 2021 04:10:27 -0400 Received: from mail-db8eur05on2107.outbound.protection.outlook.com ([40.107.20.107]:39777 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 1lXJYJ-00087j-Vf; Fri, 16 Apr 2021 04:10:24 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4691.eurprd08.prod.outlook.com (2603:10a6:20b:cc::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.22; Fri, 16 Apr 2021 08:09:55 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:09:55 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:09:54 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OFiCnrtVk87Gf/47+/O3dVKGZpXo96v25ptwD6F8om8+TfZ2dEQQEfeZigy6kjG/uh7yEyfC7NGqyy1TS2XXyCFeMBbES5cp90hOjEPyScewWO27ZfH/WSdbcw84GWhvd4Hnn3lOXXLnLnTdjGoKksFLvRWpfAIKYCo0g9NU4nBpyLcJQAQbKrW9R+HCM3A3/5AgH/NaAqFQQfimztosInel1heKq586WZChkfx3WlA8CGcaCD/s/DINaAdxEt8PnFLUO7J3QfFycbHBS5ibK/mWHWXDOXJSgnIRxKMViSvZ0dqpX4Naq0J4FfKHmSr2O0U7wUIGrrLx1JBnsjLk9g== 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=lVsGoRBzsXyIJNTyRt29NPPKwaSFQD16j1gtMoEX3RI=; b=kn4M/kGXTrA4k3JZArnjO5x0ktD+StX2NZ0jg8SMaX+cgm1HVB5vmwS8vneLgi+jhl+matUCMfNiGUxqVJpGoB8g9lR+l9lZ1jR5mc/V6Wxt6m4PT9xZ5uwSyHbv/GdQhU5Z6J1jA9MxMz3Ks3PwXcq/HSLDrv8Me93CBtSbSfJoWaHOUzsW9whaceBdoxf9h3Fq/ud/oWRxWG1hCoDLsiGFvBJltgpGlmqDWHR0UIpfGnfZsYsIJJbl6pX01Ixdt7bJYs1H8FiCuL5AeuDPkDgiQ8v0/ZxNKst9mtXnx923NrZZc0qBEYTq13WNjJqGzmeg/2FR6XCAO8ZR5g0NMQ== 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=lVsGoRBzsXyIJNTyRt29NPPKwaSFQD16j1gtMoEX3RI=; b=U4UQck/cXAdlkXnXZZbIE1sgn+sb/1rrVfbnVM/YoTyL84kSvLYzioHGG7yPWsd+nKIvJgaGw1HSqgG4cgZRSPbMEHApvHVoyU5YjtE0G16j7hFG0lpOWkgQMg2A38t+pOft+w3mdGjrIPOAMxGAC2gX6PKAp1TQ8UZZLtQ/uqQ= 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, rvkagan@yandex-team.ru, den@openvz.org, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Gerd Hoffmann Subject: [PATCH v3 21/33] qemu-socket: pass monitor link to socket_get_fd directly Date: Fri, 16 Apr 2021 11:08:59 +0300 Message-Id: <20210416080911.83197-22-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: ddcacbd9-a64e-45c4-48f5-08d900af0521 X-MS-TrafficTypeDiagnostic: AM6PR08MB4691: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:364; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bw5syGJC0BNjSLJcNW2ML5uDVZzAkfimvBB1cbrmHVRbQDpB6mamyLYf/fBlJJb778fCQEeEABe42EQWFjmIegkpoi+Q+gKqN68vgWrbjwZfKn4Txo4xtFjAfOKMDAN1W+vcRTz7tvhdR1SMq/hpoYHXug23jrjMaqUwRx+ZkFiPeGDxDeGXUhk730nqCg0LVe2seGtMgVaL4Ndz6yuxICqim0BKZvfUc5FnBdUR/yZdXPwCnf6Nrt2HExq9sRTuyRDztwHSK0BwVPkTDBBrRU7NZo5HBB60B9pyfTM2kup6cMpk+UtHYfUebyPcdrh1CzBhq2eu7y1s1dh9Jkv//qvDm70gML5Hqis7G2BskqO8+QDVFBLEdJSHjmg7FA/ttTeITC2hvJvB5+sUXSfvl46cBxWD+Iea3+XOVM/vkXPCkKR6rtrpO9/sKKvNy9FYGzMccIxG4UIxhzC1CI197R19YaN4QNeH1sQvLsS9kGWZ60qi1vBuftcnT5SW9Le/0xMTN954A5AEZvfYukxI7N57+GO/4/EsuTdeIEbEwRGIbqKHerFXdx5DJHX+9d2NQ/qj7j0XsnvbIeUGV16TJ87/NQww2bdj7DiI6dJwavI7EDBRCHQrKdiBrR1U0yprincjGAm6ANJYS1lAdrqyrgTV0D6j7m168EbFr23k5GIOBt/bwygi7oUxGFJp7MGW 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)(376002)(346002)(366004)(39840400004)(396003)(66946007)(8936002)(86362001)(2906002)(186003)(52116002)(4326008)(6506007)(6512007)(26005)(478600001)(2616005)(1076003)(956004)(83380400001)(16526019)(66476007)(69590400012)(6916009)(316002)(36756003)(38350700002)(38100700002)(6486002)(54906003)(5660300002)(8676002)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?bj4EedGQnuFou/ZHjCZkSShmN6XzM75ig5MEBEdLPwkjYS01DftT90fB2FeK?= =?us-ascii?Q?45PKJa4tY3nGT9BrtdZ6g6qf7jFvXtGBEVzXuQis/xE8rPMtz7iPGlbgbq4e?= =?us-ascii?Q?xomnnOCEadpSEkKXYN7jfxvGjyB7cvWtREunenCejMTn7BIgiATJXNrmZJgH?= =?us-ascii?Q?fxGugW46Xi3Wbwt5zQ+NjSRCP8oTHYuwIyIWxvO/Q8xNAGy11qdVGuzfSn1t?= =?us-ascii?Q?AcR9W7+VwsU5JsMBLoFd4z/QePLG8wMo6RYJijwdtNwHu8gfpuNv3/dtVtNS?= =?us-ascii?Q?+dqPO7WYZQePGzW+Q9M7PYj8ZgTGBAYPNYkvU0eTyS36jSylm1KbPe9Raecb?= =?us-ascii?Q?akFBlZpyUgZFhLMUJZPg2tJSvDMnRw6riiQQ+c/4WRk13U9fXcgVfuy5frp0?= =?us-ascii?Q?NMAfOj6iYmr5m/dJDKXDRQ8CT0BbNAlAyZ6kY2e7HYWY6WNeGwv9WvW0jw5K?= =?us-ascii?Q?8FJwzkeaV0c2LjxgGqbyrmL08pyLcHXdny0eYVRHfD/U1U4M0JDcG2yibjHm?= =?us-ascii?Q?aFW+0Y1wSvssVc7HYLPwVBy7s4MdA4WzIVP8uXfZf11foL4ZozQoBZz+6TUO?= =?us-ascii?Q?pS9HMFK+LSWD6nWCZO765DJm7t3jyd0V4AnII20R7Ny+ZK/HiK4LjoqLLzTE?= =?us-ascii?Q?w/DvBB81Fau403qNNoOdlPMN2nX4AlRX4vy0L23lAM3Y7WHa7tr3S0a0jrAi?= =?us-ascii?Q?b91ta0pWUNjMESPP7Qn5YTi1lodO4kA37FAzcgTuGmM2KwXXc/t301O57/f7?= =?us-ascii?Q?p/l5/wPzUqNv5UMFuBYKHYjazR+1eQ+icUwYSO5UjFtkN0lK2drOuyAP/U31?= =?us-ascii?Q?8BndcL3zBR33qbJymefz3MQD7+kJ3U3IzY46hMwjttywAPMKVATkSpoAwe+l?= =?us-ascii?Q?FhPrYKnCHnnThL+WKcyRBe4YHhOzNKQlxFkOz/fA4PPK6ppjP4bIOcpvqbx6?= =?us-ascii?Q?pY6r4EiTsD5ohOkuA4c4xMBIHijqY6661mo788Yum71LJ1qennTlZWTuST6D?= =?us-ascii?Q?k9fXqZvAdeJ5m2DjkcGsZ69ztau93cHCJugPeb+S00leog3oQuHb8NBFTTum?= =?us-ascii?Q?y5HqibDx8fjHIYiob3hxCIyX1rOORr8Mef4kV7sGpiIkTowpP2sxnURnjbUP?= =?us-ascii?Q?BBiWO4fiGFNqCvbMosQUjMqlI0uwWg1WVFynE8D0g/c9cjcz+1dkMrJ/zNd4?= =?us-ascii?Q?ISCbEwiqeWRmxBecb+2ybLuDoqdHzIvN4Kd5sKa456ZPCcamoj+0YTyBeH21?= =?us-ascii?Q?EqynFvjfZFHzEA1MtmcNF4Y1dqJsckSL2zn+ze9OIHbA+KbiJ/tp0fsJWwim?= =?us-ascii?Q?nIfVO+GwFjidtRvxvCvOehIV?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: ddcacbd9-a64e-45c4-48f5-08d900af0521 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:09:55.6991 (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: j58MoGeh/ggOo9QFRA1K5BYobSAPTlsCSdOu1BAyVq62QtlotcNAQ2Z69AOwEZzouyj4NcOZQsj9kLxqfZZAHYVXy5jMRFcNpFvZtvE52eU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4691 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.20.107; 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+importer=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. Add a possibility to pass monitor by hand, to be used in the following commit. Signed-off-by: Vladimir Sementsov-Ogievskiy --- include/io/channel-socket.h | 20 ++++++++++++++++++++ include/qemu/sockets.h | 2 +- io/channel-socket.c | 17 +++++++++++++---- tests/unit/test-util-sockets.c | 16 ++++++++-------- util/qemu-sockets.c | 10 +++++----- 5 files changed, 47 insertions(+), 18 deletions(-) diff --git a/include/io/channel-socket.h b/include/io/channel-socket.h index e747e63514..6d0915420d 100644 --- a/include/io/channel-socket.h +++ b/include/io/channel-socket.h @@ -78,6 +78,23 @@ qio_channel_socket_new_fd(int fd, Error **errp); =20 =20 +/** + * qio_channel_socket_connect_sync_mon: + * @ioc: the socket channel object + * @addr: the address to connect to + * @mon: current monitor. If NULL, it will be detected by + * current coroutine. + * @errp: pointer to a NULL-initialized error object + * + * Attempt to connect to the address @addr. This method + * will run in the foreground so the caller will not regain + * execution control until the connection is established or + * an error occurs. + */ +int qio_channel_socket_connect_sync_mon(QIOChannelSocket *ioc, + SocketAddress *addr, + Monitor *mon, + Error **errp); /** * qio_channel_socket_connect_sync: * @ioc: the socket channel object @@ -88,6 +105,9 @@ qio_channel_socket_new_fd(int fd, * will run in the foreground so the caller will not regain * execution control until the connection is established or * an error occurs. + * + * This a wrapper, calling qio_channel_socket_connect_sync_mon() + * with @mon=3DNULL. */ int qio_channel_socket_connect_sync(QIOChannelSocket *ioc, SocketAddress *addr, diff --git a/include/qemu/sockets.h b/include/qemu/sockets.h index 7d1f813576..cdf6f2413b 100644 --- a/include/qemu/sockets.h +++ b/include/qemu/sockets.h @@ -41,7 +41,7 @@ int unix_listen(const char *path, Error **errp); int unix_connect(const char *path, Error **errp); =20 SocketAddress *socket_parse(const char *str, Error **errp); -int socket_connect(SocketAddress *addr, Error **errp); +int socket_connect(SocketAddress *addr, Monitor *mon, Error **errp); int socket_listen(SocketAddress *addr, int num, Error **errp); void socket_listen_cleanup(int fd, Error **errp); int socket_dgram(SocketAddress *remote, SocketAddress *local, Error **errp= ); diff --git a/io/channel-socket.c b/io/channel-socket.c index de259f7eed..9dc42ca29d 100644 --- a/io/channel-socket.c +++ b/io/channel-socket.c @@ -135,14 +135,15 @@ qio_channel_socket_new_fd(int fd, } =20 =20 -int qio_channel_socket_connect_sync(QIOChannelSocket *ioc, - SocketAddress *addr, - Error **errp) +int qio_channel_socket_connect_sync_mon(QIOChannelSocket *ioc, + SocketAddress *addr, + Monitor *mon, + Error **errp) { int fd; =20 trace_qio_channel_socket_connect_sync(ioc, addr); - fd =3D socket_connect(addr, errp); + fd =3D socket_connect(addr, mon, errp); if (fd < 0) { trace_qio_channel_socket_connect_fail(ioc); return -1; @@ -158,6 +159,14 @@ int qio_channel_socket_connect_sync(QIOChannelSocket *= ioc, } =20 =20 +int qio_channel_socket_connect_sync(QIOChannelSocket *ioc, + SocketAddress *addr, + Error **errp) +{ + return qio_channel_socket_connect_sync_mon(ioc, addr, NULL, errp); +} + + static void qio_channel_socket_connect_worker(QIOTask *task, gpointer opaque) { diff --git a/tests/unit/test-util-sockets.c b/tests/unit/test-util-sockets.c index 72b9246529..d902ecede7 100644 --- a/tests/unit/test-util-sockets.c +++ b/tests/unit/test-util-sockets.c @@ -90,7 +90,7 @@ static void test_socket_fd_pass_name_good(void) addr.type =3D SOCKET_ADDRESS_TYPE_FD; addr.u.fd.str =3D g_strdup(mon_fdname); =20 - fd =3D socket_connect(&addr, &error_abort); + fd =3D socket_connect(&addr, NULL, &error_abort); g_assert_cmpint(fd, !=3D, -1); g_assert_cmpint(fd, !=3D, mon_fd); close(fd); @@ -122,7 +122,7 @@ static void test_socket_fd_pass_name_bad(void) addr.type =3D SOCKET_ADDRESS_TYPE_FD; addr.u.fd.str =3D g_strdup(mon_fdname); =20 - fd =3D socket_connect(&addr, &err); + fd =3D socket_connect(&addr, NULL, &err); g_assert_cmpint(fd, =3D=3D, -1); error_free_or_abort(&err); =20 @@ -149,7 +149,7 @@ static void test_socket_fd_pass_name_nomon(void) addr.type =3D SOCKET_ADDRESS_TYPE_FD; addr.u.fd.str =3D g_strdup("myfd"); =20 - fd =3D socket_connect(&addr, &err); + fd =3D socket_connect(&addr, NULL, &err); g_assert_cmpint(fd, =3D=3D, -1); error_free_or_abort(&err); =20 @@ -173,7 +173,7 @@ static void test_socket_fd_pass_num_good(void) addr.type =3D SOCKET_ADDRESS_TYPE_FD; addr.u.fd.str =3D g_strdup_printf("%d", sfd); =20 - fd =3D socket_connect(&addr, &error_abort); + fd =3D socket_connect(&addr, NULL, &error_abort); g_assert_cmpint(fd, =3D=3D, sfd); =20 fd =3D socket_listen(&addr, 1, &error_abort); @@ -195,7 +195,7 @@ static void test_socket_fd_pass_num_bad(void) addr.type =3D SOCKET_ADDRESS_TYPE_FD; addr.u.fd.str =3D g_strdup_printf("%d", sfd); =20 - fd =3D socket_connect(&addr, &err); + fd =3D socket_connect(&addr, NULL, &err); g_assert_cmpint(fd, =3D=3D, -1); error_free_or_abort(&err); =20 @@ -218,7 +218,7 @@ static void test_socket_fd_pass_num_nocli(void) addr.type =3D SOCKET_ADDRESS_TYPE_FD; addr.u.fd.str =3D g_strdup_printf("%d", STDOUT_FILENO); =20 - fd =3D socket_connect(&addr, &err); + fd =3D socket_connect(&addr, NULL, &err); g_assert_cmpint(fd, =3D=3D, -1); error_free_or_abort(&err); =20 @@ -247,10 +247,10 @@ static gpointer unix_client_thread_func(gpointer user= _data) =20 for (i =3D 0; i < ABSTRACT_SOCKET_VARIANTS; i++) { if (row->expect_connect[i]) { - fd =3D socket_connect(row->client[i], &error_abort); + fd =3D socket_connect(row->client[i], NULL, &error_abort); g_assert_cmpint(fd, >=3D, 0); } else { - fd =3D socket_connect(row->client[i], &err); + fd =3D socket_connect(row->client[i], NULL, &err); g_assert_cmpint(fd, =3D=3D, -1); error_free_or_abort(&err); } diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c index 8af0278f15..8b7e3cc7bf 100644 --- a/util/qemu-sockets.c +++ b/util/qemu-sockets.c @@ -1116,9 +1116,9 @@ fail: return NULL; } =20 -static int socket_get_fd(const char *fdstr, int num, Error **errp) +static int socket_get_fd(const char *fdstr, int num, Monitor *mon, Error *= *errp) { - Monitor *cur_mon =3D monitor_cur(); + Monitor *cur_mon =3D mon ?: monitor_cur(); int fd; if (num !=3D 1) { error_setg_errno(errp, EINVAL, "socket_get_fd: too many connection= s"); @@ -1145,7 +1145,7 @@ static int socket_get_fd(const char *fdstr, int num, = Error **errp) return fd; } =20 -int socket_connect(SocketAddress *addr, Error **errp) +int socket_connect(SocketAddress *addr, Monitor *mon, Error **errp) { int fd; =20 @@ -1159,7 +1159,7 @@ int socket_connect(SocketAddress *addr, Error **errp) break; =20 case SOCKET_ADDRESS_TYPE_FD: - fd =3D socket_get_fd(addr->u.fd.str, 1, errp); + fd =3D socket_get_fd(addr->u.fd.str, 1, mon, errp); break; =20 case SOCKET_ADDRESS_TYPE_VSOCK: @@ -1187,7 +1187,7 @@ int socket_listen(SocketAddress *addr, int num, Error= **errp) break; =20 case SOCKET_ADDRESS_TYPE_FD: - fd =3D socket_get_fd(addr->u.fd.str, num, errp); + fd =3D socket_get_fd(addr->u.fd.str, num, NULL, errp); break; =20 case SOCKET_ADDRESS_TYPE_VSOCK: --=20 2.29.2 From nobody Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618561211; cv=pass; d=zohomail.com; s=zohoarc; b=NjFbzG7qKmjdyoJADLZmYkupLF9WGY0UztTz6o68tM69q5pS7wmrRX4jiZK6Op9Hyx9iWMxxaaq3d1yBuMbmYdQS5SOLpeKniWJUXeQ1ovZktQrln7PwdZdjlgpIOQpaxm0Q4J+v/A+0WOtYoneKXqn81Do0Ro8hMav9ix0INk0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618561211; 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=nPSispkZMFuH1SJqSAa5J6jp/qesMythF9OHjoHnONw=; b=BdM7fQbPF+2ElwAV79ffAN8yS2zerXr4nTzNqhN9oXt/czqZ2lyxagIAKhrrtFpRkq7x5/FpnwlMbRdhJnBj0669clplMFwN865Ou4e8PuTsUWrO0aRc1HAGpkES8JjfWGRvzrZHDxJXS0JQ7Oa+ETUsjiwsyDLSr/EYcvnDd6M= 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+importer=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 1618561211383544.3744592867396; Fri, 16 Apr 2021 01:20:11 -0700 (PDT) Received: from localhost ([::1]:41950 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJhy-0006xP-2h for importer@patchew.org; Fri, 16 Apr 2021 04:20:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58116) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJYZ-0001qv-AJ; Fri, 16 Apr 2021 04:10:27 -0400 Received: from mail-db8eur05on2123.outbound.protection.outlook.com ([40.107.20.123]:43105 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 1lXJYN-0007xx-1m; Fri, 16 Apr 2021 04:10:27 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4691.eurprd08.prod.outlook.com (2603:10a6:20b:cc::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.22; Fri, 16 Apr 2021 08:09:57 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:09:57 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:09:55 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=E/hXfKCTWB1p2riFg8WtT2ZYNo5l1rgtVNTLymwlO4ay+VDHyGgHo9NLoKnP7frayPs7MGkEWXU4Sz5oaCQEschUGDk+APNlYsrhwXbJ4noMKxxON7kfcD5mPOszFXgC8l5/MColCsUqNKq/xZe5ikA4IsRRAySHimxVclUu7sZcwRfnMt5Rz2U324A8SHQj8MNNdHveoQ5ZXycmyMWPBo2cBU3vUF00YX5eQInZ/MV7sDWcClgyb27mxgESg4Z/3kgaW06ii5a9X7KBSrIoBRGfSpDLVq9KiCYxS5bmvapbVTXYB3Q8xHQRON2AtD1CrHdP0/R7cVvu5MnFp1qbkA== 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=nPSispkZMFuH1SJqSAa5J6jp/qesMythF9OHjoHnONw=; b=VqVsY/dcb7ngwXAX84TtAj1OFO8lX+dHSIPt8Q5Cru1URlp5eR2j78htl6hYxbj2+8yRXEIyb8unikI33HHWK+wUI4ubbW7pq+9Gzt8NSRf9M8vmWrrQavf6kx0pO21SV31FRIQtu5rH68G4Cwm0xXcfiRbpVQDubXR/eG9zeMYCmjKfaHLzatFYn9W7NlrsmdC0LLkzyRTOnzPAKRb7MEcGB+2APgytTwoZSTNnnf99bItuI8iKsq7WnAl2Rlg5LDPkmo59z13Km2zz/bogzprnU0eqM3qOATENE49hcyq5dz6e2ecKL97BeXIz37IVk56Hk3WUxyvxlajwoHl33Q== 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=nPSispkZMFuH1SJqSAa5J6jp/qesMythF9OHjoHnONw=; b=Ud00E/8ddwgtOjB7pArk6ZWVNsAKOMRpVx1Eb5NbpOZIgo5S/KGLqWqwyOaY1cZcq8303o5bwUcx/b3Rr8eqUbFv4NTuUjKRry4nCqrLqfYszIqdh5Ad4yEEahoJUsPNdEK7/7cH5rkCgM9yE4xfkpaCVRUC+WpuVBbye3c9v5Q= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 22/33] block/nbd: pass monitor directly to connection thread Date: Fri, 16 Apr 2021 11:09:00 +0300 Message-Id: <20210416080911.83197-23-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: 412c7b13-eb18-4b3f-fc71-08d900af05ee X-MS-TrafficTypeDiagnostic: AM6PR08MB4691: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:186; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3rnWJNk16U8pN6XN5Vww43nS3qdWOVUa1IcIHLTxco2HVWYFhhPqgebmVqWEXSnSB02r58qhItqER3bv2eux4zyigUk/yoV7J7gAiGHfJjhgJ9L/LEWX7PPTysDCLipZiL24NmUM88AcfmBGGYVCYq6ZDefrWAoCzTjxwAbNDr45zcMo/vkj9kddyhekyV55O0u3jGIrme+yDUFfJydCO0/JIY1NbRPS1ExgeRi7yRnf9rsWO9E3xA7RDFx3Z3TJs8C8F3bSwZgB6XXvbLVDzGpTspEiqqg4rOlKHdiGzRDDECw2K6mVnbO1rsNrR8VRarON3tk7Py/2ZA7VsUA8AtpIqY6cSRXQ286+Bkcsik1gFOfwqzOgBfcQcIrZTKdOIxKkEw8DH8nyO8idpi2bdDnw27sLMErYColnbeAIWczOC7UT8GgV2U+dUt74rV053JS6XVtK5VDs1nXskYo1gUuSnrU5/QlLDrWpvGaRLkaF5ltLdou6sCLL6uNapNq8yaFoyDTsWfFy6u7Bdj5i3jriBqWufhnTPNVBejR8xkii++1zg/HDOJl//0pVqyvZtLzFBlrtFRrjZC5tlwtQ1s51Riw3bLUX/GQdP9kPfvnVtx2Z/nyp++KjPtpo94/iw0TL6Hirj4rNstZVxPUtNvFC8NZt7uzYWsl8z4KO/ycme3y2z9wth7vIL3mCQbzC 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)(376002)(346002)(366004)(39840400004)(396003)(66946007)(107886003)(8936002)(6666004)(86362001)(2906002)(186003)(52116002)(4326008)(6506007)(6512007)(26005)(478600001)(2616005)(1076003)(956004)(83380400001)(16526019)(66476007)(69590400012)(6916009)(316002)(36756003)(38350700002)(38100700002)(6486002)(5660300002)(8676002)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?jnlebLWH/2Kt2YRL0j38tFtgRmNJB/soeayqkEDKIY+XCQ8UPNtQ6XFTlQb9?= =?us-ascii?Q?l+Fb5JrQMXC91G3NBXru5n3EYnjS1mYqHFQwatJTI13X685QwwcS2ibHUQXo?= =?us-ascii?Q?EWA+bngGgMuAQXuJKZAo8mwTjR405Pm1wC6gj8ff71JzC1JUxXYF5beBbT6d?= =?us-ascii?Q?EMyLQcEms1+4Z49NvX3SNHldsrtkkTC+qmDe6NQO1lICMS3mR1pYXgkXEJdX?= =?us-ascii?Q?y71dsa09M9cBCoAYuiLqNoXJMJv5BIYhXjJHt3WwWx1d1hdDrsD40mGUU2Vz?= =?us-ascii?Q?MIb0P3Xm5TGdJlIDTgT9tdM3TiM4DAvUbEmU4X1N9xuoRc6bFeEEGf9CBTDm?= =?us-ascii?Q?U381lNW1hsuBaDPUNxnKwNiJVPdlaakp2ORoZOOasXfTQ2lHYF0JsuxQeFpN?= =?us-ascii?Q?b5V09vBjJN2VoL+gEsgydPCgOd8a/t0bD6q45IAb4jOamFyojr6O30AtW9C3?= =?us-ascii?Q?2Tr5NEEdr4G6740CxC2fCEhETQ5WARgkl6ptHKbzok8UJbmleF5FvIpM+Vfd?= =?us-ascii?Q?umZSW9x8OTo3uuycOQGsqIywvGNhdKpSszWyw5V6wLA4lGtDZB/skQ1nLPu2?= =?us-ascii?Q?nkMaXF4noicBa9yn4jEH8U5yz9eSyaIuUPM/SnEqH1Z80HOnlZPdQFvFL1Em?= =?us-ascii?Q?JgWDWzvIA5r8KO/PADcYAYGZAUXmOEKASlfmO9NeoTPf8kslyaQgTNDgWss4?= =?us-ascii?Q?QbcbRkmehNena37FhrhmotXw0B1KzwU8uTK9sIQJ2Yz56yaquI0SAZ/JLZT9?= =?us-ascii?Q?hlR6qs5cwQ5rL5rZ6iwz7E74/+1OqLBoGo+aCqkoE8+oHzd8iu8d5WNY5hzn?= =?us-ascii?Q?OYG0Sg90OGwT9QYFHIacril0a4Mj73azBoI2fioJFPetLk6WpfsQeorAA5xa?= =?us-ascii?Q?rvqqVer6PSvvbGdaMdUljJBaYElTFwdnRYE2lPFJ8oVoYRS1JtNh0VeycHhs?= =?us-ascii?Q?krAwHBuPuyTMZKZhTUg1uo5PTsxjbHVfSGPFuV9aE6Y1ByQy/I2FBJhk3D1i?= =?us-ascii?Q?0ea8vrKZUBKksgvnd86g0nAvFnw3hxc6mEhWR8b7zX4Xwm9JW9wvqEL98L3G?= =?us-ascii?Q?F0igAbd16EP2vDA2TEUl0Cqx4QmR6ioNYj1tiNH3ou7AjCD7xQZCnghCszlZ?= =?us-ascii?Q?fqJQr50v9Ttb6vLxWDfK2wsBezNpwex3N1swgLsnCncQeigP3oCbeyIrKX62?= =?us-ascii?Q?HY0c3fty2RbwEVkQ3NA3E0ulJSoR4nzegLC0tXg9sI4PJxUezKEIcxPuFiI+?= =?us-ascii?Q?BrrDXbrRpwZGwhKQT+9sSqpeu8bxz/o6P8W9McGJAgYF4SqrxB/9JbP/ImCZ?= =?us-ascii?Q?YiycoewG1qNFOeP/SHMtVtbW?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 412c7b13-eb18-4b3f-fc71-08d900af05ee X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:09:57.0183 (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: /wpYDONvrT9cM5dyWm29KBVjurpVhvg7FXMESGtmy10fzkvZvHSO9xGDiQGEP8gt2tc9GgpLMuzGKYZ4d7EZAkZuZoxc9UwV0qatKUoQWh8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4691 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.20.123; 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" monitor_cur() is used by socket_get_fd, but it doesn't work in connection thread. Let's monitor directly to cover this thing. We are going to unify connection establishing path in nbd_open and reconnect, so we should support fd-passing. Signed-off-by: Vladimir Sementsov-Ogievskiy --- include/block/nbd.h | 3 ++- block/nbd.c | 5 ++++- nbd/client-connection.c | 11 +++++++---- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/include/block/nbd.h b/include/block/nbd.h index 5bb54d831c..10756d2544 100644 --- a/include/block/nbd.h +++ b/include/block/nbd.h @@ -415,7 +415,8 @@ NBDClientConnection *nbd_client_connection_new(const So= cketAddress *saddr, bool do_negotiation, const char *export_name, const char *x_dirty_bitmap, - QCryptoTLSCreds *tlscreds); + QCryptoTLSCreds *tlscreds, + Monitor *mon); void nbd_client_connection_release(NBDClientConnection *conn); =20 QIOChannelSocket *coroutine_fn diff --git a/block/nbd.c b/block/nbd.c index c1e61a2a52..ec69a4ad65 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -45,6 +45,8 @@ #include "block/nbd.h" #include "block/block_int.h" =20 +#include "monitor/monitor.h" + #include "qemu/yank.h" =20 #define EN_OPTSTR ":exportname=3D" @@ -2064,7 +2066,8 @@ static int nbd_open(BlockDriverState *bs, QDict *opti= ons, int flags, } =20 s->conn =3D nbd_client_connection_new(s->saddr, true, s->export, - s->x_dirty_bitmap, s->tlscreds); + s->x_dirty_bitmap, s->tlscreds, + monitor_cur()); =20 /* * establish TCP connection, return error if it fails diff --git a/nbd/client-connection.c b/nbd/client-connection.c index 54f73c6c24..c26cd59464 100644 --- a/nbd/client-connection.c +++ b/nbd/client-connection.c @@ -37,6 +37,7 @@ struct NBDClientConnection { bool do_negotiation; =20 bool do_retry; + Monitor *mon; =20 /* * Result of last attempt. Valid in FAIL and SUCCESS states. @@ -67,7 +68,8 @@ NBDClientConnection *nbd_client_connection_new(const Sock= etAddress *saddr, bool do_negotiation, const char *export_name, const char *x_dirty_bitmap, - QCryptoTLSCreds *tlscreds) + QCryptoTLSCreds *tlscreds, + Monitor *mon) { NBDClientConnection *conn =3D g_new(NBDClientConnection, 1); =20 @@ -76,6 +78,7 @@ NBDClientConnection *nbd_client_connection_new(const Sock= etAddress *saddr, .saddr =3D QAPI_CLONE(SocketAddress, saddr), .tlscreds =3D tlscreds, .do_negotiation =3D do_negotiation, + .mon =3D mon, =20 .initial_info.request_sizes =3D true, .initial_info.structured_reply =3D true, @@ -110,7 +113,7 @@ static void nbd_client_connection_do_free(NBDClientConn= ection *conn) */ static int nbd_connect(QIOChannelSocket *sioc, SocketAddress *addr, NBDExportInfo *info, QCryptoTLSCreds *tlscreds, - QIOChannel **outioc, Error **errp) + QIOChannel **outioc, Monitor *mon, Error **errp) { int ret; =20 @@ -118,7 +121,7 @@ static int nbd_connect(QIOChannelSocket *sioc, SocketAd= dress *addr, *outioc =3D NULL; } =20 - ret =3D qio_channel_socket_connect_sync(sioc, addr, errp); + ret =3D qio_channel_socket_connect_sync_mon(sioc, addr, mon, errp); if (ret < 0) { return ret; } @@ -171,7 +174,7 @@ static void *connect_thread_func(void *opaque) =20 ret =3D nbd_connect(conn->sioc, conn->saddr, conn->do_negotiation ? &conn->updated_info : NUL= L, - conn->tlscreds, &conn->ioc, &conn->err); + conn->tlscreds, &conn->ioc, conn->mon, &conn->er= r); conn->updated_info.x_dirty_bitmap =3D NULL; conn->updated_info.name =3D NULL; =20 --=20 2.29.2 From nobody Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618561445; cv=pass; d=zohomail.com; s=zohoarc; b=CS7KkLu0vs8+w4Vwite/eLz3fOjr6pncwzEeYlrvMgwgT81gHCY8WWTEVogGmK2K3b0soDwxo8RLdMuyk6eZsmuFu110Bnqd8c9Cmsi8enTpYxksepLM0BLZdyWJ0j2PyNoVcvkL/hieTCAYLeJdNtvBIjAfV/OobS3eoQf6jyE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618561445; 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=Qm0oHy7jwAz3jZKTXjvRzUGq2+oIQdGpID7wE3IsTuk=; b=IKBrP+1dxTtCaXqbDWXjbUOk3/B6Z+mCSBSgwQQTvrTwZghZdDYQvubKZuJ2GxC6dln7yRNmaT11mSohsDmrCKiVYM4PH6BJ6xjh6kQ//APY09rjAALHQqSy5w4DCKAicW+T54zwd68YcH7ZsWpeltzp5CI6mtxDgr3sTJ7/2TQ= 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+importer=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 1618561445555734.811556699945; Fri, 16 Apr 2021 01:24:05 -0700 (PDT) Received: from localhost ([::1]:55954 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJlk-0004GD-Fo for importer@patchew.org; Fri, 16 Apr 2021 04:24:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57808) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJYD-0001Wa-7R; Fri, 16 Apr 2021 04:10:05 -0400 Received: from mail-db8eur05on2123.outbound.protection.outlook.com ([40.107.20.123]:36960 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 1lXJY8-0008AI-Rm; Fri, 16 Apr 2021 04:10:04 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4599.eurprd08.prod.outlook.com (2603:10a6:20b:8f::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.18; Fri, 16 Apr 2021 08:09:58 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:09:58 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:09:57 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UIVpXDZ9KBpmiphS6fX8b2iRTq0Xf9mijOGudnJSCmorB2g/FFRNywcdsBx5xlImV15/0bA6FcywaUwgAYFujOTxDMNSy7qEN6DCRi241Lj4U96/ItPtDfAacKRuW+Q7/nXQTi2OffOCs9fF9pAJRqlMswvn3hyRxfCAVGnj6oXp+b9UNZAYVmnWA6gEglg47TdfdQCi33uLsQoMlbbeK5v6GndD/YeMisMb4VDK1qCRyATZHOyeMvqzbyNROkuJanxRmJDbQLhqMZRf807V1waZOEuXD2gth7Q7NsTf82Z9q22QNA8gIrRWHo9b+6PAxS/vzzZUZNtRi0wHkp9dOw== 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=Qm0oHy7jwAz3jZKTXjvRzUGq2+oIQdGpID7wE3IsTuk=; b=dWd5nvnn31Ndv1eUuDViM26p9tOThh2AEYu+cbTgETvzX51Ekl0Egm5oPYdubU0XDs2oModKuwVPE2zIk02tJFXdWkNKF6/qwhgI94CB+ZVIhZNVfXKtrKUIVts2OCnOKbFBCqdcfZzaJsHOC9HqkP0oj98zlXUF8zxXnqvvdvmK6xQ3keDk9YDQ5fAUNokRq96wZ2ItQbMjsMABWQUsqmq9TwUK1EhLqIlnRDdLpXcxX4e1cfE/2c4LW4TCjj3SmN6Z6oT1ipb80AhxAkFtIbyvtvezF8tcDdMnzbnTLU/gTrRghAD/1ZTzDNLl92G4D16FWEM1Mh9f8lCpXMwSKQ== 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=Qm0oHy7jwAz3jZKTXjvRzUGq2+oIQdGpID7wE3IsTuk=; b=FBblzXrzUhePrA/7y6ohf0wBFb6euXlh2vfo00D+OSV0MulFyE6Wkl2Kj40Ud8f3d6FPUlabZ1WWauHAIBXyYVOyMnS934DPhdtN9CuuR3SFITqxzRMpR659cGQTIA9w2mBTE5vV3CqE6PFsGcv1Q9mhYqxfgDQIF8ya0JP6LPk= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 23/33] block/nbd: nbd_teardown_connection() don't touch s->sioc Date: Fri, 16 Apr 2021 11:09:01 +0300 Message-Id: <20210416080911.83197-24-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: 3c0bf9a4-d0d6-47bd-7bc6-08d900af06b4 X-MS-TrafficTypeDiagnostic: AM6PR08MB4599: 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: aNa1gRFrtHbjILdyh54J3/el65WejVIZwcagmA8S/FM9q+ubmhbShQoBzhnfXCycZJ9iMfwEg3LMm+EW+Md1og0gPHBzCS+nE51WCSW03bmpdKX1TszzV5oK/TgC2hPUlgN3jvHAPWjxohdLzQaZ02CM4c7bp3dzFSn89p6Rl4KvdmUgEuGH7744ka91eQzAtN570g0pNh6A6xu1ojKyw7rXBIB4NX9JB8hA128BpgNg3gZXSca6m71zQxCyEAWg3KQJj0h5cQyPtB1DduIwvVTqJE38/dhur07y2oAuMp4QxAne7/H0YiT8CHZ8HtGxuxe7ZS2f0f2kSbU29mA6wpQrfuoyt61SFFcVuU6p4FL1Rhvo7ID2+F2itBZdfdytV+NdohfAxwzBs3k84goboq9cLecSR9q4dqrIimlP6whLNQtTNF0Qju7Auee2k2UJYpd9YxNSlTxHcPPKoauXzOWJx7/9ra1vcbVFPHx1WAq0nmpHpzpiSCT/FPprraeWarM0wU6XSmCqfU6ywF078+3HGf4fYFVKswJzXzKDv5WLPwO+tK2W25fCD0NRGWYKUp6V/xCJonXBPwl4UlqjuNAXoaOWvpifLmhagVUxDHcAHQysbblySTfhBhL0sLxHR4v8o5veJSPGvCFGLhx/htsQnKIW7wgEhYSOYtdxnAWDk95AFa2DpW+rUWA7XNBQ 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)(366004)(376002)(39840400004)(136003)(396003)(346002)(6506007)(6512007)(478600001)(66946007)(4744005)(6486002)(6916009)(4326008)(8676002)(8936002)(6666004)(66556008)(186003)(38350700002)(16526019)(38100700002)(5660300002)(107886003)(1076003)(2906002)(956004)(86362001)(83380400001)(2616005)(36756003)(66476007)(316002)(52116002)(69590400012)(26005); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?jn4Aw0cR/eGTmS9LCq4JdhQm/UeGhZ7gNP1gKeAtYS/PxLzOg5w5Qj3oBZUC?= =?us-ascii?Q?nkWyqZnvZtjyZblYVRXI2XsvP0EQXAN7uXYvKEzXjsXLvnE0gfDxVc3bVIvN?= =?us-ascii?Q?zSCP6VKx7neLq+lVxiDbGyNp8H2iO1SY0DL+IS4yWs/p7VyMPtk6/iGi1Kx8?= =?us-ascii?Q?HYYu8A5X1m8ryCJcvNQeX17mqN02WlWuu0uzEzhwWmMRL8oOcKs69lsE36IT?= =?us-ascii?Q?nKjrRD1/Y4lYzqiE34TbFElfUt6KWX7lPfYLrPoHq5oJFLZjdG/8JI1dx543?= =?us-ascii?Q?DWtNg0tAXE9S48tvpjOxFFGky/e0VSPXQiLUQTAUcTaX7vQY7W4QqRATxoK+?= =?us-ascii?Q?mBxf9TnB/Fk69xq3B8gWjpEV8KzmHa6Ryv4RPX7UndS0PqfNS5PDjXb2TFVs?= =?us-ascii?Q?IfZK5YLCZWUNtZtvP8iYKhmZB67r8WjuQzOAEOUP6MxcXohNk4OT21+reXLb?= =?us-ascii?Q?QxOqw6kMkSEu5GtE8NT8ElaX92VuvX7paVgz6iTzh26jfjG7ssErCwsY9sAM?= =?us-ascii?Q?cZIKYf0vIRR7hghX1wM6RIeeneAyh5EUO0sfubx28Y27cZ6I4G0WVSE4Q4Vo?= =?us-ascii?Q?WnUeOGlqCfTQw/b9GHOs08suDXiobe7yMFpJkfLjAYO9ZY1TfayuRpl/puTb?= =?us-ascii?Q?XSd6ol5WtDyc9zPqluh79v+FDDrgc4EseuRssd0IDmNY/KPCp3klzni5R5uX?= =?us-ascii?Q?NlXBISnIBfeYU7tASPP0Osw16nkvWYoXJykn6sgTEluKU841b3kyBIDzq1w8?= =?us-ascii?Q?3fnuGU+4zgXMDdqpzA+8fRqAr9KEAM1F0Ic0LRkpuQqKju+4RYZuncIcP/u4?= =?us-ascii?Q?kCGkE5Mygc1bp3LsBOw57Adrr6/Q/nxHNVWVheZuo0NQKy/g4bj94L6pRu31?= =?us-ascii?Q?+EABmNGLRPQLLDvEvXyv0w6nByUdHxfJXwRomIIGqIvMaa4EmFSJVYi+8Xkp?= =?us-ascii?Q?CnfZXd4uPAIq92de1rDpOxpsngcGVDk5tW+NcVAtN9KG1mfWGI/yIfsFiWxZ?= =?us-ascii?Q?zty2WkhxhpXgZm3qobRcWJ37qA3+OAfgt7EFOVxIf2slp90Mr6l507ACZ7j9?= =?us-ascii?Q?ZrtHLFvrMzjR/BHFOkm7jTm1QiiQ/H8HVfDKG+D7Gi2QfbTPjk6Z+wiwe3yS?= =?us-ascii?Q?uqEu1oksRW2SMylSRHYI46GrPiDBkO010nka7/P8FKlLvkv9DAwKoaS/WEEe?= =?us-ascii?Q?f5bzjMU3nMm6VZZH8Hdv/nlncNK33D1RvhNAPIj20e4xgd+2JsSgvWzL10/m?= =?us-ascii?Q?OMvGuJSn+qG7VXpDhGDRk5jCxMgzaVLslVdPqlQUoTJaZ1WQZKYh2r3umO3F?= =?us-ascii?Q?GBBZfp/7DohJH0j8oVaA7V2C?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3c0bf9a4-d0d6-47bd-7bc6-08d900af06b4 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:09:58.3236 (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: 1Ppez2+OylIHXbG5YMiAYXFkapNoPuoDqFfjwkSwXGPy8G8gJIISgUjpiGACDZUHuprCwL/IWMhp5c9gc5OlsC/1QGS/4Dby80XGWX/dojw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4599 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.20.123; 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+importer=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 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 ec69a4ad65..cece53313c 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -284,10 +284,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 Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618561290; cv=pass; d=zohomail.com; s=zohoarc; b=DQuQr82OBqVz2Lr7sub1VpCF2iJNjh7Ea1aCkuelLOfZ3pt8rWspdjFN4BUEzaZuBNy1C5aUBfXoKs7A1/fj2j6Vn1J5+KZJ40MmaCtrzeEXB5v2MyYNGig5frbzVcIt3rDv0tkEfiG0w5JzN6Tc+XagxYCAhWtATJhLg52wmuY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618561290; 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=otOQ2gyyJzz8+d/HXeCayEZtaVXB36lA2yD3SQkk5Os=; b=PXEGcVYvkludT9jlOP/Ini0Mx7T5l8+t/j/guoWUShZyGri0uNq462wVa7sqeaZVK59hqlFHDPOeIgwSQf5qP+kHn3wRpm1Usr479AzvE6gVuG0f6MWe1C0DSJyNthfVF717SA0dbcUsfM/SauIradxKpd7MQ+XYqZE+eUvYd3Y= 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+importer=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 1618561290045545.7724616268952; Fri, 16 Apr 2021 01:21:30 -0700 (PDT) Received: from localhost ([::1]:47038 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJjE-0000e6-RA for importer@patchew.org; Fri, 16 Apr 2021 04:21:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57894) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJYI-0001d8-PX; Fri, 16 Apr 2021 04:10:10 -0400 Received: from mail-eopbgr80138.outbound.protection.outlook.com ([40.107.8.138]:62715 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 1lXJYA-0008Aq-2t; Fri, 16 Apr 2021 04:10:10 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB3717.eurprd08.prod.outlook.com (2603:10a6:20b:8e::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.19; Fri, 16 Apr 2021 08:09:59 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:09:59 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:09:58 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fYOTT7F5cCicQuzCGW/xoP8D3s2FSS/UfnyngjR315GegwSjVJs0gh7XDmb/R7GQovItGn8/YivQn/NW3/XQfU45+6OhkCOIVVRpura9pi5wegU+7jdA9s63WZVpx+qgLz2wVuFBtE0SISvFGyPuttrxzplS5+ghPtQUHipxMvnMFKWiSVs+XO9SBS0kmt7zmWogeTU0iMi8w5OP31BPwOp5gr9OjfS9Pra4wEUr4tWpcSH73JtCFjBAMxqfVuk/KKIjIRPPOc3g7b867PM/pk352nzGTy8O3d1FafP3qRYnlXpXq5qtZrV5gCFX24nd83yiWandquQo58Xv5hvpYg== 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=otOQ2gyyJzz8+d/HXeCayEZtaVXB36lA2yD3SQkk5Os=; b=BEKC4sRPXOczNCtruAvJ7XLZWKCCKgxvgkfgoKGggY6r9zqDXrKOwMreg313z6bM7nMbIMZymDZtBqP+QMVpp1+QrJ5lfFDDsVi6/Q7xte4Dydst6ZqgXEy67eIZWgfUH3Weemz4hdlyer3RdJnzbwts/VttzGAJRsTz3U7WbLVJ1Vwt0umkjKbwvyNbs9QjIA6DYNeZsQ8rwN6UYRf1WZrrrlbkHI5A0j9S4fUXtP6gtbWVWLCuLApdJQi/N1ANCixkdPVr55NfPYjENmR9yMrKjMP4Ouku7ZXK0n/xLcLG/FSi+XtfpIhjlya6VDQk3ia97PBeZu/HrLAKX9sbXg== 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=otOQ2gyyJzz8+d/HXeCayEZtaVXB36lA2yD3SQkk5Os=; b=IdaGLzpXdXgMU1E2D9Mvg4MrN34pcBpTL4awBzCFgJwpioMwW1Kt9gpH+8MDpVOD7gRQNpvVwJ8ZyWEHYjCpM6r4R3CMNlgEMIsmxK/1i0KvuYu3agx0ogJ+k9rg4nphziAjZGmQq5AmbbFvoSUOVPWYC8GRpQ7AX+6LPhVM1ak= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 24/33] block/nbd: drop BDRVNBDState::sioc Date: Fri, 16 Apr 2021 11:09:02 +0300 Message-Id: <20210416080911.83197-25-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: 39a122ae-b7fa-406b-d146-08d900af0780 X-MS-TrafficTypeDiagnostic: AM6PR08MB3717: 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: KYbcFKNlwOSXLqcA0lygwHP+hY+Gw7ldSCs+4Arxs9yR+/mBSFhnGUlKyXsrYSXE+YYu88U+cFdMepdYAa5YzxpwS+e4HWA4ttnvfG1OpQJJd8CBhNaVovi3VmxT5nYoa1Gnny9lGkOekN6IX1m1QfyWz7RaqaDscH9BfZC66Ii9rtxEICCjUQhtLds8zePbYLmfLTWnf1kBEfsjbqkRHzpezS3THb6n49/3xtZHYomYaqSxO67yFDJWQPcLQLE8/S1Ho1jo7p+IByQiWcARdyLkj9Y5NdEvXCV7yZESHx7RtVCj1yZLgO2akeDeYrSN1LsBhWk0Kwkxqqzp2XjlcRpRqTKoui7+zMA33+yVZk9yW0TCxTAAY6Hd5uB+KO4MManMXYcJdFX/YapY8E77he/Awuzqw8bzZ+wACyA0azZLtTXBs3C7S7oBraE6V64rOs43/lnKShTPjKjYJ/9L9lQojGwDmA496u7nK0aEpCQiorJzTcRVdtAdWDO7PMim+3s+p2ioQvFkVghh+ODt8Uc/8vuhrwmGwUtmcoTD5VP88KJNmTY7aQeO71WpAUVw12uvcpxA/WO+vkHvtQSFAIlLPmhmgPZZLCKqMp+TKFgS3AKjmiEHPZcCYoeQrULTcc6u0Hx1akLUpFBSKK4ib8tNgYz90U1Q+15hoJNwKuW/XSNAtupewgZARJQZN3vo 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)(346002)(396003)(136003)(376002)(39840400004)(366004)(86362001)(36756003)(66556008)(2616005)(66476007)(186003)(6666004)(66946007)(6916009)(107886003)(2906002)(26005)(6506007)(69590400012)(16526019)(5660300002)(4326008)(52116002)(478600001)(8676002)(8936002)(1076003)(38350700002)(956004)(38100700002)(83380400001)(6486002)(316002)(6512007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?idI9jRwt2cmnv2zEOr8FU31ZSUtpQ8s0tScbEoqUAYQ6F9qNwKGAcoDUH2hN?= =?us-ascii?Q?Fc7kcPIlQLKviZUobaU5ZGfviZam1zlNXO+6vkxRo+ZFIzKMt1+1J9Am7j7b?= =?us-ascii?Q?SbUFWUNcqpFtCrLklqgcxVjK7k2xGybJcRJ93EcvB6nS6TwjtFyviGVL8T+j?= =?us-ascii?Q?wuIw+ffjiXG6bz1auKH1cOFg3uqBq13jQb8VhvUvGo25H5c2KALuLD7VRMUo?= =?us-ascii?Q?5/nQMyk74QoDfY5/5sgDse6AB0st50qB7uyTYJOEz4z/lFFxxOMA2ELkdNRf?= =?us-ascii?Q?4CFerKlniJPeMwsN9xK2+GOUXHVdXI0EKEylfO2cy2+RWaovW2857D0PzOU8?= =?us-ascii?Q?RJazH6ZQtTktWX428GlFpbwIOjlyGAEMHQiNaqywptiax1bNSlFfZygFqPya?= =?us-ascii?Q?LPYMycwe2v15Y/4nBwNQ1xGq5U6cGfAOAlAEnywmRyoZ07GJPTVTv2Xtx/4b?= =?us-ascii?Q?KLKqNd7t9t4eFuplOexBbq42gGKcndNwsvaGF0tPczAJZLZBil1u+gF13+rW?= =?us-ascii?Q?IZTcKtlfgmAagHZ1zBCRq9N3f38D1k8YZH1xehyUMqeQcJGERLbiNqg3sIPd?= =?us-ascii?Q?cMhwi8X3Lygn4VuHiOdVNBLqbBD1Hs9Mx6NMyM2NtTeQzXAgHDEujGOFPEMP?= =?us-ascii?Q?8jdvEPLUkJ2OBCTncwVxU+LEnBCHgfPNq3ubge+AgU/WFs/spagminrq2pMb?= =?us-ascii?Q?lTUUHFmfDqQgmKyubP9WU3GtB+orH30E0Zd9rI90ZXUcpkUNdP9ZdtDInSlN?= =?us-ascii?Q?coOFI5Y8BUiZhztGhwCvfa6ncPeUJT5Am3qmRtz+SsSPVczWhawHMBeYSxK+?= =?us-ascii?Q?LXXPRfZa9pc8VgzKHMXItifldx/VysXRz14T+zsXS31eC++nu+ZKaJznez9O?= =?us-ascii?Q?8IDdp2/36e1D8q0qlsee/r/0aEWYIKSklCBQjRnT7AFesskI51Qmps3ySUBf?= =?us-ascii?Q?Id2XWSYpCAG/ZFlES8gmP44ClinlfdnrKkUA5waYrOkVdcKz7fFuB8JRJz47?= =?us-ascii?Q?EUVbvL8Drex+LtvDV23UkafkqapNyORygnOOx6YaXBjH0fjvhSInGB0/UD5X?= =?us-ascii?Q?8vVxHW3uiiX97p7ExDpanzXqvD9F0GNtc7U0O7bNe707EyF2z/9eRuJRDq/s?= =?us-ascii?Q?DIjodgpe+Jqiq6+2wYPAigPOVz3Rnv+Ke0US+VCaYCFlMQpIxmCpYOYNLiKB?= =?us-ascii?Q?5Gx8JodyvCVVS5WYYXNKRuGoZMGEtk1v9GL1o/TyDS9JaN+BvpsDWQdE7DlE?= =?us-ascii?Q?P+IuT2cExRB6eP7D2P0TTGxVSAsjxQhLVFq8SoppOC67oYNL8L4OqiUfpCGV?= =?us-ascii?Q?3JlUPbiqKb/nzVrWFb2AZtJR?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 39a122ae-b7fa-406b-d146-08d900af0780 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:09:59.6776 (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: lLmLWadk39u4vc4NaPmsmvmrBuw81N8LjUzUwZOAzqskrF3uJxPzLr8aaXnBfN18ZauK3thhDZz0roi90yqVNhBtgPc2sFthuXFOvCcUSmM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3717 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.138; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-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+importer=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 cece53313c..f9b56c57b4 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -69,8 +69,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; @@ -102,9 +101,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) @@ -364,6 +365,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; @@ -398,27 +400,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); @@ -435,8 +436,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 @@ -571,8 +570,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; } @@ -1571,7 +1568,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) @@ -1586,57 +1583,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) { /* @@ -1645,23 +1649,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 @@ -2047,6 +2043,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 Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618562331; cv=pass; d=zohomail.com; s=zohoarc; b=SI4ZDDbok/t0ZNe4W5EoX49Y4UntUugoQAX43ps0L5efVwxtx39YeLxrTWpMd3ZawNcuBBCacola3ftfa8NRA1edje7ap8SbH10eKt70kg4SXLqBHoKaR9KNPrNHmmxDcvyog4j+fnxhQYLZFMc6GG/MnbqjRN453qNBcizrNXI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618562331; 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=UYbc27t97K6fvdqgUWLqXbCI8f9H+CpcQF0Fvg+iJ2Q=; b=SKAU3fwNPVQwACQ35thFUPSODoai6qzF5QOF2TH3esQRpJzcY22kFd7UAkrrnAWm1YamqTb0dxsvOkDdJUIU8zqFdsbRIncRblSrZo1KBpNxgbzmfbUm/MJewaFNwjbg/nsolrrBi3NuZD5Ul9bqdjNMUNYTeNPtEOtqn2otoPw= 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+importer=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 1618562331258989.507443080469; Fri, 16 Apr 2021 01:38:51 -0700 (PDT) Received: from localhost ([::1]:35420 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXK01-0002d5-QJ for importer@patchew.org; Fri, 16 Apr 2021 04:38:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58016) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJYS-0001mV-Jx; Fri, 16 Apr 2021 04:10:22 -0400 Received: from mail-eopbgr80138.outbound.protection.outlook.com ([40.107.8.138]:62715 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 1lXJYJ-0008Aq-If; Fri, 16 Apr 2021 04:10:20 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB3717.eurprd08.prod.outlook.com (2603:10a6:20b:8e::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.19; Fri, 16 Apr 2021 08:10:01 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:10:01 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:09:59 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=V58RaOrIayL/feQRg0jH9yyTr1HWB6ICpQMU7STYoXBKuJEWge2TZkCIV4SMvHhaYwfK7sxh+M4syrSGTw/hVi8sofwEDC+cbjfTaWRMRUUG9UwMOKgwu7iRBu7Um24tcz2c2jNp39g1NNGB8/0AzdqyLlIgVUDb1nDu8b2OC1Lqj8lnBSi2f4Hd4wq3KaS2HRWp9clz8dBVC+zgyboxgnPWZNDqmfTsMkoTtcY1G/Q6SOoQsR4MknzV/3bfr5zikQ4BMwLSGhqgH5RDHo5mmTv39lo92BY1yLbR+412bLZvyHUJxBNFo6yT28NzDi95SGsFAbw1ZQapLF/2QkeylA== 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=UYbc27t97K6fvdqgUWLqXbCI8f9H+CpcQF0Fvg+iJ2Q=; b=Q1RD1Mi8hBxOt91rv5lKXS0NypwzpnFg0cxIOWxvmsyJp3OI6aFnXr63gBamYs++gUqXgoYwnUEijsq6zrs2dggedjzlrCg6Fpq1OZFS28U+0ZNp8OYan/EkSnr79+aGCC1z9JupoIdhjuayTgJ4ob+rVHl7nAJZvY644KYvkVNIgypFFaWeXQbPjNTXzWKneK86vuQ7gO23WvShsnS7BJYD8bp9g6uSuvxcZoJAfWpLTEHEPH4G1RAUBxLZ/SaSgv6vFIMB1hIyQcJ22eDcw5dFuEgIFrRRLaJl5MwomfDS8s5r2OdI7nZLYeO0b6QL25uKgkbw2NbzXW0kYVv5Hg== 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=UYbc27t97K6fvdqgUWLqXbCI8f9H+CpcQF0Fvg+iJ2Q=; b=BOSaN1c0gp5HSxP9AD4c+tGUbK2Oa+9hL96Sb8uwnjweP9gXN5eJ039kdD8KMGeRF6OwZV+D3h8XOgpKcdr1Lxr9kow/pwEkPy5EWpMOWMkhO1DuZVgrQCPchFkRYh2VknumvzE4uYrDIsLQfscSdAM/IxN7y93zEMxpRA49g24= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 25/33] nbd/client-connection: return only one io channel Date: Fri, 16 Apr 2021 11:09:03 +0300 Message-Id: <20210416080911.83197-26-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: 8873a6cf-1cba-4a2a-9ed9-08d900af0852 X-MS-TrafficTypeDiagnostic: AM6PR08MB3717: 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: abKdcCbIB7d0b+QSI3lbYl7u61sbbPICxLWN9YRCq4ZX8JkOt+Z4P3i0hbH8WZC4uyGspp2GAnAAnQyBFTPmUfa3hp7816W+m8CkAoGsKKRTnGsYZFeCaLUr0gE32Hy6nwQCTNw7Kdh68v9gRTL+QlaU08Q7tMWyMZx9SvqEgtikHYKZ8P8pn00osE1EAKAXYL/V6Jy8bGWtHIYeqRSxT0LqyYdowGHgNR/QIEhm2PXFKudJsI/W/pKnAwWDvCrVlOKLmpPb1ftYxbS8er2ZFcd6iJeWrCbCgoUsWYs+OAXy2r4or68keQi8MBM2NWaeubGqGBNDj4ZhLLT3zZPcPo9QpzgHYPv8RAi1KJmW+QcOShHzy6A+J6Rd/Et06ad0uxtwwCfHGWWjhTLbcH1M8u76zn4d5sxvklC9X5CnCWMreslalhbKAO3e21y3T5iOn5ruPfvfJtVLr65KlJ+agn6b1BM91q1HF1/M8aMCqLwINr4zG5a4/dKN31VXmb3Fjl870UDILuZ1nTC4SGFN9pDonwiFPZf4osm9KWnT4t+bziwUtmuy6RDAotO3JcMUcd1mPLCDuwJPQdqd/f9BrO3myBwnaMiNseCtDEpVD3IilTeKj7GVg3sjdHbobKHb4j+sLmMqDZ55f4lmJwwCuviLn2sXiIO4YIWQ7vPOLPhO20cCGGVOZQjF8GzBGQoY 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)(346002)(396003)(136003)(376002)(39840400004)(366004)(86362001)(36756003)(66556008)(2616005)(66476007)(186003)(6666004)(66946007)(6916009)(107886003)(2906002)(26005)(6506007)(69590400012)(16526019)(5660300002)(4326008)(52116002)(478600001)(8676002)(8936002)(1076003)(38350700002)(956004)(38100700002)(83380400001)(6486002)(316002)(6512007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?cBrA6ycYzGGfYB/TIXZ5q6m0O7oV+WqMpKMzo0ncowwi8IYIdmFNT24xWnLm?= =?us-ascii?Q?S/VgVhMrMKNWDOxqv4v7SRB3Wl/SuKNdQ/rll7sijIu6A3RGzLv33uWHSSBD?= =?us-ascii?Q?f3gEGHOqNeGHSGIvnQqRJzByyt+zZ7kTMmobiVWLf44q3gjIAS98EBuryFsH?= =?us-ascii?Q?LQJR134zbO16NhAfCjC4hua8qztMU4RN6VdUbM26XZe4926b8cVXs8C6umV/?= =?us-ascii?Q?de7+Kf9pqZzPNDA0u0H25iH1eEPqaoBHaDUE3vikBWwlijIkYv2Ah9ClGand?= =?us-ascii?Q?nqBRa2iNqK92Rw3tstMEBkAegL0GcUWHPd6BMKqi3IZZGvgba9I6lHHS+i3g?= =?us-ascii?Q?lCiNax80gssgG9CTpiFUY6dxYYwZ55dopMoYPQrKT2glQM2DY/8ev6o61Vgc?= =?us-ascii?Q?MgC7Mt4pu6K2b7oN5OmbW+7ahoJexyoWVl8NEKDkbGiiNdnhCDJeuLXkuFvk?= =?us-ascii?Q?Rd7f9AAGD6ILVIytJZm0AX4yJXoh3Xw1J9TsZWpDgJ5J1sorR3Z2o4HFKTIs?= =?us-ascii?Q?+8CbA27O3QyN79eOH+BcSHwK1WXlHqJyg+K/Nsg5nnht5GN4JFvUUf32AUcJ?= =?us-ascii?Q?LMCucDKtoUV1l8WdCEaiV7PD4OOEJPwC+Beqg8pK4VLTWn5823WCN//n7uQs?= =?us-ascii?Q?lKVLvNeFUBfNPiQ2MlP8ANFT2FT8IwLNJRmHb6HmmISMCqJ79DaVCnoOCiD1?= =?us-ascii?Q?H4gVxCAGVCZFLM0HazjPUAC/WW6FnpSya8G/iyuR8yNPMFSnWBG13zHqFAYA?= =?us-ascii?Q?37LLbrrEm7h3RpegXVJSBoUQ7U91JXt9YmE7ztHCdYicCi3oqHpo1uspvRgG?= =?us-ascii?Q?itOfO4FTHtRAtYo/Hckp+gZGcIXpzMaNJGPiYVuVYMfrDvYoAQxrqvpzHmTY?= =?us-ascii?Q?Fb7JzWhjYJEgEv6W6WhYRK1IF7tHXpBiCrBEIBS9xO7z43p8XiWeMdTaI8rX?= =?us-ascii?Q?4vBpOFiMSyhycm/k6kQi1RRRH6c3U7UcwKyE8veX8BS19oOqZPwZ2+uq/bmM?= =?us-ascii?Q?6M4n9n7fsoMWuH0scSQtj+leatzezNNFRyS5SPrm3t7TthnZpLKZX+akG6Ul?= =?us-ascii?Q?kBm/zlgJeJBPxkI6On2UHCIW5mpibIjU7h3minVjOGe6V6ucEfZY+e1PktVp?= =?us-ascii?Q?Occ5nbsunsYrDr3+QaCtM77EbanUKq97LDMUMTWwYNXf1FQ9Rdv+HcYGrRSr?= =?us-ascii?Q?h1GYbqJ4FqOTa7xDWcXGoPDIKz5pRj7KRtgGwZqtnh5B0i0ouvO3ruzxNdva?= =?us-ascii?Q?KtzUt45abl3whlrIuAzdXoft+fPDd68erKhQwLuxmomeyvycFTRX9ws0FHkg?= =?us-ascii?Q?IrlrPLObQES8XhArdmMo694H?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8873a6cf-1cba-4a2a-9ed9-08d900af0852 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:10:01.0028 (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: fe1t22i12mh3Z6ZSq331LGAchlzfRqC0YFTi+JIgkR2lmDDvfUkMk26mD2AD9iU+g7+7Hlg6TJ7oDF/Cu2VZWx+kuhMiwv6zQCKEXkCO10k= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3717 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.138; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-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+importer=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 10756d2544..00bf08bade 100644 --- a/include/block/nbd.h +++ b/include/block/nbd.h @@ -419,9 +419,9 @@ NBDClientConnection *nbd_client_connection_new(const So= cketAddress *saddr, Monitor *mon); 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 f9b56c57b4..15b5921725 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -365,7 +365,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; @@ -404,20 +403,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 c26cd59464..36d2c7c693 100644 --- a/nbd/client-connection.c +++ b/nbd/client-connection.c @@ -255,15 +255,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) { @@ -277,10 +277,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; @@ -311,11 +318,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 Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618561563; cv=pass; d=zohomail.com; s=zohoarc; b=LuOstrUKOZMZIMXb1rcAmTMNKlciZsuOucKM3CD8U5xxqnsnT1yd3F1gec7VVsIXJ/bN4PpA1WqFjodsiL6OoviwGz8CIKsH5yVYvSUMBp+JE1DQWaWvun+nptxvwOWlzv6NW99YPuCHfR7qscAIDUxFWogKXzUMv0yaDi4d0ys= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618561563; 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=H/+shfLISwkOirf04DiUtMpKyo+BE3BeVeHJm/68kK4=; b=dLqWtrXzywunkb390I0FVloiUHm18cvxgiTAVCdt+CmJANiiV/2qLh5AvUHwWwmILiv8xcapnqua7tNugJwmYGgRi0SS66N+vABbbl0OIp2JTn4hkuKcDhEy4AzaEonqMCQLU0BNirRe0l79bDnAk4v8RbvUJEw2Wr2BKitq5bc= 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+importer=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 1618561563841501.75794652693605; Fri, 16 Apr 2021 01:26:03 -0700 (PDT) Received: from localhost ([::1]:36654 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJne-0008Fz-Qp for importer@patchew.org; Fri, 16 Apr 2021 04:26:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58118) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJYZ-0001rx-PA; Fri, 16 Apr 2021 04:10:27 -0400 Received: from mail-eopbgr80130.outbound.protection.outlook.com ([40.107.8.130]:61157 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 1lXJYU-0008Kd-Ra; Fri, 16 Apr 2021 04:10:27 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB3717.eurprd08.prod.outlook.com (2603:10a6:20b:8e::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.19; Fri, 16 Apr 2021 08:10:02 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:10:02 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:10:01 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cAuTqvQxT6UuBHspUH+zs/XB0U7jejXeQ4LT+d9/vRb/ziLW95OaqsfOw/GxN9FWnpzs0kK2pA1Rm5T/hJi2XE3Ej6LpIR5mMy89e76vevBDqDtOurJbveE28TBLpA/e+ydbyiYzhaGjO9SM21wED19f+uqZxkTI3BfbCLPzQic/oJH+h5TZQqhxMzZmCb1E00lk8WMb+VkaJ1LoXB3IeLWIwh7QlFMF9BFZKtLSQBbMO/ySCsJeNlnCJYPEIK7YLlU03IVk2snfV71Ul1u1kNK4CcwWaxwasuhgAv/OWMHex9bNCro/On5yPPqlytOQpXm/VZUxLBfTKgJsmrZ8PA== 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=H/+shfLISwkOirf04DiUtMpKyo+BE3BeVeHJm/68kK4=; b=A5nQte5lH7v6Y63twZQsCayyVyJ/McC1v3bMnNAITVnRoqKBXemtv0a5O7BvRYZrXZ3V+TD1fmJkQTjFWNWTIp9t3qxFNYnTJ9GGvjrSzFWOjPUU7hjpNPAyYDcNl6Jmy+bnPS1wFRzuFGEhV7X0KdomZN1SYEZ9bES+1UIWGGZDJCgfaz6D70gMnqwvIOyJWlqpJPDoilrjq5Rby7PUlijeZt0w++gPWNreeGCjBVkqIF3WYOEOUCHJn+84rJl2aoMsnQU4OqbJ4wXzd87m2MFaujyKskGeF2t7Pkt8s4E0pYa+lAEvhRp/cRAD22j2qd8koYUxRJqskAIyHmT8XQ== 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=H/+shfLISwkOirf04DiUtMpKyo+BE3BeVeHJm/68kK4=; b=PTyHKbCjsTMq828Of59jvwIr0x7GliffFx3t/PwpoOmdpmZ96riy7iptg2Hz6ABwDv3Uyv6Rwjs5lZ+1VT6yvXpNyGbWEKPofIBGiAnnqAktNgHQ3O3n24qqcSdKpLtm0Fub7iVzSvZZFi6q7dXMX+DOSO2sBVezhtdSOuMCpGY= 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, rvkagan@yandex-team.ru, den@openvz.org, Eduardo Habkost , Cleber Rosa Subject: [PATCH v3 26/33] block-coroutine-wrapper: allow non bdrv_ prefix Date: Fri, 16 Apr 2021 11:09:04 +0300 Message-Id: <20210416080911.83197-27-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: 17ec4d3a-d593-4b68-d825-08d900af0939 X-MS-TrafficTypeDiagnostic: AM6PR08MB3717: 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: zYVeWHN5hC9aFmPIPkVcp79fbB2T5z+jvKHYpagQo//GCq4mXJSx1o77PTVgWvEGwKHzFuZcklBbWE7k+rDQuL65KvXzALDfTqZKGpuloIaVGyKFhtD9nlIt4V+VVX4Dt0iiW4LsWXKbHq7V0f9w1W6eg5Q4aBaRD9TNgHFKQYVHhX5L8dByaP17ztG1+6GOZvTdtMUiKlUzwzhrar9Y8gfUvNLVAtNNim6zFTyta8YAhwmc5YzG8kuivMpdWvo7FZCoT/YeOWfRYKuuQX9fhL7Z1jleY6sEvl24Mz13KlKnzy+3AUduRJSdR+nxTIL2sW4hKdVTZLcFQNI7o31EJeEmZUBM4bzZWIdQ4y7tmy5UTqh/H97p7QDxAJZTvMfvsdFK3ooDBwI1E7yYaPPXrDt56EVo8EfJyc65QIEJLRNeetTRcZxaPHlbQZM6JFDQ+gl2NVLBPwhQBdB+jyvBgcxSAnIajNyNasWzN/tPJh2J3wAU88XzrICWEbdGPi2nNvNYVLUh0Jmb8oTWitYBsMWfvJW2x707gYS4PTs9W2sa5SwfKdRCpLdpOwPAf5pp2X2D750YsIHIdQ6ozcfk+xSgtB8vzTR79kYBHT8LiE613+/nqKuBX6ul3kekE2L1LTYn4We9jH+u9Hs7DTj3F7AeC7LeYZO4XkqxyNRASPE= 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)(346002)(396003)(136003)(376002)(39840400004)(366004)(86362001)(36756003)(66556008)(2616005)(66476007)(186003)(66946007)(6916009)(2906002)(26005)(6506007)(69590400012)(16526019)(5660300002)(4326008)(52116002)(478600001)(8676002)(8936002)(1076003)(38350700002)(956004)(38100700002)(83380400001)(6486002)(54906003)(316002)(6512007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?dwaTGnkdO/hzfk81swVZ5U73mjdlxtCH0IMCMKFMW97ekwd6hP5LVTkDghqo?= =?us-ascii?Q?aaHDLDO0LvaPDJEohbINqvNTSvLN0yQNmAAOhZkaW/ywny1HJMQAJ2SHImBK?= =?us-ascii?Q?uvV6SSJx9RAEERdDy3AvT0zUUgw5ewG9GIUaflMK+3xes3CkpE/G4fNw8btR?= =?us-ascii?Q?8tYIsBhwT2UNeVXHqz1u/QebOWb1u7q1evkx7Hu8Q9ZI+NWlnNLWhPiafKAg?= =?us-ascii?Q?P8Gh6lU1ENKZRihNCWWoJFZkNL8dnuACrXmCXui05O32ntCJ+eiUauygwLZX?= =?us-ascii?Q?rgb9EVrS6RyLErS8mife/PzHnM7wBNuLbYF3qsRBy4WD+0K5B6gIQEDbaaD0?= =?us-ascii?Q?ykAH1/GtgG9Gn0onIs1eFGsceqWp+FdDQxOT0NyhvpkqSuQAqT2iaOEMAkPC?= =?us-ascii?Q?eSjwIhMpTM2a2wVC24qSibC0ayqeeZvY5UxtXimgmReem2QwjvKDvas53nWj?= =?us-ascii?Q?5MpvhLbcEEOPftmbx/D0sSb3zgdMBPBWvfz1FSvyjeHcJEcOllfY0zeeB7bT?= =?us-ascii?Q?Kn8Nl6yg47PVVOwFOmjnG+I5Sy7O9bB+mqyqIyf682Uv4N76F2VgoPZLZKl8?= =?us-ascii?Q?BgjB+1RICCHdSE2zCFiv1H31oxk6wwSzKvMBCNlUl9cOfjdiaiBmAFOULG6v?= =?us-ascii?Q?Gp+8HxLhO+rTaFwtMdnblEGpOa1DF1T4oiTEtYvVE1YDFtSvYVtORir7M+hs?= =?us-ascii?Q?XqRX7FnCL6zlMhHyGfBL/qxTijjVz9pk04D4zDLpwS0eimhL7YykHNELDHNl?= =?us-ascii?Q?yznnNdCsRPbKJOBwhSesmD++36uNbZNnFpa2Cr/O8QRmlZDGqh28qnf09lSl?= =?us-ascii?Q?HImHc75wf6N49MffcH4WV6RKc79Qa6CtxF1mL6adBklqMHrGnKtut7gj1hCq?= =?us-ascii?Q?oMJavu/bhsSt+3dM4JXa62BAM1CvTm4aJ1SpnJInEVo2dcUn8U/L6lfxndL0?= =?us-ascii?Q?yA+Qo1eL0l34cJ1QE6GrLbU+6z4DnOhEB+eC+BtowBOgcIG+gMHZsMb+WXRQ?= =?us-ascii?Q?GBraidPISmt+tqqdhTUxK45Pa457itDZPk5bvkbBZEliUhwvFqcYtvtFum2X?= =?us-ascii?Q?KzRWxYLVfR3udyFvwNAAEaoIerWkvkQCq9F1YkMGhl+J9+rKPjI32POlG+D3?= =?us-ascii?Q?4wO75x/ztJajbg8L4fiUgHnOZtjJEukh2yqtoSamZKMkdeSNXd0WjnadQ3Rv?= =?us-ascii?Q?oxqc7FggTOICQSBx4ueDcbOnIyMgFkucWonO0PTuxMzkonXEi5XNddAqWeQj?= =?us-ascii?Q?/hnvKYEyw3nlop4o2LgPKy7snjwZZQ7yruVXlGIE8Y4nxpy+fxnjTZei14xs?= =?us-ascii?Q?mX6XU2knCz30AWENyd5G3uAd?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 17ec4d3a-d593-4b68-d825-08d900af0939 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:10:02.5211 (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: 2TZAfgPS0KOQPPdFiosaDsJUE85O6T/ewDmlE5Pf+jwLSNgvWXbWK2cAmco+QY4lGRZzgDcB8xeJnLAFOGMlrh0jBP+2MwzcKzuRRTOTues= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3717 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.130; 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+importer=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 qcow2_ 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 Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618561256; cv=pass; d=zohomail.com; s=zohoarc; b=OCTCJvmSpnNxGPSWkHMmB1spmsWl7KgFEphlQwAeZi9cDzwuGJzf0LRHzCb6m6v82dIrnge8P1SYbHLHqw2vN59cNUWvjOiMHPp48dQsJGcOBraftWr8zzv1ZC/bRPrbnNv5rFtNAnsy6YbD1A0FTZHfpRtzEWhdXMwdPNb2wxs= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618561256; 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=eMOupwfGk4Hh2NofkATvRy+YcV4ZG/hMjOt04CG69og=; b=EwVLHx7OrsrCQEW/fZ2I61pTPtzX5RNxMwxHGmFJFto09vc31QXICXyxrOaeCqg0oKQMceuQZvT+pD7dCNHA3XEr4HN6m1FuJ2fj5wTsfDIDGncOPdhmz+++U/ktB16p0WqvJp/tsVHnoQJUrA0/NpMcpTHWquNMMpR4vd5rA50= 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+importer=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 1618561256199136.01019312964058; Fri, 16 Apr 2021 01:20:56 -0700 (PDT) Received: from localhost ([::1]:44118 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJig-0007o4-1M for importer@patchew.org; Fri, 16 Apr 2021 04:20:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57930) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJYK-0001fo-7I; Fri, 16 Apr 2021 04:10:12 -0400 Received: from mail-db8eur05on2139.outbound.protection.outlook.com ([40.107.20.139]:19400 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 1lXJYG-0008DX-Hh; Fri, 16 Apr 2021 04:10:11 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4599.eurprd08.prod.outlook.com (2603:10a6:20b:8f::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.18; Fri, 16 Apr 2021 08:10:05 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:10:04 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:10:02 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AMkCbj3abd+9jczAwb1833t1arxYPIiESMMBYygqnQcjSectwrLHGkiDq9JueUTtWB7kzcDm5hmQEYBn/2apxLa1yyOSiEKkUVOjNA0Uuqv5DrOVBwHrVmqXjIH+e17gQt3Ay6bLvFJGN3WIFE4zj76iXSOmC7+ks0L8qoYkNFgtJP+zVGWAtXTN9sk/1SJE79yO7I2I8iXUdXFkCNEmKJBPiqEoUINCjPJuKjq0WBAscuq6nfV2FQFKVIplxUs223gC0N6R245k9vS34kuo4Apt5HTjFDPM0oPWLQtHtCacKYVQO6qJdhthtogv4aI8bx5NLh/0OYgslqMpgl92QQ== 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=eMOupwfGk4Hh2NofkATvRy+YcV4ZG/hMjOt04CG69og=; b=lAep4TBUzmZhwjarGurnHOtjldHxjjtRm6eiKO8gp78glBuSXQOONBExKNlyQShYsZYn4gfUHfH4Q0EYgrTyq1X8+TZHXW+Adwfw+CNK8Lw29gyBY/m6EOWCRbWDnZiuoSu2ios+7yAMAJE0LkYJpN36fz6/J7YAAgN2dWJkoLi17AwfU/hvbC81patnfEo/Ite+w8fQ9DAzTiDdz0khHu473h4xJoGwSG54kSJOTCFfpisxx+u8DIMf2OgaqL9zkgiYL5EYYKbgIlo7Jd3hOJ4mJ/uSQBrxTSDQdUtlei7R4PL2RpeAEeTtFXGT0y8gcbQKpshWA1nfH/lyHtORDQ== 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=eMOupwfGk4Hh2NofkATvRy+YcV4ZG/hMjOt04CG69og=; b=LlEgYMJxVr3Qg2ZUBhgQ1/dJLed1gfOozBg27THatW+ekMivc/4RxU8v2gKjv3M5jKJ9/cyVCDLaTLlJ6VrtbCdv1wwTLpjskB03uVvFcm+qFP/9ZfDbfOieBmcCFKjgkisNkBM7IoR+ZoRH1FO1qeslBAAEiL+65G2CnF2G1NM= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 27/33] block/nbd: split nbd_co_do_establish_connection out of nbd_reconnect_attempt Date: Fri, 16 Apr 2021 11:09:05 +0300 Message-Id: <20210416080911.83197-28-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: 843aed56-6748-418e-8ba0-08d900af0a07 X-MS-TrafficTypeDiagnostic: AM6PR08MB4599: 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: KA+ZoLj9LQQvB1hZY9ErIa0utcoui474VtewJzLhnJr1BsDsHu4qaqUBYP0q/vWkuUkZEFpMnuH7ktzBCLEpE4qkvupr0Q2bRsbbnXgvlY16ZdJjO79dw9plib3chkwdiy5pRLyPSNIftuBiN0zFEsIWH5IgEG0VcpQgRMyW7f6cSQb9N8WWDYf0lKksYiRbjmWMyDb0FI3dppVx72A19NKMlnlZIwmL8P9yXnEnGySuxEYA6nY7f8TBJ96ZAtdW2dtuZsEl4g9YxVL6ScHtq3ibdNxkX1aejbVOvia18vXpllcbwuj8gItZH3xF9KwX3qQrZ3iIE/xFmp4HpafOSdMXAX66OVFPHVO9iYEdbVg5mCbZd/24H2IiP3LMe2Mo52Ot/mQMzm4Ggb5Da6EXgtR04RY4GRMPcl1fpcjRmnnueh/uY8pGleKFfuAkRXwMPAkomytV31Nud2mqtpzJJhezeaB2SEPT8gbaPjCzP/05kh2F7EZYLX6w3x9v4x7Tr3kLZzcAJqsgU1VVI1zdeXJVQA2Y85P6skATBhneubPF2mMOUYP+AR32Bv7dJ11aii3nmpvhDUE8MR/WQJP62EgX7NScA+bI9+BtQ2pbXznl9BPWyJFBuse4DQXvTYlawaK1Oh2PnRJslPrKDV79+TYddrEOfNzX3dASPajme2bbi8PTpg9zFomwAipUzI79 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)(366004)(376002)(39840400004)(136003)(396003)(346002)(6506007)(6512007)(478600001)(66946007)(6486002)(6916009)(4326008)(8676002)(8936002)(66556008)(186003)(38350700002)(16526019)(38100700002)(5660300002)(107886003)(1076003)(2906002)(956004)(86362001)(83380400001)(2616005)(36756003)(66476007)(316002)(52116002)(69590400012)(26005); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?hRMISeRwLNt3ODm3IPncritf+H6Ve0SnQ1lHIQ+J5pAEieGDH+5e8IttfQhA?= =?us-ascii?Q?EtdW4u1FvUH3OgZyMge/aiusv5ehd0Af+5Bi9sIGlqgwOitz7IHvUL1ur9F7?= =?us-ascii?Q?34ueGZ7qibEXOfaTrPqdSriLKZphvGG6VgAFyIf1GAxo/KZZnB21Q/4M15rD?= =?us-ascii?Q?RuaWTqsIMvJxeaMV6spRSRzwWi8XrfaRgLGgr5PK/ynGaL9IBpKzAA9047XG?= =?us-ascii?Q?blY3lqw1JUByrsoPL99Q6ts48fz3ICkEGIaPGG5HQvnEXWlMKet2HLNE5yR2?= =?us-ascii?Q?gVO7jLNLWE1vJwrS3HlMhyvWBx2juX8K/Z6GETslTAlQfcmzWfHRPS2YZgjz?= =?us-ascii?Q?gesx5uqaJ2cs27aS56+rlO0Y9aAYnqvc3bfZU2masaWnMA5Xc+KXHsvHIlh1?= =?us-ascii?Q?H8yQ5a31O9pVoSQmMvsMAFrjcV1Hv3frM1F67W/OCTmzk3GRFJZbx2AhUjuu?= =?us-ascii?Q?znoFFZKLBI1V+VB7g4Uzp9NwfIXW+enZR/YSgFIGOI8LeQokkdkZgK+7ESG2?= =?us-ascii?Q?z2qlcVKASJ69C7sUyhzMhtSaTWwXaouwDmulVFE9F/SFuAf+eq7D8Lzl3fpZ?= =?us-ascii?Q?zhOU07wbmi4yLgdMbq7wLi8fmaxyOGrvU9x4r5ydiLh0ZyQxE84+qu8E+Kdv?= =?us-ascii?Q?QCVLiCtanXfZ9deY5VVZqFPsUZpFSHmcU429kcVrWuS6qPZ8/+GK9zqiJQAJ?= =?us-ascii?Q?XaO34pOK7+pkFGkDHL6QuGz9YSJSbDHxi3nKYkE7ugQT41cCso0ipAbT9la1?= =?us-ascii?Q?RE9HznZVkuEbnjiUwZIoMbBZcB6j6R63F/oyJBBIERjc45oKx0hMuGD2ZtgJ?= =?us-ascii?Q?ka0h5KNZhQHlxA5jkmZMK6wfscFBGRJ8xchIcg6VaRZ1ZvEem9eO2dlcK92W?= =?us-ascii?Q?vNcJDYpavJ76CuG3m1t/IqzwjPWyU15S3dTFKCQR2FHCgoeFgnmKWCBkz83e?= =?us-ascii?Q?8aghU5jbtefp5XK/crO9RmALX6CUCVxGBb54AK7lteDQ12pEkcRH7QqatMJ3?= =?us-ascii?Q?krsyeY7QVRl4lzmYb1fe8OgkUABgZgFXisNYiGH4ICd3St9fM4U93EEh7DNI?= =?us-ascii?Q?g/s4Hm88cRhI9S+33o65+P9YVRXfgMCTHnn015Rqdf+EfZaPW9suF6VpE6Vb?= =?us-ascii?Q?IZSDkjxd0uZzq1fJnQkxHMqJHLWcR75kim/h/zZ6KaMYx2WEZRrJmQUlbtc/?= =?us-ascii?Q?GQ3DrmVEM8LBT/W1WKctAKjJfPMW5ujVm6UM39QwACyjUDXlUjrmRIOWnwTx?= =?us-ascii?Q?iJjNDaijA2BzDuLTAcVhHiB1IzpCc0kW2Acet6oWaMMSFQDHHK4mEK4w/d2u?= =?us-ascii?Q?luwslz/eefyqTQPLfRvBCQX3?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 843aed56-6748-418e-8ba0-08d900af0a07 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:10:03.9479 (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: x7/p8uCWB9Xdj3Pg7WYwTELnU2Ud2yc6gG/fDr6wZEnZAROQYVGTFdxepXPfzpvDvj8mjifCa6hL/tzv2DocnlTPH/y+v7LWO11gSyadElM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4599 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.20.139; 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Split out part, that we want to reuse for nbd_open(). Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/nbd.c | 79 +++++++++++++++++++++++++++-------------------------- 1 file changed, 41 insertions(+), 38 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index 15b5921725..59971bfba8 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -361,11 +361,49 @@ static int nbd_handle_updated_info(BlockDriverState *= bs, Error **errp) return 0; } =20 -static coroutine_fn void nbd_reconnect_attempt(BDRVNBDState *s) +static int nbd_co_do_establish_connection(BlockDriverState *bs, Error **er= rp) { + 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; } @@ -403,42 +441,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 Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618561521; cv=pass; d=zohomail.com; s=zohoarc; b=UTF/2Eqa37iAR34SyM5wgGrkj7sit6I73kpythEB4MRaasqg2UkmsrOrBA4nvX2HLrt3iDXfBEdpLWNeHyqImXttE6VlQNkMaMHpjzHA13MJXjYAHjCNOV61j7CxiIJbnS4Qsu1EIXfSkhDJbZjnNSsa/1jAeBbbkyW7O7bR/5E= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618561521; 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=Gd8kO89PN5zYxm5bj/esnR0KEElbCAwbgycBrAD3VJ8=; b=XPWKP1xqrZzEa347BiqkSFrpBWWNuf6ltU7Y8fJ80KEdo4708FkmWFv58AJdQnCEDpRIujLyFAZhduGAx2UnzmWVv4+9UhHwk5Fm+sP2/mvJac+att9Ekq504fy4JERTsQTuDeSRoZNkkZ3TqWqEitiTs/QipcHSuqJghozL2wU= 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+importer=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 1618561521920847.1137170195223; Fri, 16 Apr 2021 01:25:21 -0700 (PDT) Received: from localhost ([::1]:33672 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJmy-00072i-JV for importer@patchew.org; Fri, 16 Apr 2021 04:25:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57978) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJYO-0001jf-RT; Fri, 16 Apr 2021 04:10:17 -0400 Received: from mail-eopbgr20116.outbound.protection.outlook.com ([40.107.2.116]:15815 helo=EUR02-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 1lXJYH-0008Dj-UW; Fri, 16 Apr 2021 04:10:16 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB5909.eurprd08.prod.outlook.com (2603:10a6:20b:297::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16; Fri, 16 Apr 2021 08:10:05 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:10:05 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:10:04 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h6WmF0wx+z9cw9i2/o61ZEnaxI7EjLdhR7YsEhH7BasRXnRiw/GVCHYSaym+y+lwxvd1HRIb4PVbH+prmRoNBiJy80CpWw8JIpLZvjSobd6tdiKwljYPiumRd9sYMiRX6uCA4xFSCSVfuXXcS8PG5vsPzVIcUWcVtiVI859SEHxlFD5Ih/zTcTN2qGC8UUiePH0axY795CmQg8pfPx4qPvkrr3qUMNmNaJAjUlL5oc3w1KpWqu54gP6hkEmX9kGH/S+ctbb4CW98bdTDrnJcX2UfWL/Ja080fq7g/x+99VvOKjWQqb+j8paRQxiI4Ktr1gRtnq9k6LAaE6Bi8xj0JQ== 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=Gd8kO89PN5zYxm5bj/esnR0KEElbCAwbgycBrAD3VJ8=; b=FrLxme5EGtTPbQntx7YaPzVjJl8dKt4Jw+32Simdi9HgdxUf9RoMBEX6RK0w0o4uwCuMW3jhBYrLMw0bkJ/WEDDcPTMgkUOXaXzB5QKTMDYvW/ND6ev4U27gx45dcQRk9tvynIRFirL+AW3usBEuPsI74qnbIbCh68RosBptVXCQM2svRx++cf41XB9cnDfM2CfSv2lZ3rYo5CZ8N58SwN/KdI9pxQ/IlQySPdBBbbKcbqQNNjpaPymlzfpsvgeNLPDW3MwlFPdy7CTSiXyZ5GH5vV/0Aif4vGEPWLI1QeJVD/kIZkB4b+DwEawfgSw9zy2Pekm93tL+s0OlMh6UfA== 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=Gd8kO89PN5zYxm5bj/esnR0KEElbCAwbgycBrAD3VJ8=; b=Vt+d6Z32LFEFMXyExpLKsH2B180DflcPMjSIQQrYCqsCqxJFdHpFRF+bRKfTwbcs0pNCdAogLVJgfPUKfOd/UV6pvXizXknYA1x9L/O0gbqOBbgQOAo+pjQjltcC4AYLN0jKPEAJ/WTfzftDswQOTTH9SCxSPf8KcLmZsLoDkJY= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 28/33] nbd/client-connection: do qio_channel_set_delay(false) Date: Fri, 16 Apr 2021 11:09:06 +0300 Message-Id: <20210416080911.83197-29-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: fea339c2-170e-4ee2-b742-08d900af0ada X-MS-TrafficTypeDiagnostic: AS8PR08MB5909: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1201; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UYBBVcjBKYxYqF5Wc9+3bGi5emqFfENsD070UyksXn/kh8ONp9YHKTQs6fGcdfoIapNk/gOecIlL1/yV7HIBSy8kwvmf6FmW0iMlDJtaWvts2Nzf+ARP5K2gikvMRQyCiwkEg7d4qv+JMJHu589eIIyRWkT/eCLqQV73MGgIOG+LzdBCjWs5+JC+Cvih0WoH+Sm9Bipton0sJf42/vdsYnnNasXmsg0Pf120B0x1bNOl88XYx27VjGek1T2X+zxqr+f2oylRKiEe7z25zLINn9cDI6fDKyKlTpPvRBKNMl4TvUqV3kqw4gBDzpIrUzvtBaahUzTLT9AFpvaynUhCtMEVsxspjl1fR9qpaEMNgfypmegywDcEpE0JNmEW7BwiBV6NumDAlk4FhSxbawspp2f844Ep2gnRN2VH/ncrF/n4yJnuBrKXoI8+A2dCxkwnnST6P1oiRkIMBsJsU+iLlM1kGlDX+G1PFjeAUEpIqThUPFoKZ4jJXyW2wF0UaiqnIoTQYBpiJafiIkZSu0Ne6KVuj/zfoGNqhYvo/e5c/Q6HYAlk+64E9jey2D7S3YhUq6hK+DFAvxTg9Lu+4mvpFbe3hOlylBsjIIXxsRq5BsJrZ4okD2Yy5KOSpZrxtz26XTkKwLLZFEyXNQWwzPjSJzdCwyfBM5E/kXEXm9rk+2lB2gjuv0T+C0U7gA+WOkMg 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)(366004)(396003)(376002)(346002)(136003)(39840400004)(86362001)(2616005)(66476007)(1076003)(956004)(52116002)(6486002)(107886003)(6506007)(4326008)(6512007)(16526019)(8676002)(8936002)(6916009)(66556008)(66946007)(186003)(69590400012)(478600001)(5660300002)(83380400001)(36756003)(38100700002)(2906002)(26005)(38350700002)(4744005)(316002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?zdm2QgoNCHTIgXCPfQNJnGtbfISNMHlgTsdq/xFtJti9elv11xJRoVU+hjMR?= =?us-ascii?Q?1Stv4EYjCwmVBp03y55ALv+1YB9Ta/8bJ+Oy0O/y1gv/8q0qGcA0Z/BFydIM?= =?us-ascii?Q?pYPsHaaiHu4xDYoTStMisI2XBO9hRTHPUta8TOYB999tCEiYZEo/A7ctLGrE?= =?us-ascii?Q?kWjMZ5b8K4Z7G7jfPJ4BfgwqhXdcu9+PZi9Vk0mO3idYKtt4jYoLYqEMJg2r?= =?us-ascii?Q?aYbQjJSPdxG1mlw0Va5TmshHKsSTOyXIS9nUyvHGP/PPNEGTiIuTWK+SWQv8?= =?us-ascii?Q?4TiigrZsk3DuoPEO7HH8Ta+iJaCBDGYYTaagSDdMgiKhWbL0PMZdJkZX6yUi?= =?us-ascii?Q?3uc6ZWU2YhpPjMwB8QcXYoaeW+ssw9ZbZ5QEAp5ggjpRSVQUpcSPv0eOjgng?= =?us-ascii?Q?uatitkaq7DVvR10PNCqFX2Upp6sDuu98BE4WKwvuuFFIsXXlkB1fyCYePK16?= =?us-ascii?Q?Ab+wfivY/M1XXTfoksdOK4mVF2Nbk5QvtPeSI5a5uWFFcOBSHWVaa8nibxSj?= =?us-ascii?Q?EPRKAjttr9t0+KXgcM9wWm2PXLictMIz16ekafHjsrgkp7IFWzDwAXTbnwZo?= =?us-ascii?Q?cIUQXHwPlkbO+x0wAAjW/NjDlxvMcvBa7gvyvuUQ9ymoaM+2PpWYPnEdp7Ed?= =?us-ascii?Q?7LtOBm57ihRkblbKc4Vh3QlmzUPgRVVAg6hlQNkbH6tIXPSeH4kkLjuMLwFs?= =?us-ascii?Q?kLRkzsPUufwoqMmm7dunehWUBS6P82HiRynLlyzLpar5u4QBGaw9EEyNLkM9?= =?us-ascii?Q?R1IwpvzRnb9I+f478lN5smGrX7tTByIWrvrmK5JLL3jaf7WayExAFFvgTzw1?= =?us-ascii?Q?vDk9LoNsgJ3YaffQzwbK58Hx1q7wSec5sFDJBtrd7+8nQ9EkA3qc5hvgDPd9?= =?us-ascii?Q?2nr+dVg9p/Bia1eCsg9njsuFv9izbKzyMdRBTEgnqSUTdXCYgbNeYxF7EAli?= =?us-ascii?Q?F4Z0WoRiLM9oAB91YEDK81bJbINbs6vy+QOXnv7rJ6Yd/Le6V3wTSAtycF8E?= =?us-ascii?Q?JvOznKuSTp6lrYjWtfNRxy3F2C45R3xqNHsy7A5LH90Dm8lexLX2dFqp+yRL?= =?us-ascii?Q?URtNWQkNSRHud7JORCvJgpDUBngTnhwDaMGT/c5J7I8rnrnJF94RzpO5afgG?= =?us-ascii?Q?kDCnBwPNHfi3mRZyXCasl4woyY5cgRrxykLaB+8T8SRgsLwByywe6joe2lHo?= =?us-ascii?Q?QB7A6zRujDkgFn/4gaTul+bC1YrHlLGI38HTJO972Xsb0MsTTC/dHBj7htx2?= =?us-ascii?Q?G8lGrahQeCvO3tPdITyvPrGHkgxzlA++1G42o43JKNDViQv6BwZ7f8ecjEue?= =?us-ascii?Q?quzIrtCMzPMXzX0+QE0kgvv6?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: fea339c2-170e-4ee2-b742-08d900af0ada X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:10:05.2611 (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: JMI/Y5x3vmivOw6YGy5k1TwXyb6doeUKlLfp0p8/ag/2GjXpJCSWh1aTWHwkjWzF0tqWrP2me/YZnoekHHPUVuOhvuZIo2X/YasRSrk0QD4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB5909 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.2.116; envelope-from=vsementsov@virtuozzo.com; helo=EUR02-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+importer=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 --- nbd/client-connection.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nbd/client-connection.c b/nbd/client-connection.c index 36d2c7c693..00efff293f 100644 --- a/nbd/client-connection.c +++ b/nbd/client-connection.c @@ -126,6 +126,8 @@ static int nbd_connect(QIOChannelSocket *sioc, SocketAd= dress *addr, return ret; } =20 + qio_channel_set_delay(QIO_CHANNEL(sioc), false); + if (!info) { return 0; } --=20 2.29.2 From nobody Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618561818; cv=pass; d=zohomail.com; s=zohoarc; b=WFY2EiuOUvAvaS9lNZmn5z72TOs5Ae78dadcQ1KZXpZegBwMEwbMKtOeFC9A74/aOuo1rZBCYmIsoEdOScvwqrohwE/AR5jvwSr9BtpyoyYXsZBrtU2wZUjG4PtFFXE1+DhQz9OaZi6IBGWqMCfvRKaiN7SmfxX0949rcIAv8jY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618561818; 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=9IFOo/T6q/eD9kyJaPyChU2Jr602vQ+io7ui8mF32h8=; b=dg2u/q18+GeyhA/fN20fWIIWg4KW0poe1inFDuAZOG7ihV42mVnovSXgmRxknP0WLbSR5fUx0Nsi46WrAc5qj+XF248aY969LKYHW25VF5Z6E2RfxAo3eGk21vb79o26/CQ0DeepFmuCkG1xX5aDdOqrrF9M8WVGx/L7b8ArEdo= 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+importer=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 1618561817417537.369152384513; Fri, 16 Apr 2021 01:30:17 -0700 (PDT) Received: from localhost ([::1]:46536 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJre-0003vw-9P for importer@patchew.org; Fri, 16 Apr 2021 04:30:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58050) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJYU-0001nL-Ho; Fri, 16 Apr 2021 04:10:22 -0400 Received: from mail-vi1eur05on2098.outbound.protection.outlook.com ([40.107.21.98]:63928 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 1lXJYI-0008Ex-Bp; Fri, 16 Apr 2021 04:10:21 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB5029.eurprd08.prod.outlook.com (2603:10a6:20b:e7::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.18; Fri, 16 Apr 2021 08:10:06 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:10:06 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:10:05 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=j8hU5xAQWnxANTuNjBbYczCpKOCJ4A7CGDzx91czKavg2HE6Bj3XUqj4E77l0wjEZx1SYvlvU7cGl4xOsv6/PNsOp3uLPd/NvzlnKYraJhxBz1ywV94lAbGiRTbwWoW+a+2QftJw31wmE3Z2YCbtBKOFAbI4B0OpDbGG9cg4J4ave/CO0ASQxTEqn0kXpyBGP2b52UnZvNLW6ZbbXjWlOsCvrmOrPDOZjFRI/Mep7x13mHOdL1qfIcI47r0RXiF+GlpoiRpxqbIeOsj8pP7ItGAu6pBPQ8eH35K6RGGznRbO9QQo0RvguuxcPdC8EXqNP/vZ73QV6N6SIZWfycJZKg== 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=9IFOo/T6q/eD9kyJaPyChU2Jr602vQ+io7ui8mF32h8=; b=S7dHL+yN2KFlrd/odENZkPxENDkVRq+ZXffSWfdgTU7yjg3BlR+6Ce3I8mxUAc+IkKqOcwFM0hJZIo7wks4nW0rPCXXnZYJqpzUkyiDMPjmVWfjGmIiYlWShAqIvL1Mj4bhLGjMch08+m/o8W2VHVhB/ixogwD+sCVzRxgpOEN26UCJxXp0QAHvZCrVY8bk9qXXKO5l2OVREJh6QsQZtYaP4sLwYJbi0Rh6ZqOX9PmJVRjIR68od00fA2o5KG6THG38GtpWhTwqmYa7nstE5ab7o1FBI3Y8h86hz+gjIsUxwMEZiSwK8j982fAKyjVgppR4rch8+Cv9hYivZtVLKWg== 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=9IFOo/T6q/eD9kyJaPyChU2Jr602vQ+io7ui8mF32h8=; b=EH17WPFMXDztMWC/Zrmv8tOYuwdiDA0acZBJW8WFfRLvhijknCAnXKLDCVXCNj2ICdop1w4tEs9oKEzTLQPxMHQogZHM8ty5EHSouQA2v5zOHlf51X4Gs+/7R6Wq92fvTRPnLdpweWPuuniDtrxsLgtX9d/JkaAGMrT1Yl3GZMs= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 29/33] nbd/client-connection: add option for non-blocking connection attempt Date: Fri, 16 Apr 2021 11:09:07 +0300 Message-Id: <20210416080911.83197-30-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: b771953d-7f21-4429-b885-08d900af0ba8 X-MS-TrafficTypeDiagnostic: AM6PR08MB5029: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:883; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KxzLYc0miyBx6P1ye3IHtZKvHochC2615q5OUdeK0tD0OtUlYOVLoVA41wtnqYuEPNpL789qrYAwVbWfwR1Duu/PvKvUL7I/ObCl+RJ6KmhF0Cs3hUW9LIDAMqug2MPioiBOclv+is3M3cO35N2a3Bz6AajA0pVxJC8sv1FBBa9TPpeWUZ8TdyvX2h4mPUa3+Rk8W/vbY0SQxvf0RolQCfOOawIBcj+2k3OZMBjBCtpKrbb04U2LV12Vd+YQNbZvCY8zXze9UrFkRnEswkS4LQtn0EOled1XzEKCrnEac2EUr/TwmJN2hkq6IpinXA64WvmYsPH9zN0qYe1BCuI0s53cyPdyTRvCCtuwymOxtVpJtEpsrsr506QjmNI+EjrolvEBkoJ6tx8wpRN7iye7ydF6Rbs8443N4hk5RTTzIiDWfYAhCDtYveqnIpa5ctI7ZzEZZXCVdYcPS+V3p8FswDkRULHlH97H3v8CPbkCn5pO+BA/RxhXq564L/YeCStBoNMuBF2biQCFIyHY7OXEhgE07wuMvvQSW8l1uu3H2GRIB195znzKsEBQRd46ar/wjbuczROcfElnsNVijrmhgth22xkXIc89hmPiqWq3g//pbWyzFiVJof9GzrCke8GRk8cGnMsRGK+UeD9EFN7Bj69ED6JPjs0LjuB9rEtVIjA092q1HCb3GIqZ/3EtKyNM 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)(346002)(366004)(396003)(376002)(39840400004)(86362001)(956004)(69590400012)(6506007)(478600001)(8676002)(36756003)(6916009)(5660300002)(8936002)(4326008)(16526019)(107886003)(26005)(186003)(52116002)(316002)(2616005)(66476007)(66556008)(6512007)(38100700002)(1076003)(83380400001)(38350700002)(2906002)(66946007)(6486002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?F8s1dH33iur7gOvCPK+/ZTeBOSNL+nyPlILbm3nNSB5fkeJVoASS3wjkSdJF?= =?us-ascii?Q?PhmEWSr4S0kJfvxX/CxDDAoWYFQ+ROiMciuukKqJDv4/OVIRq+VQUXGDkXBH?= =?us-ascii?Q?Cw7pSEgBSz7TCr3XODHSospVnEB5ufB5eDrb8U5ReATffjkuXA0d7kGdBHP/?= =?us-ascii?Q?/cmp7K/It0tjGiKI7XEeXusOAVOrNHU9IM7YdENPGSfRXKOrmEpXcDNMuvdT?= =?us-ascii?Q?HuLe717ZqRbZgw7URlDN1cF0ECOS0d0gLcxR/NT973Cwkr6Y7HNjg0gUC0jQ?= =?us-ascii?Q?8J4CZtBCu1IrTLuBs5Zk3n4GmgjdXeUjNCkyeFrjojku9QjIgXrKAr76y01b?= =?us-ascii?Q?hvwDoFWik2Yh2fvrSisE1DUIv3emlqYtwhttybFHlmloOy+l+hV1vNF7YPCi?= =?us-ascii?Q?EBDDxtAQjQvjQNoROr1D4zza7SwjIuKU6w2jeWFKKRXisbyY2rUsVPHCjPTh?= =?us-ascii?Q?yFpQWiaZLYA59kaiYZrfWKszjrj/g1zrCkS+0dBokoqBLGitDj0nHXVzupZ7?= =?us-ascii?Q?voCYlKWo547J8HgyPManu4XL6Gm4GwzbuRMXXiBvqviruLRqEBAiRA86O6Cf?= =?us-ascii?Q?jbHa29/sGlPNrOfg4Lu6T5H0vanHXewoWDu40/rGpMKyIOcGmqUjg+ClboqO?= =?us-ascii?Q?dbKrjPX2lsDilmMxasRrHm8kHbyQCf7yR1yRZw8d3PWw6XnVUT5ddMDNomZv?= =?us-ascii?Q?0R3w5V4UCfNldjJXgYPSdf7jacUCnYFOZv/gjVYRMnTufiA6Oc+NBoiLxdYz?= =?us-ascii?Q?RxNEvjZe3e8m2lm+/tkbKKb53p0/oIATh+IxGYRrtw/JT3b+4Nj7LTd61r4S?= =?us-ascii?Q?tuI+wJNOTFUF6i1zHPBUjpxHqAU+pkQnyBoFO/bm9txaCa5kW6Tk5kmh/hqq?= =?us-ascii?Q?R299AxczEponGZQbZNktPtXvSrwTkmzWnlLRRS6i6zCDRPX70vPJBjdCqKVj?= =?us-ascii?Q?gN3RS0ho0xAIOZLqyQSdKXIq50RhBAEOtBVS+CoSvuhevKeqLK5ClOoNZyzz?= =?us-ascii?Q?Ov/ibV24C3+WLdwmbgpPw9CLtSgFuEmFJhvw8DATasqxq9oEhl61jIxHDcKy?= =?us-ascii?Q?y5XEAMBRYbjR3T5Np6ttExBRHXTv6Rewi0FvGYsii3EuLza+AcPkeAwoFuip?= =?us-ascii?Q?ES/mWVawXHsPL3kyuYGdQV7eAabM8opUGcnaztBfwls9KW1nEfluHLWGsHJV?= =?us-ascii?Q?B0P8E6e3aj0Yd6c8QJLcdwmFYGTuN8UCeRQcGH8d7+wsfoxcgm4q2a/KHf49?= =?us-ascii?Q?EA5ArzDd6xAQBsvgq92IARdDI4izj8vCoHioq2xHd6gmKKlJ6wrlFQkDS6AQ?= =?us-ascii?Q?TDc0FKN03N2U9ePMh+8c6WXB?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: b771953d-7f21-4429-b885-08d900af0ba8 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:10:06.6182 (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: k6HfIVoULX/gJZOH6M4IcPbaPUNNkmrzswSlJ/D3uk7npDQYAe8zZya7sdntZVMOs/83TUvT2m1Tnt35BJTHCpnPYIhJK3g9c03um3oylZo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB5029 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.21.98; envelope-from=vsementsov@virtuozzo.com; helo=EUR05-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=unavailable 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+importer=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 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 00bf08bade..6d5a807482 100644 --- a/include/block/nbd.h +++ b/include/block/nbd.h @@ -421,7 +421,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 59971bfba8..863d950abd 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -368,7 +368,7 @@ static int nbd_co_do_establish_connection(BlockDriverSt= ate *bs, Error **errp) =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 00efff293f..8914de7b94 100644 --- a/nbd/client-connection.c +++ b/nbd/client-connection.c @@ -251,6 +251,8 @@ void nbd_client_connection_release(NBDClientConnection = *conn) * result, just return it now * otherwise if thread is not running, start a thread and wait for compl= etion * + * 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 @@ -259,7 +261,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; @@ -299,6 +301,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 Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618562005; cv=pass; d=zohomail.com; s=zohoarc; b=eWmx2rqsI9EY5/lbCzJnLb2ERhGZhBRq2hBef7XzZCskBGOZ1zHwmGETHstved+O5dDgmAjl2426cIhmUXk/3ixtLXuouQ1WCZyLJ7fIUnOG4D1edqY6XgumGM1L+cX4fS5CNjYMGN6lF9GGd7H39GtSqMzahT2KtI9ioI59bxs= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618562005; 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=GTHprQmBIm8sfBADwHl2hG4xPP4x6aAUloBYLkAbtMA=; b=fO9aet5XEnDX+I/DNVJDCOup0421rowQmuicfwWdQ/cNgWwdqZHE9Fxk90AYyJKbDZUvVFDY91rObhttI7irj+W93SyhnYWP28sWSlqlQvQMq5P5JsqI/njerfhp+J3RSuZdDb7hn5FlmQx9XvY4mlOEL34D+8sKrVeDpwsmi88= 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+importer=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 16185620059041004.2304223822748; Fri, 16 Apr 2021 01:33:25 -0700 (PDT) Received: from localhost ([::1]:51950 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJum-0006E5-II for importer@patchew.org; Fri, 16 Apr 2021 04:33:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58124) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJYa-0001tz-Rr; Fri, 16 Apr 2021 04:10:29 -0400 Received: from mail-vi1eur05on2098.outbound.protection.outlook.com ([40.107.21.98]:63928 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 1lXJYV-0008Ex-M8; Fri, 16 Apr 2021 04:10:28 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB5029.eurprd08.prod.outlook.com (2603:10a6:20b:e7::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.18; Fri, 16 Apr 2021 08:10:08 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:10:08 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:10:06 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UMreaGx/sumWmqFV0WF5wAOwcSrHZzmJ95O66QRkIWJ+BV9iLjNWSJJjFVSqveG0FXP2VbrSjOSoFhlGWmXHaosaT6TREb+5GOIFTPlWM+R5XXmQ5v5gOLhgECfCaWV7jvfhhcF6GkhCZ2I+i+/jXxeLPseth+tB1fNL0V7fv8l7wMh3IAvuCVhe0olTWSHMXXSMH9y23LuAccUfVHVcEkRKDHCt7yVjMv8IMkSUq3IX3UmI6+DC38WvAQs/kh5dq9n5zP4THaGXEdAsYU1k6y2bUqorgl4bQwy2PMkag5bS/8mNzBfob7te8jmsdfAMXFtVelPvWX1Ou5Ybs7vgYg== 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=GTHprQmBIm8sfBADwHl2hG4xPP4x6aAUloBYLkAbtMA=; b=EdrYLL+dar52GvwI1548hGtz5ho869I0hqNzbY2Qkilj4mMsgEidsv0+FP/U3XFTrWrcNNt0IHM3d/77JS55q5UEsVbgXsxTvts3nqyeEQJTg7VzBpUrOJjR/xUqGLpl8+P2wdftlNMBt8uG40S70K0QrvsrITUFpu73fjL8Q5tYqSZHkXAdu/tyUEots6RX3jxeNHPqHIahypOWHDn3enSDPoYXv3wGFOWeNi6wa/yYq4DT3eJjLCo2oPJNMLywoX07jaIgv1GnQMyDRo3KeC2GCkaLEZzZxzXmUQ+mw8H0A1r14DL5DSPCczt/SdBtMNyFQ++8FI0GGeohL0p+Ow== 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=GTHprQmBIm8sfBADwHl2hG4xPP4x6aAUloBYLkAbtMA=; b=mOAb+Vips3wX2itt4QbcTGebbzChPtZFYs/nuREJhalLZayJS44734ejz88zx3EGrCrD8ZlQyDyvgOWc/JD82pNolfWIGXZU6ITKUUsw9sLdarlKZ48aPQL8rtpyvqOwYrINBc65F5ni1DXRurBC2O4Isaavb6b2ZyYibtcnTjE= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 30/33] block/nbd: reuse nbd_co_do_establish_connection() in nbd_open() Date: Fri, 16 Apr 2021 11:09:08 +0300 Message-Id: <20210416080911.83197-31-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: 9ea9e908-331e-44ee-0797-08d900af0c77 X-MS-TrafficTypeDiagnostic: AM6PR08MB5029: 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: YfIYD52YPy1XnkTH7OaHwndPzVMfnEXC8G8Z9Qsmj2PW0NmYDIjvDCOb0kRqkE2niy2p24o+/28eRQdwju1fOcA6SwMs7VlLXNjfmmfhuNIbpwAmMpw1BokXpfMMZjZvCTtZZWYSJhcesPMdeU8RvmMiP+oIy+tvRN8X+zXN+Ok09BluZP/bl2kcX0xu46D2Spr9IjASELhv8ClN4Hq1+n12H+gpuZ25UJa4TEn1yRwG2MYO/o21H7vfAG33ZLjuepSa5UJNpvdX/Q2DbEEhGpCOJy9gqU0v21kB7nTBTmadVKIuclvEHhx1yvt89HCavPqpaknbdeCShtsIQcz+zYY2M1cB4PhJX+IJeSBhNyshf2lH/+qdjdMb2aIakJA3WdAw/E4/HC3EsAOhNrGrcGJgii5rdJ6jKKmR0C9r72rhuYE/YxO0wIdIT7LgyCE18yo0fSE5JK/hllkEHPzCsWmn8zF7cuPLeazONPMVaSkCQSilLSCLP0HjVEQ41WaPI8RtJBu6AkSzXuO0nqFVed0yivcgxSyQc6NDIURW02Hn9hz9vhgmcrHlXhMQniblOpGMeXzwbAH2ZhFlyX6sbmCSOnka2ab+SIFLfjgOdazMPLphctWfENnMa0NhdlTf56/aDVZ32hlnLhqFN+WPfxKGNnsDRvoKfCTTLRb4zk4K6iWPrmR/b4nv/EGHnats 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)(346002)(366004)(396003)(376002)(39840400004)(86362001)(956004)(69590400012)(6506007)(478600001)(8676002)(36756003)(6916009)(5660300002)(8936002)(4326008)(16526019)(107886003)(26005)(186003)(52116002)(316002)(2616005)(66476007)(66556008)(6512007)(38100700002)(1076003)(83380400001)(38350700002)(2906002)(66946007)(6486002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?kdTPP6k8+ccgY2uJy764BzgkRMgtcgBiWJFcKSrxrqhehdFrMPzutcvkBMJI?= =?us-ascii?Q?TofMXQxNXDgU7JdMELFmfnyPxkLRA9EX+lwGAvsR0c+j9qHKhIZfXreC7MgX?= =?us-ascii?Q?2SyXf1Ezv8MtVtyuI/A0nj0pKnJEC6GedubkaXEmmiW2jtahaudiKHEF8s0+?= =?us-ascii?Q?mTwulaRB+Vn4uWVSTz64QSSC27VRswOx0gmQXbt5OeB4EzsdrQI6akiG/A+g?= =?us-ascii?Q?IcXo0QQ7zlRqHrQoSaFa8kTMtSA5sy7JNHNoyAkyCyzRy8BoEp2emIUWc6fn?= =?us-ascii?Q?iUE71IvWvzr5YiBGsQXK7MSMqRqPzEHuJlpaxz6FjZ/bvkw1la7bymEyyqs+?= =?us-ascii?Q?FFx6XDmg/oOMggq8Ik679ec0i/Uj3qIOT11mjBigK+qJrlJ+wh93cib6nEXH?= =?us-ascii?Q?seAySe8+KLOvK8Qy7UoAemyWle5n4GRcdJQGzzXMKWbOoI0DJr055DfaAGSA?= =?us-ascii?Q?zAsfxl2v+dDqkY6z6tJ+7NHfPjfUa3w0V9lgx9GI3OKz49UWzYQLzkaDVd7c?= =?us-ascii?Q?sI/S3lG7z8bRh4pJNdwT0aTlKD5M6K77hHnG980Y8r6uRmOhNqebdHTDzosv?= =?us-ascii?Q?+UiBJGdX+IWEK/f/c83odgsq3XzVTcUfNhG1+tL+xsgcx7M9rPVQfcENdIMe?= =?us-ascii?Q?PYykbgjOQl1NBAyOguZFedy7PiHmCeRO08FyGJ9BW8L8iQOUZPVu73PiI6n5?= =?us-ascii?Q?6JjCDf+mqNp0nMHcZTfgbA9bwknLgtaU8IbHcQh1CIytC9xxHtBLGZohyMqI?= =?us-ascii?Q?CEykqQN7ugtB8J3G7hBeaVfUb65Y6D8nyH9rZnt9Pn8Hpg71mbLgZl97Bt2V?= =?us-ascii?Q?WX8XNzR78MmvbR+z3tgEzchPfSVcAjL115UOl4TbiSxk0wb75Crfv8bjAY8J?= =?us-ascii?Q?zJW6mFPFaOWuDiSWC45xGbe/QxFENCSJlIZcrxQrFEHDcGwtRbtFO21qMZSx?= =?us-ascii?Q?E4TRn04RjoUOnD6qDcyOMi7NPw5Iz87HMzyYi9JotTckyLOVgxdDAOtbKB9l?= =?us-ascii?Q?vgDwEePNdPtpqdH3UZ3ofQxhwBy9xC7OdImQBg9mRhQWHfXdNiXCQZUV1OU6?= =?us-ascii?Q?l+zy5qGbQ+9/I/1n+dQVhdgvmAb+DZr5xWrWs+E5eI/zhFJ9tOoy4Fj5r0YV?= =?us-ascii?Q?KrYe2HKTXLXQ2Cc+Kps3bGP6Or2690rYLnNqJ0gYu0e2yD2UuxuzGUzD498m?= =?us-ascii?Q?Myi0bjMxhK95Egt243osqtwdiKevKzJfJ12jSSyvPUl3qYB+nfpais3VKa6V?= =?us-ascii?Q?gzJL1ua3tzeS5ubscWy87MLuFWgZgy7w4LSP9x9EFFo6SZfmoA37RjbpeVMA?= =?us-ascii?Q?mPeZ8gFahYMaURehe/bWLz89?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9ea9e908-331e-44ee-0797-08d900af0c77 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:10:07.9732 (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: TGtXXBlKc37HWxSvTxcCX+RZtwwX0L6B9SYcvzCc1FpaQ2EYh1s6pE3HNkqs0iU8TWP3OUfkru73inMhPyolZoQR08SB2+WAhF+gyB6X8YA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB5029 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.21.98; envelope-from=vsementsov@virtuozzo.com; helo=EUR05-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+importer=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 | 101 ++------------------------------------------- 2 files changed, 10 insertions(+), 97 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 863d950abd..3b31941a83 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 "monitor/monitor.h" =20 @@ -101,11 +102,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) @@ -361,7 +357,7 @@ static int nbd_handle_updated_info(BlockDriverState *bs= , Error **errp) return 0; } =20 -static int nbd_co_do_establish_connection(BlockDriverState *bs, Error **er= rp) +int nbd_co_do_establish_connection(BlockDriverState *bs, Error **errp) { BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; int ret; @@ -1577,83 +1573,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 @@ -2037,7 +1956,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); @@ -2056,22 +1974,11 @@ static int nbd_open(BlockDriverState *bs, QDict *op= tions, int flags, s->x_dirty_bitmap, s->tlscreds, monitor_cur()); =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 Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618562530; cv=pass; d=zohomail.com; s=zohoarc; b=SsemkXPwAa6RdvbK8LvRBQKFg3PNiqkgFxRPkLHkePiBs7/0THvSwXhWiSk8eI6/FIiws1WrQYPFEzgFGw8WSPg0J3UgNg2gmXXq9WRSXlwAKkxhpijH1sIf2FccBmBM1j5yqdZVD6vnA3ojtkeZW7vo383qcTbtc302BdvaG/o= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618562530; 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=2IAJOjF/zZfIs7xBExQgmCFhED9fjabh/b4/XmMrE6s=; b=D8bjj2uop1PxjlysDPD1Xqw+4BKg/VPvjomfx9CYbYbIcrIlnjOolzuS2STEjj44cvIlUh44VIsfGRuNTCLNtVYVyqDxWhd03ZZkAa/LB06ZzF6ml/QsQo5Q/kLE28Yunh+pxU+y+k/Fqm6cg2MNRHJYmmedFCymak605DoTud0= 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+importer=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 161856253050751.903603168230575; Fri, 16 Apr 2021 01:42:10 -0700 (PDT) Received: from localhost ([::1]:41132 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXK3F-00055o-Ae for importer@patchew.org; Fri, 16 Apr 2021 04:42:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58152) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJYd-0001xo-J2; Fri, 16 Apr 2021 04:10:35 -0400 Received: from mail-vi1eur05on2098.outbound.protection.outlook.com ([40.107.21.98]:63928 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 1lXJYb-0008Ex-IR; Fri, 16 Apr 2021 04:10:31 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB5029.eurprd08.prod.outlook.com (2603:10a6:20b:e7::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.18; Fri, 16 Apr 2021 08:10:09 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:10:09 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:10:08 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=g2VzyzSNvL+WAP8nYy3m2jMBnQzxmQ/qUebzPCT+TYV3EvB2xSznXSe9NkjGRgrj/dj2eo+XqiQzjLPQTUpMnuhpzK+FaamjB+joFaulzkl92g7g1UZ7EsEriFaW6FJ9jMZ3GVaolNDTB3ICDcACAB/84tHLTlCKQriQSZriJ5MueVqUrrNNKzaMXLXwxGqf82+YecYIz7hF4wU0tKAtYj35pnNC85Co1KLHavbt+XMXj6/uVcEmdF9V18HYjgC8JBHYy2r7WYul8Qm36E79G8QTivvuIvKztGCR7nqIfWKbFc8qimj7aOiMgE3nXy+/gaDkAJEcBqiVu4uzS08DYQ== 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=2IAJOjF/zZfIs7xBExQgmCFhED9fjabh/b4/XmMrE6s=; b=c/VgHN1jHVTDGLVpDskpyIZoOwO6ZXAVBlGFQGmXM8xCiuuPq6xv+kx1bMV7v0vYHnTeoubMb/W/vUms8nd83w6yCLBzH622SRFTCIkXeAaQpPngsUYbfwzN8Dq8dZc9SYeYBmMWKSblVPt91n9ktzTw4Q/DxrRYNeq0ZcPucHT/DoRcR2JVG5abdDNuy8ErOMgv0Hm1l9W2f0XT9l3PrcGRvtL7lAPB6IbMKTzsoAAoUdgqBj7jglXYaKP0/RoC4A1kukZItz7TXyOnUD0MT/Jum312O2sU+K9T04NJk5MJxbYQzh8ZqSUsfTa7SsqMpGHHXuManFlhJfzZhDzpsg== 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=2IAJOjF/zZfIs7xBExQgmCFhED9fjabh/b4/XmMrE6s=; b=nDwpw0J1PkBdvkXGIIJ5rL51bvpItS3NC+U7pa5dhAY1E2tW9JE0VtKk4k3TcKeeVjTYDCIvek+AvMPT34/BP3jMPZ6cWG5aGWBJnMdJgwRCNsBVRV9tyjpZrgubfnCalwUKZcaVhoJ889f/0kzOkTKDDmGVC88P/3XMmbvJMLk= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 31/33] block/nbd: add nbd_clinent_connected() helper Date: Fri, 16 Apr 2021 11:09:09 +0300 Message-Id: <20210416080911.83197-32-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: b95e0027-a62c-4673-15a2-08d900af0d41 X-MS-TrafficTypeDiagnostic: AM6PR08MB5029: 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: W+cFlwoAHm4SsouOZygK1mlpUQJS301PPtMk4TYm/PLVIDN3ipw7SbxAyh7QEjxVVTdCXOSwXNGVOVHjoaOYEuak1NsIivg9768keK4wXWPLxitAynG+9DnZiSsSW0KFNau9GZUhzRvZiXO3oT4y4E8xFTcOiJFKXDsVe1Sor1MathZFBN1eBqQPG13jPU3VqCc0VGfzA2LNGUoIl2BCEpOMQy2V9xybswrkAxC29l0scqkJR0w9a7YGrnEozLTR9J2Tg6/OUvpTxW5LZnyLKo4SD4VndVTl5NWjxLeeK5OmSuIuW9sn7Wj7+F909U/NUpUvgYwhvMfjA25/fMa5Jb4/pMFsSfkvbMXe2oNEQd5KMUwHdqXT14CUPc4qPHLADltt/NzACdz4LLiVbE8Crh7iQhHxqPECrLMlz0HWJX6zuCKFuOtR34gsljIJJDyuZyktBagjSkGxU31gDEmI/2cEgfFMffnLw3F8dhO0Off2iLXgKZlPe4+57PgN1WG3dnQ2pbQb+h48Fr1DSNjdlPMbifNPJn4L35LMzJVQnjSbKvPAVFY8nDqA9CRfbi03adqWIfMsFn95SOSpYqy7eRGsJ4s2QdSB6770ZxwkSOU200VuyD6Vw4hlSeSB0qBng86N91OOSzyYn7C+HqIUpJE6hHC7vugNvintHJYO6KaGrn2J0v5kszLwC1zwyGli 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)(346002)(366004)(396003)(376002)(39840400004)(86362001)(956004)(69590400012)(6506007)(478600001)(8676002)(36756003)(6916009)(5660300002)(8936002)(4326008)(16526019)(107886003)(26005)(186003)(52116002)(316002)(2616005)(66476007)(66556008)(6512007)(38100700002)(1076003)(83380400001)(38350700002)(2906002)(66946007)(6486002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?NBFT2fOAl6z7PhbuaDUElFHwyxVa+VHw8/SG0z1pyCaR6H+Ht7s2lFGjHpOh?= =?us-ascii?Q?MtAcAWyFxmMZElnE+i/pqTnMnxihDeYaLFVZm6hoKL5yvv91i8OkB3Ih0KGB?= =?us-ascii?Q?KXpGjklOuv3uuI36n3ySgK6SDS2TeOnylEnyiWBfgpED7BFN0FB2qrUrKIE9?= =?us-ascii?Q?fPEyoLwtpKrOySmMsfehm1gEO1XT1/JJO5f03Tru8N8V6ryUI89pc9ixLA+S?= =?us-ascii?Q?l4E6TsbMLAmh6Q49nmVVq6FL/E3ZeDUTJifhS0U2zSJ6nZnQzTPB+abfGbL3?= =?us-ascii?Q?vvNLrvG4kfWKQ6GRe++H5WLjUjAMwCxtAMhw7SutjG22sv4oumcHB5nR3mYj?= =?us-ascii?Q?GXjuOC3YOonuULzv9PJtpzRpXen+sHXPPmqrU9qSu5CMId4g7LLO93dRor7p?= =?us-ascii?Q?FR5JVzqiNuwDt5hKZn5VC54Qi/lNWNlaXex3LLGNkcHAI1WDkW+jRQlW2kM3?= =?us-ascii?Q?A5UM92NJmDGBwpRZj6NRScAByQ8W/9D4Vo2oFSnmj5gVM435TVBYqrEaPjJy?= =?us-ascii?Q?URaDW1nA5un2uH/6K2VndU+vY3G2zR6OPJ0ZYIfVRr6KQyPWRLA/39h3GIiV?= =?us-ascii?Q?b7kH97NYhsYfuZaVFUWCu0hMIDmuskNgESXw5v2KJg35yZ3vQlOrasP6amkF?= =?us-ascii?Q?Psb8Z6jTgQJZmg88KeM33fl0Oq5EuuXyduhybFsa9Ac3S0HMukSlQTauzkff?= =?us-ascii?Q?bq9oyiQFehZXVH+AjQNm9fanusmieESN+33/ocO6wiU1lxL3gYFmpftfoAdm?= =?us-ascii?Q?CArcR/v2k24U7cK4/x3DzGgC5CfmcG8esr6HNrzSgylUpm1NvQSG9QP8to9C?= =?us-ascii?Q?Y/SLqsHgQ3rqQhqCRBM6TV6QOQROF1zicRBfnb0RQVY0S+QjD3P3xg1gDWQl?= =?us-ascii?Q?0lfmsXln+xrbE8dMtMpzcIGgn1V5B6W+Y1Puvd4K5VY5VATcA+KRdBsB8iig?= =?us-ascii?Q?A/gqjqGXeFQJf/LoZjFUlYHiOjVGvNS4D82NeOT7W/++AjJJXBzbuFqwYdkK?= =?us-ascii?Q?wQJLmJfNVhpTc00TIumWYMdvl1vvOi7wfF3Pmm7EQHg1p2WOjmIHpn57UI33?= =?us-ascii?Q?Gxi7nlzESV6Iku8pZZNslSvynXBJYQF5heF8ca2/4RBw6wHk1SZwwuHUF4uh?= =?us-ascii?Q?D7+iNAZPWFVUOM/YXfR9BFJqmRf4eMUX4Qr7fD9EYXRLBP2gPJxlcOohCY+7?= =?us-ascii?Q?RinK46PIJY6va77QuwvuM7csCiVqbtJFsAdykS4kBfNtwBih+OWDmaLk7ai3?= =?us-ascii?Q?jxQpahrQAgtweF3S1SQcDzXl3OE/tJ+mFjepNM0IWIy2onXkJooxBCLoWlPJ?= =?us-ascii?Q?Qu5aQw8/fjqHi4ZrIEcD7m5d?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: b95e0027-a62c-4673-15a2-08d900af0d41 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:10:09.3591 (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: C/7p8BcHhizhodlbm22j9H6oStJTE71fN733WkYQ43WkU9vhrD/pG130Tix2vAsIfPMOlnu/eFlBFM2pv3TDrckxNSU0XxSH11U7yVbNeFQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB5029 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.21.98; envelope-from=vsementsov@virtuozzo.com; helo=EUR05-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+importer=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 3b31941a83..6cc563e13d 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -124,15 +124,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; @@ -230,7 +235,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 @@ -503,7 +508,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 @@ -582,7 +587,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; } @@ -609,8 +614,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_clinet_connected(s) && rc >=3D 0) { if (qio_channel_writev_all(s->ioc, qiov->iov, qiov->niov, NULL) < 0) { rc =3D -EIO; @@ -935,7 +939,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; } @@ -1094,7 +1098,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; @@ -1119,8 +1123,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 Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618562106; cv=pass; d=zohomail.com; s=zohoarc; b=ha35r1Dv3ACm9HtIkCc8gQMr1EDKF00rJEeGfgib+vYhASDrQ5hHKijpVvZHQACbzhQUCExQgzN2OPlXWCBAkYT3QuiUTeuVsCGU9MNltj7gzfTz8aIfhkiZ29dM8vSw/f049pVM+JZeOGCUajkmalt/eD4fnWTfQ+bnVRkdwHg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618562106; 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=iFvJYRTaatCxJxm5kT6oTf9PF1DMXnr6fG0CjSjJU0g=; b=WLYAtm1xFc9fLLKtlY2Gv7T2f0iiTbFu4RjOJMAExBEbkxfjstKi+AHwz4zi8neW5wuzX5A8Px9qjZSu2Rp+4v4HYkSM4a2EPeqqOJOFyxalpCe3MHAygAqurucEmPsnJbpblPOMJLz4CDkcuf68cviAwg54a83aoCAg+1NFiOo= 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+importer=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 1618562106467852.1637031285296; Fri, 16 Apr 2021 01:35:06 -0700 (PDT) Received: from localhost ([::1]:56238 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJwP-0007xr-DE for importer@patchew.org; Fri, 16 Apr 2021 04:35:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58130) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJYb-0001up-UX; Fri, 16 Apr 2021 04:10:30 -0400 Received: from mail-eopbgr20116.outbound.protection.outlook.com ([40.107.2.116]:15815 helo=EUR02-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 1lXJYQ-0008Dj-Cw; Fri, 16 Apr 2021 04:10:29 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB5909.eurprd08.prod.outlook.com (2603:10a6:20b:297::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16; Fri, 16 Apr 2021 08:10:10 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:10:10 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:10:09 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=c64cXQpUocz5oU46cWVJxjUNLtrq9LkdW2kzSvuXMfyhRSGqNl/NkPAnrS4c3V3wBmqBnGVKnRckAikb6RAUKJmFUoNUbVsOkZYkvtzKmkbsMH/odKac3S04yN+97NMs6Jchofi4BXEaUL1k/1tTrvR7GRejc0PNlnYPrO94gFIMN0Wq3tQnDTrkbG5fMPoxNnVZotlhvsUfKJxbV9whg3FNG6SB9PTzvv77Hp7bgcgt9iPyfzfhqlIUbVG2puv7cxgQ54F/AviaEOmVpSnB2kUrL9uaU5p5yflBIQtXG6P6D2v2eH7xRdI/MzdwXlqnQOYNX4HzfFwebu7o53SxFg== 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=iFvJYRTaatCxJxm5kT6oTf9PF1DMXnr6fG0CjSjJU0g=; b=L1peXlLgGPhege2+k3KMGmMAzGO6VY0zgfR7eH4ouhthGYCLXV3TEpHZyx3WTXh1R2/14+XaNS1s2BWkd1PTynukV0yJMW4Te5qHpYSb4aT75nD0W4xxK+IiaFpyTNGiwTgvKb/TatubkhI2TtSsYd7MuCsEKaifS00bor30p/PGUMAT7ruPCIIJ8dYdC9k5NohsysjUAnaqcPdDH99jWL9/gp+vF7FkTs7DhGE3P1kT2xs5TSrMXqzAV66J5usmPckcMYfb8dUAVo290ePqaUk+eo06pV5G7JJmLRz02B54/0EHxdIslioZvVpL9sbQpbrrSDyUmsmplTGDsjBjOg== 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=iFvJYRTaatCxJxm5kT6oTf9PF1DMXnr6fG0CjSjJU0g=; b=OWsH310pvSQqzUnyXG6vM7YIEiOBw4KVs//bs1fUxHJVTRGUu7lSHxYuEAv3uPDVZVQEZ3APxhxTA50hMqCJa9ycnOqz3O7+0MWyK6lFV22yFjfIO3l5ztJj9xDuN5qjn+7R+LA1eNVXbRzFZavO2/30PMoXi+i95vIVnhDGJuU= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 32/33] block/nbd: safer transition to receiving request Date: Fri, 16 Apr 2021 11:09:10 +0300 Message-Id: <20210416080911.83197-33-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: ef38c525-8e66-4932-54e9-08d900af0e1a X-MS-TrafficTypeDiagnostic: AS8PR08MB5909: 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: tYAp+5y8PV/ZJZDHcMRnpDNbh26uIB6moV4rM5RChlcs5TbhGMwfBmTEVQsSNqR2cAp4oMAesfQExTax5kgJzbukFMpy9Psj367TASM6wAfDqFZEAXO0Ka64PtFAIM9mBkbkgvLIU/3bBl3wCRZYpiPNj3fpc3R2xfJ7kJ5zNT4no71wHOcg0hIX9QJg3KisAAiwxzsj045JhWzU8dYIBIleQ6vJJW7ngqzW9af9l9QEG8PRICQaCORKQ2GGfidlZ336G5ywPd4VeBy0YrdVWnxqRJHFEm3YOGn7eyeQ7DTIBqDXNfhgFvO6V1/yVHt0khpKn3Rs/9cdEYXW+wQIimZoiGA/Inl3elezbkfjeFsOJptUsrlFd+OziuOAe/KQWJg+oPNrbMegT0Ws7AYuYlyfJCyB+Xd2Uo8X0lDdNVtGFCUhFdkcQtTrGTpbZLqNBmDgxZmsa3JtMkWlYRJHM7IxdCdDNjq1uL0qSrbOmnbhvlsp6L4wmZyU75YWDpcZMYq4Lsy5mc6sunfaBBQfbPT3LYvoQxYnLX5fvTIO/Lxlvdx1zx/Wo/4UP1CwUiNd/aYmHngjP5ltrlboBF6i2/3yN2Aoo5oDixn1oKBowUQUkq0zBM+CPPVGnKh1RRBouq79nUKApOdY7WVn9zgINePplmXotDqUJL+I3hDN5e2oQ9bqWltEAFr9Pn2/0lPv 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)(366004)(396003)(376002)(346002)(136003)(39840400004)(86362001)(2616005)(66476007)(1076003)(956004)(52116002)(6486002)(107886003)(6506007)(4326008)(6512007)(16526019)(8676002)(8936002)(6916009)(66556008)(66946007)(6666004)(186003)(69590400012)(478600001)(5660300002)(83380400001)(36756003)(38100700002)(2906002)(26005)(38350700002)(316002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?IRhLo2RDeJsMxNLpmxXQDpzyGXNUGNpRfz2RZybH0sY1BjwzXLbZCqS4EZTo?= =?us-ascii?Q?Hk6b/fVH8hmkpG+j1xRLRG7r2O+dQHa+OGFZr3HxA2AAl72FEEyjHBltuqIz?= =?us-ascii?Q?YzflooDLKuB4OU7u0OtZcyGphZ0Gobm32eNb5nCFVgZDLAM0I28sybSo7kPi?= =?us-ascii?Q?oLgmu1EMRoqiEHke+g7viTjm4uaIJAjIIhNOA145MBXCzeRojW5hieTAtVlt?= =?us-ascii?Q?buS5LSYiv8w5e0HuYeLG+8fpgsfp8/piYbG7MzOdNKzZ9S63lKuOwSPA7hNX?= =?us-ascii?Q?gag5ImXowX/1V7NUZSP9kyBIUaneyhKaErlPi1u2jkacKIIL2nEYDq9k6bL2?= =?us-ascii?Q?K1JLUkuj0FdwTsJrJ7R6VlVCACCkqSN8fod/Sz9wtvWSYQ0hEPiyzTMKik96?= =?us-ascii?Q?2jJ8CICHUYGv6WnHXdPkwkntuiDYHOTOcR6/X8sdqWV5jkvFzNPIM5AWg9+Z?= =?us-ascii?Q?rGiEVKBHE654t1kXPkmqAfUAGXuWb4Whsc5S/SURvAdAqLmv15Y15eu2Wqsh?= =?us-ascii?Q?67VYhszaN4/CJob8GbiNRUwGn9YOvAJbC16OGZ7EgULpUbcraujtoE3IC2ZS?= =?us-ascii?Q?U8qPCPFm4NL+OjAEQ0R55gywoB4yha/Uzxe9egXTcqxeW4iWyNwWCATkJe1S?= =?us-ascii?Q?mluSEZgJ1Yn60/WExn6ycdwyxRfqVgdDL3rwVkElkkpbd+dIIkHakutP63PW?= =?us-ascii?Q?1WhsrUcDR0zsEGcYv/Jx877yPN2OaP7+vTngKbjtxhnNhKcE6qd1oQDWnG5c?= =?us-ascii?Q?GB64tG2vlfRrUeuu7/CJLmlbTwSItPfxWZZRUSFPQd0ArQrMzED+l4j4+mRD?= =?us-ascii?Q?IMn6eQ6ZvCpN8VpdisLzWlkaWzAtXfCSnBgjua8fAs/ZOlD7gK+Pd19cpuJ+?= =?us-ascii?Q?NKXeePBdzbK1Si5XlryKP8eli6DHGJdOohGWYKUiy3mYtLuU7wpHQJUNhKul?= =?us-ascii?Q?tDdvROLpmR2G4lWtxHPkBNMVuQsfa50Oq5YqVvSAqSaPXBZeplRe+Y8x7s9Z?= =?us-ascii?Q?1dIQRjKrhSTmHpldthax+ZA9GnoRQb5Lsv06FAuQyvyNsrrBLveQ4uouzZiN?= =?us-ascii?Q?1bvDoDBsnqMdV82dseDvBxps/EbEBZ8JmPzI8F20mnt6Qmq+97PJYHgwttUW?= =?us-ascii?Q?ebOSiRVrdPGQDbJKn9xBuDsqhNzzH5S495Af2JuukPrV7/QtTTtcpd2umPo1?= =?us-ascii?Q?jhG481CaaH0wkwGD8B54MXq23G4rVYhLl1EjYVmw3hH+abQuYXZavI+UNTun?= =?us-ascii?Q?Cd9On8zcay2kwYErysMVf3TRMQ3F2HC25jAc1MONTggJ4l3375LpqG84Zlt9?= =?us-ascii?Q?Ovsk7SVrtKz22KzzMXzdN+nP?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: ef38c525-8e66-4932-54e9-08d900af0e1a X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:10:10.7152 (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: SDDroiBxCbVwa4aTJdS1wvyEcfysWf/MDN3ldqRh4AD8oPJokReoji7VjAy4EmKxIvcPjKfaqfJrs2G6rbOaOBx/+AbwqoA9Qic35Sz9Wew= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB5909 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.2.116; envelope-from=vsementsov@virtuozzo.com; helo=EUR02-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+importer=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 | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index 6cc563e13d..03391bb231 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -152,6 +152,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); } } @@ -552,6 +553,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(); } @@ -614,7 +616,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 (nbd_clinet_connected(s) && 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; @@ -938,7 +940,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 From nobody Sun Feb 8 11:07:09 2026 Delivered-To: importer@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+importer=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=1618562223; cv=pass; d=zohomail.com; s=zohoarc; b=j/tJ4Dg7vkcR+rEwBqaSHbLXhDPuUGgy86aziQh+lmUq9Opl+xoaP4CqUDZWDS0vZlIkV+u9nu0GEGRjDERNZDnYR/md1I17DNKHnfTg4cj5WrZE6BvA6btrGvczUlOBgWrf0iyw1L8HZh8cwpwJ99iUGE8O7RAmZUJtYgsRXMw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618562223; 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=en60MHkSNYE2+W6o1iqgx2tZJOJ1p/0dj7QM/jN4HvU=; b=FwzL99QvR7lPTCCKAEQXcm3dUPAmQ2GM8xKcRlp7YqQI3y1DXuI5INqMJRrwFMsdQ7d2PjbobSUfCS7mbDOTzjIPzK5MehLXaCj8TnL/+4xZtUZao71ruoKQ0LRSOOUbJcuch8i0hxc+DofgVJTKotPDTitxQYe4vZr6fsG0M84= 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+importer=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 1618562223212931.3910026380021; Fri, 16 Apr 2021 01:37:03 -0700 (PDT) Received: from localhost ([::1]:32862 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXJyI-0001a5-5U for importer@patchew.org; Fri, 16 Apr 2021 04:37:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58166) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXJYh-0001yB-BY; Fri, 16 Apr 2021 04:10:39 -0400 Received: from mail-eopbgr20116.outbound.protection.outlook.com ([40.107.2.116]:15815 helo=EUR02-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 1lXJYc-0008Dj-Lk; Fri, 16 Apr 2021 04:10:34 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB5909.eurprd08.prod.outlook.com (2603:10a6:20b:297::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16; Fri, 16 Apr 2021 08:10:12 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4042.019; Fri, 16 Apr 2021 08:10:12 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Fri, 16 Apr 2021 08:10:11 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KPNQueY8B1YiIIuwuUBQFWmWC3pLFYG2CjR1XPb1Cmzk+twAh5GQDHXOkij80xLDMKeKPvQSKnGLvsBp0DAfOjjmKfOeKq8eK4KsPduux6VcM/fDdYnECHDb7A66J05THDxijOweOMWo5cR7N0AVsVj1tnaAvgZjVK7uqUFF4ep10PtgcUHWl8nLCzo+HmCaE+wMUSNkPc9zvxxpI7MswwuTQUm+waoJ1YChp+CmYGnFZrFOOKLlEgYE9UbFEhmNV/hLhE7HQcOQXYFhn3yYfjz5WreOKP3C8BySDPzUbEn8oFF4+nI0f0DZ2qHx0LrM+VgrOC18fdlHsSGKJ027yw== 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=en60MHkSNYE2+W6o1iqgx2tZJOJ1p/0dj7QM/jN4HvU=; b=chcIoWxyjiNkhA59c8YNv8iZvvCGTcVXncRsO0FFZ+L2do1RrDGJTRzV8zcslmvv8L+/ZZQgrc78/OCo9Mceg5/SNu/q0vTvVLV8mWO0kDIj5YQ3Lv6ELUdh7pBUzXV8XULKmYo5DenFkh7lKPWQ0jJCnE82kLLk5tdQhL0JhZCuXh0NtK2pc2YCJNuIopmNkApgeFBF7CIEWOlNT+5LEZw7npFkRuajpgXMTBq8MhNM2igCdpvoyToKfvHKQ8Ue7kLCLWeB8BFYLy0yVkdQrrltqP+5oVOaNiC/mbF+o+4kPRgzrQdAl5pwTf6k0VUNev8+W6IH5A+WWH9j1bpw+A== 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=en60MHkSNYE2+W6o1iqgx2tZJOJ1p/0dj7QM/jN4HvU=; b=MwVfQpE36yYLkd4qgzvxFB7hkeHYftUQ61LBeBGNzGc0g6iYC3CHrKtRmlofxFS3k7rqg0SCONJwOEa5dxny9R01rDkORCzq6vrRowNY9KLdrs681TW74IVJVCOmSp3G4wvjxw1Y0ldFCMfq8MUPRpnOhikJMA/iSgalwE7pqB8= 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, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH v3 33/33] block/nbd: drop connection_co Date: Fri, 16 Apr 2021 11:09:11 +0300 Message-Id: <20210416080911.83197-34-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210416080911.83197-1-vsementsov@virtuozzo.com> References: <20210416080911.83197-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::43) 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: 8d9952bf-43eb-4327-020f-08d900af0eea X-MS-TrafficTypeDiagnostic: AS8PR08MB5909: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5516; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: QHefNL7ocOWidMMdRS57VUHFLQ0n57GnqJtWB4lzrgdJBzvx4b1rbC3ExDdh0lTYIe7Owvmm2eLkLYW24wXxUUCaDqlccpUbnxMOOsl3HAngbv9Gge17+RMLorAsEcAZbIGHh1QA/EwogUT52jsXclQL9ELTbYwhYyFwWkmNY38wAdpnvB9WrfBikpUf+tMGsZPj94eiPcmMV+9FPHPuWMIGoArYPjOMQFf8WG0vVovWCsXYWFGssMVfLsuaMto6I6DgwHpf6oXsMwmjvFlNarWvy5vYFE3VEX8oylECmyr4W+HzkfiReCDXb4GZl7pconr0QiZQlqjvVSeZs9aqneUrExhExmk6pTtaiuWUu3EzfVHvAI2A37ngsQVsMY1X5viuQpSiG/HE5F+E4TKPsL4K3fmXMwScO5yza/BUxRSz8ILidhC5KEnpOOC3YolzyC9E/YlnB8ItFfyXe+W7FcivWYAEcd/s8POejtViUIQPEDnjggjKtdJBCxECttikfrgCzo9l3D/qxuec4PUELLLy8xNk4T5hLLmxLqHflfBnBoAPKg4PKtIMomrpja4NqGOmA3sRZXd3tBUkU/Ev4Bs6Xq/pjPBP1TPHfSJxpr1tRWkxEXA5e9nsjlsY/NS2jN/D/o29+jCnX4hcvVBbpe6kHgV/ADwsVQb/PzX9OQ5iOeSN0taf2f6gqwZX2cAw 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)(366004)(396003)(376002)(346002)(136003)(39840400004)(86362001)(2616005)(66476007)(1076003)(956004)(52116002)(6486002)(107886003)(6506007)(4326008)(6512007)(16526019)(8676002)(8936002)(6916009)(66556008)(66946007)(186003)(69590400012)(30864003)(478600001)(5660300002)(83380400001)(36756003)(38100700002)(2906002)(26005)(38350700002)(316002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?U4iNxBSk/03x/h1qOrBtQPiYIpxaUqna5nvwMQ6Ju7m1fmiARJfu0KSURDcc?= =?us-ascii?Q?QkTPQpSzX17KUKInc7gHlEuu/FoORR4+TDPzGtvjFhKiKZ5N9gR9W/trJV4K?= =?us-ascii?Q?G1RLx0HllyQqZ5bRENGrbGeMJ39Q0FcX1qiyiww3/1dtTrdYrU/Ngta+sSVR?= =?us-ascii?Q?T8IKsV5t3w+CS6dPUE4ASFX4PGtsYG+1K1XenG2agtSEXTbswN0TI3pjITim?= =?us-ascii?Q?hsbaxQCvaCp+gKlLFbbgvDc+fgHGQ1c/oAs1tXPATtwp44hQibuH+jSvG43m?= =?us-ascii?Q?MfTKD2ak0FER4vDclBvc0f8YIZeai7e+eE69E55oN/z2JQirqIrlCmXQ65u4?= =?us-ascii?Q?P7NRBAqKBXhciZ0YJ2TJsh+4EOqhaexC2aVQsB3Tyhuc8ejILGTSj/giKPQK?= =?us-ascii?Q?zgjJ22ocyrLncZSTtxvR4R1rhTLdsfH39jIscmrozY7BV3DSqbZzEX1svlOg?= =?us-ascii?Q?xcQqKvTp8tMtPLhjVPg5RdYIyd+733T1zhkc1vfX7x9mAyuo91BL68HK34+C?= =?us-ascii?Q?uFfQNVn/kyc7tFc/fTI+b3t57BforQbR4Ek/8aKX4d/jHC6XJ0D3kDxj7Lns?= =?us-ascii?Q?p6kCzMonVKGBVIF8iRn5POTaaU0HUaqspuZC2jOhzxQE8/U5iqF6xRN8jlLs?= =?us-ascii?Q?FuF9CkigZ9HV9/8pwMYqNpI7ys0vvAz7leQirfJjd2a/2H7Ea/e3dOzVwt5s?= =?us-ascii?Q?zM+U0e9AHbke/FM7mWy0pPQZU+QdF+pOgyQqj4CuxgidI1JVYUCObyDd7VRo?= =?us-ascii?Q?WGTjCz/+F2MCgSlzjxFU9nOpQTBtDxp20xlaRAA1z/jyo8+ekSKAWqa8qCRX?= =?us-ascii?Q?Ti2DEk7Zkw3/o8I4zSM/94Okwfk1OTaeQgab5+FAl53bzK+X+o44/K3DC2XN?= =?us-ascii?Q?C018OjtwQSplkDueiD6bsuRJMCs+oYksHxEP3g11Y59eiepUHdzR3AvLfZXf?= =?us-ascii?Q?OPSbIw+90ljVnVslg6S3c4ldPTNZaVCY1cgD2fEpWhw7BdM5zkALINmKdFdV?= =?us-ascii?Q?B4cQDTGsHoY/LMiBbZzUArudEtmgKFWsV0GwnZEHsbqPx525InC/StBaLUOf?= =?us-ascii?Q?cVPrxKg7lyxpj/h3zfGBHvq6l1xltR2EHrbDAfCZs+7mUn0mt+8U6+y4gDdS?= =?us-ascii?Q?dDMLxGiSYxdgaWgEBM5b1qnDITcrARn99rchIcuK1mQ8SFm6LcTCp0JMPrFz?= =?us-ascii?Q?73hxQDzXugY+G6V7HrdFd9c4bBWreS3VG7SCieU81pUqBctA2/T5FAoA6CsW?= =?us-ascii?Q?Xe5Y95C8qchblw7+EYZiCPFRi7xs4G5Ijky09ImQrGKmpU02f7vtV4Cqu8pp?= =?us-ascii?Q?U16Nr2xN0s2msW9KACl8mpvD?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8d9952bf-43eb-4327-020f-08d900af0eea X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2021 08:10:12.1997 (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: tcJ4cpxgTVpHJJeozBFHvxiyKo8xzukSlO6SvBF1b9pfC//p4Zrtx/fxqiSu/rLWTc8+nspDMUV5xVP31aWe5HelFg82GaTTdXDcMN9dCMI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB5909 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.2.116; envelope-from=vsementsov@virtuozzo.com; helo=EUR02-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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" OK, that's a big rewrite of the logic. Pre-patch we have an always running coroutine - connection_co. It does reply receiving and reconnecting. And it leads to a lot of difficult and unobvious code around drained sections and context switch. We also abuse bs->in_flight counter which is increased for connection_co and temporary decreased in points where we want to allow drained section to begin. One of these place is in another file: in nbd_read_eof() in nbd/client.c. We also cancel reconnect and requests waiting for reconnect on drained begin which is not correct. Let's finally drop this always running coroutine and go another way: 1. reconnect_attempt() goes to nbd_co_send_request and called under send_mutex 2. We do receive headers in request coroutine. But we also should dispatch replies for another pending requests. So, nbd_connection_entry() is turned into nbd_receive_replies(), which does reply dispatching until it receive another request headers, and returns when it receive the requested header. 3. All old staff around drained sections and context switch is dropped. Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/nbd.c | 376 ++++++++++++++++----------------------------------- nbd/client.c | 2 - 2 files changed, 119 insertions(+), 259 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index 03391bb231..3a7b532790 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -59,7 +59,7 @@ typedef struct { Coroutine *coroutine; uint64_t offset; /* original offset of the request */ - bool receiving; /* waiting for connection_co? */ + bool receiving; /* waiting in first yield of nbd_receive_replies() */ } NBDClientRequest; =20 typedef enum NBDClientState { @@ -75,14 +75,10 @@ typedef struct BDRVNBDState { =20 CoMutex send_mutex; CoQueue free_sema; - Coroutine *connection_co; - Coroutine *teardown_co; - QemuCoSleepState *connection_co_sleep_ns_state; - bool drained; - bool wait_drained_end; + Coroutine *receive_co; + Coroutine *in_flight_waiter; int in_flight; NBDClientState state; - bool wait_in_flight; =20 QEMUTimer *reconnect_delay_timer; =20 @@ -131,33 +127,20 @@ static bool nbd_client_connected(BDRVNBDState *s) =20 static void nbd_channel_error(BDRVNBDState *s, int ret) { + if (nbd_client_connected(s)) { + qio_channel_shutdown(s->ioc, QIO_CHANNEL_SHUTDOWN_BOTH, NULL); + } + if (ret =3D=3D -EIO) { if (nbd_client_connected(s)) { s->state =3D s->reconnect_delay ? NBD_CLIENT_CONNECTING_WAIT : NBD_CLIENT_CONNECTING_NOWAIT; } } else { - if (nbd_client_connected(s)) { - qio_channel_shutdown(s->ioc, QIO_CHANNEL_SHUTDOWN_BOTH, NULL); - } s->state =3D NBD_CLIENT_QUIT; } } =20 -static void nbd_recv_coroutines_wake_all(BDRVNBDState *s) -{ - int i; - - for (i =3D 0; i < MAX_NBD_REQUESTS; i++) { - NBDClientRequest *req =3D &s->requests[i]; - - if (req->coroutine && req->receiving) { - req->receiving =3D false; - aio_co_wake(req->coroutine); - } - } -} - static void reconnect_delay_timer_del(BDRVNBDState *s) { if (s->reconnect_delay_timer) { @@ -194,117 +177,23 @@ static void reconnect_delay_timer_init(BDRVNBDState = *s, uint64_t expire_time_ns) timer_mod(s->reconnect_delay_timer, expire_time_ns); } =20 -static void nbd_client_detach_aio_context(BlockDriverState *bs) -{ - BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; - - /* Timer is deleted in nbd_client_co_drain_begin() */ - assert(!s->reconnect_delay_timer); - /* - * If reconnect is in progress we may have no ->ioc. It will be - * re-instantiated in the proper aio context once the connection is - * reestablished. - */ - if (s->ioc) { - qio_channel_detach_aio_context(QIO_CHANNEL(s->ioc)); - } -} - -static void nbd_client_attach_aio_context_bh(void *opaque) -{ - BlockDriverState *bs =3D opaque; - BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; - - if (s->connection_co) { - /* - * The node is still drained, so we know the coroutine has yielded= in - * nbd_read_eof(), the only place where bs->in_flight can reach 0,= or - * it is entered for the first time. Both places are safe for ente= ring - * the coroutine. - */ - qemu_aio_coroutine_enter(bs->aio_context, s->connection_co); - } - bdrv_dec_in_flight(bs); -} - -static void nbd_client_attach_aio_context(BlockDriverState *bs, - AioContext *new_context) -{ - BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; - - /* - * s->connection_co is either yielded from nbd_receive_reply or from - * nbd_co_reconnect_loop() - */ - if (nbd_client_connected(s)) { - qio_channel_attach_aio_context(QIO_CHANNEL(s->ioc), new_context); - } - - bdrv_inc_in_flight(bs); - - /* - * Need to wait here for the BH to run because the BH must run while t= he - * node is still drained. - */ - aio_wait_bh_oneshot(new_context, nbd_client_attach_aio_context_bh, bs); -} - -static void coroutine_fn nbd_client_co_drain_begin(BlockDriverState *bs) -{ - BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; - - s->drained =3D true; - if (s->connection_co_sleep_ns_state) { - qemu_co_sleep_wake(s->connection_co_sleep_ns_state); - } - - nbd_co_establish_connection_cancel(s->conn); - - reconnect_delay_timer_del(s); - - if (qatomic_load_acquire(&s->state) =3D=3D NBD_CLIENT_CONNECTING_WAIT)= { - s->state =3D NBD_CLIENT_CONNECTING_NOWAIT; - qemu_co_queue_restart_all(&s->free_sema); - } -} - -static void coroutine_fn nbd_client_co_drain_end(BlockDriverState *bs) -{ - BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; - - s->drained =3D false; - if (s->wait_drained_end) { - s->wait_drained_end =3D false; - aio_co_wake(s->connection_co); - } -} - - static void nbd_teardown_connection(BlockDriverState *bs) { BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; =20 + assert(!s->in_flight); + assert(!s->receive_co); + if (s->ioc) { /* finish any pending coroutines */ qio_channel_shutdown(s->ioc, QIO_CHANNEL_SHUTDOWN_BOTH, NULL); + yank_unregister_function(BLOCKDEV_YANK_INSTANCE(s->bs->node_name), + nbd_yank, s->bs); + object_unref(OBJECT(s->ioc)); + s->ioc =3D NULL; } =20 s->state =3D NBD_CLIENT_QUIT; - if (s->connection_co) { - if (s->connection_co_sleep_ns_state) { - qemu_co_sleep_wake(s->connection_co_sleep_ns_state); - } - nbd_co_establish_connection_cancel(s->conn); - } - if (qemu_in_coroutine()) { - s->teardown_co =3D qemu_coroutine_self(); - /* connection_co resumes us when it terminates */ - qemu_coroutine_yield(); - s->teardown_co =3D NULL; - } else { - BDRV_POLL_WHILE(bs, s->connection_co); - } - assert(!s->connection_co); } =20 static bool nbd_client_connecting(BDRVNBDState *s) @@ -367,10 +256,11 @@ int nbd_co_do_establish_connection(BlockDriverState *= bs, Error **errp) { BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; int ret; + bool blocking =3D nbd_client_connecting_wait(s); =20 assert(!s->ioc); =20 - s->ioc =3D nbd_co_establish_connection(s->conn, &s->info, true, errp); + s->ioc =3D nbd_co_establish_connection(s->conn, &s->info, blocking, er= rp); if (!s->ioc) { return -ECONNREFUSED; } @@ -404,6 +294,7 @@ int nbd_co_do_establish_connection(BlockDriverState *bs= , Error **errp) return 0; } =20 +/* called under s->send_mutex */ static coroutine_fn void nbd_reconnect_attempt(BDRVNBDState *s) { if (!nbd_client_connecting(s)) { @@ -412,23 +303,29 @@ static coroutine_fn void nbd_reconnect_attempt(BDRVNB= DState *s) =20 /* Wait for completion of all in-flight requests */ =20 - qemu_co_mutex_lock(&s->send_mutex); - - while (s->in_flight > 0) { - qemu_co_mutex_unlock(&s->send_mutex); - nbd_recv_coroutines_wake_all(s); - s->wait_in_flight =3D true; + if (s->in_flight) { + s->in_flight_waiter =3D qemu_coroutine_self(); qemu_coroutine_yield(); - s->wait_in_flight =3D false; - qemu_co_mutex_lock(&s->send_mutex); + assert(!s->in_flight_waiter); + assert(!s->in_flight); } =20 - qemu_co_mutex_unlock(&s->send_mutex); - if (!nbd_client_connecting(s)) { return; } =20 + if (nbd_client_connecting_wait(s) && s->reconnect_delay && + !s->reconnect_delay_timer) + { + /* + * It's first reconnect attempt after switching to + * NBD_CLIENT_CONNECTING_WAIT + */ + reconnect_delay_timer_init(s, + qemu_clock_get_ns(QEMU_CLOCK_REALTIME) + + s->reconnect_delay * NANOSECONDS_PER_SECOND); + } + /* * Now we are sure that nobody is accessing the channel, and no one wi= ll * try until we set the state to CONNECTED. @@ -446,73 +343,34 @@ static coroutine_fn void nbd_reconnect_attempt(BDRVNB= DState *s) nbd_co_do_establish_connection(s->bs, NULL); } =20 -static coroutine_fn void nbd_co_reconnect_loop(BDRVNBDState *s) -{ - uint64_t timeout =3D 1 * NANOSECONDS_PER_SECOND; - uint64_t max_timeout =3D 16 * NANOSECONDS_PER_SECOND; - - if (qatomic_load_acquire(&s->state) =3D=3D NBD_CLIENT_CONNECTING_WAIT)= { - reconnect_delay_timer_init(s, qemu_clock_get_ns(QEMU_CLOCK_REALTIM= E) + - s->reconnect_delay * NANOSECONDS_PER_SE= COND); - } - - nbd_reconnect_attempt(s); - - while (nbd_client_connecting(s)) { - if (s->drained) { - bdrv_dec_in_flight(s->bs); - s->wait_drained_end =3D true; - while (s->drained) { - /* - * We may be entered once from nbd_client_attach_aio_conte= xt_bh - * and then from nbd_client_co_drain_end. So here is a loo= p. - */ - qemu_coroutine_yield(); - } - bdrv_inc_in_flight(s->bs); - } else { - qemu_co_sleep_ns_wakeable(QEMU_CLOCK_REALTIME, timeout, - &s->connection_co_sleep_ns_state); - if (s->drained) { - continue; - } - if (timeout < max_timeout) { - timeout *=3D 2; - } - } - - nbd_reconnect_attempt(s); - } - - reconnect_delay_timer_del(s); -} - -static coroutine_fn void nbd_connection_entry(void *opaque) +static coroutine_fn void nbd_receive_replies(BDRVNBDState *s, uint64_t han= dle) { - BDRVNBDState *s =3D opaque; uint64_t i; int ret =3D 0; Error *local_err =3D NULL; =20 - while (qatomic_load_acquire(&s->state) !=3D NBD_CLIENT_QUIT) { - /* - * The NBD client can only really be considered idle when it has - * yielded from qio_channel_readv_all_eof(), waiting for data. Thi= s is - * the point where the additional scheduled coroutine entry happens - * after nbd_client_attach_aio_context(). - * - * Therefore we keep an additional in_flight reference all the tim= e and - * only drop it temporarily here. - */ + i =3D HANDLE_TO_INDEX(s, handle); + if (s->receive_co) { + assert(s->receive_co !=3D qemu_coroutine_self()); =20 - if (nbd_client_connecting(s)) { - nbd_co_reconnect_loop(s); - } + /* Another request coroutine is receiving now */ + s->requests[i].receiving =3D true; + qemu_coroutine_yield(); + assert(!s->requests[i].receiving); =20 - if (!nbd_client_connected(s)) { - continue; + if (s->receive_co !=3D qemu_coroutine_self()) { + /* + * We are either failed or done, caller uses nbd_client_connec= ted() + * to distinguish. + */ + return; } + } + + assert(s->receive_co =3D=3D 0 || s->receive_co =3D=3D qemu_coroutine_s= elf()); + s->receive_co =3D qemu_coroutine_self(); =20 + while (nbd_client_connected(s)) { assert(s->reply.handle =3D=3D 0); ret =3D nbd_receive_reply(s->bs, s->ioc, &s->reply, &local_err); =20 @@ -522,8 +380,21 @@ static coroutine_fn void nbd_connection_entry(void *op= aque) local_err =3D NULL; } if (ret <=3D 0) { - nbd_channel_error(s, ret ? ret : -EIO); - continue; + ret =3D ret ? ret : -EIO; + nbd_channel_error(s, ret); + goto out; + } + + if (!nbd_client_connected(s)) { + ret =3D -EIO; + goto out; + } + + i =3D HANDLE_TO_INDEX(s, s->reply.handle); + + if (s->reply.handle =3D=3D handle) { + ret =3D 0; + goto out; } =20 /* @@ -531,50 +402,49 @@ static coroutine_fn void nbd_connection_entry(void *o= paque) * handler acts as a synchronization point and ensures that only * one coroutine is called until the reply finishes. */ - i =3D HANDLE_TO_INDEX(s, s->reply.handle); if (i >=3D MAX_NBD_REQUESTS || !s->requests[i].coroutine || !s->requests[i].receiving || (nbd_reply_is_structured(&s->reply) && !s->info.structured_rep= ly)) { nbd_channel_error(s, -EINVAL); - continue; + ret =3D -EINVAL; + goto out; } =20 - /* - * We're woken up again by the request itself. Note that there - * is no race between yielding and reentering connection_co. This - * is because: - * - * - if the request runs on the same AioContext, it is only - * entered after we yield - * - * - if the request runs on a different AioContext, reentering - * 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(); } =20 - qemu_co_queue_restart_all(&s->free_sema); - nbd_recv_coroutines_wake_all(s); - bdrv_dec_in_flight(s->bs); - - s->connection_co =3D NULL; - if (s->ioc) { - 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->ioc)); - s->ioc =3D NULL; - } +out: + if (ret < 0) { + s->receive_co =3D NULL; + for (i =3D 0; i < MAX_NBD_REQUESTS; i++) { + NBDClientRequest *req =3D &s->requests[i]; =20 - if (s->teardown_co) { - aio_co_wake(s->teardown_co); + if (req->coroutine && req->receiving) { + req->receiving =3D false; + aio_co_wake(req->coroutine); + } + } + } else { + /* + * If there are still some receiving request, it should become next + * "receive_co" + */ + for (i =3D 0; i < MAX_NBD_REQUESTS; i++) { + NBDClientRequest *req =3D &s->requests[i]; + + if (req->coroutine && req->receiving) { + req->receiving =3D false; + s->receive_co =3D req->coroutine; + aio_co_wake(req->coroutine); + return; + } + } + s->receive_co =3D NULL; } - aio_wait_kick(); } =20 static int nbd_co_send_request(BlockDriverState *bs, @@ -585,7 +455,15 @@ static int nbd_co_send_request(BlockDriverState *bs, int rc, i =3D -1; =20 qemu_co_mutex_lock(&s->send_mutex); - while (s->in_flight =3D=3D MAX_NBD_REQUESTS || nbd_client_connecting_w= ait(s)) { + + nbd_reconnect_attempt(s); + + if (!nbd_client_connected(s)) { + qemu_co_mutex_unlock(&s->send_mutex); + return -EIO; + } + + while (s->in_flight =3D=3D MAX_NBD_REQUESTS) { qemu_co_queue_wait(&s->free_sema, &s->send_mutex); } =20 @@ -636,10 +514,10 @@ err: s->requests[i].coroutine =3D NULL; s->in_flight--; } - if (s->in_flight =3D=3D 0 && s->wait_in_flight) { - aio_co_wake(s->connection_co); - } else { - qemu_co_queue_next(&s->free_sema); + if (s->in_flight =3D=3D 0 && s->in_flight_waiter) { + Coroutine *co =3D s->in_flight_waiter; + s->in_flight_waiter =3D NULL; + aio_co_wake(co); } } qemu_co_mutex_unlock(&s->send_mutex); @@ -938,9 +816,7 @@ static coroutine_fn int nbd_co_do_receive_one_chunk( *request_ret =3D 0; =20 /* Wait until we're woken up by nbd_connection_entry. */ - s->requests[i].receiving =3D true; - qemu_coroutine_yield(); - assert(!s->requests[i].receiving); + nbd_receive_replies(s, handle); if (!nbd_client_connected(s)) { error_setg(errp, "Connection closed"); return -EIO; @@ -1033,13 +909,8 @@ static coroutine_fn int nbd_co_receive_one_chunk( } s->reply.handle =3D 0; =20 - if (s->connection_co && !s->wait_in_flight) { - /* - * We must check s->wait_in_flight, because we may entered by - * nbd_recv_coroutines_wake_all(), in this case we should not - * wake connection_co here, it will woken by last request. - */ - aio_co_wake(s->connection_co); + if (s->receive_co) { + aio_co_wake(s->receive_co); } =20 return ret; @@ -1151,8 +1022,10 @@ break_loop: =20 qemu_co_mutex_lock(&s->send_mutex); s->in_flight--; - if (s->in_flight =3D=3D 0 && s->wait_in_flight) { - aio_co_wake(s->connection_co); + if (s->in_flight =3D=3D 0 && s->in_flight_waiter) { + Coroutine *co =3D s->in_flight_waiter; + s->in_flight_waiter =3D NULL; + aio_co_wake(co); } else { qemu_co_queue_next(&s->free_sema); } @@ -1980,14 +1853,13 @@ static int nbd_open(BlockDriverState *bs, QDict *op= tions, int flags, monitor_cur()); =20 /* TODO: Configurable retry-until-timeout behaviour.*/ + s->state =3D NBD_CLIENT_CONNECTING_WAIT; ret =3D nbd_do_establish_connection(bs, errp); if (ret < 0) { goto fail; } =20 - 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); + nbd_client_connection_enable_retry(s->conn); =20 return 0; =20 @@ -2141,6 +2013,8 @@ static void nbd_cancel_in_flight(BlockDriverState *bs) s->state =3D NBD_CLIENT_CONNECTING_NOWAIT; qemu_co_queue_restart_all(&s->free_sema); } + + nbd_co_establish_connection_cancel(s->conn); } =20 static BlockDriver bdrv_nbd =3D { @@ -2161,10 +2035,6 @@ static BlockDriver bdrv_nbd =3D { .bdrv_refresh_limits =3D nbd_refresh_limits, .bdrv_co_truncate =3D nbd_co_truncate, .bdrv_getlength =3D nbd_getlength, - .bdrv_detach_aio_context =3D nbd_client_detach_aio_context, - .bdrv_attach_aio_context =3D nbd_client_attach_aio_context, - .bdrv_co_drain_begin =3D nbd_client_co_drain_begin, - .bdrv_co_drain_end =3D nbd_client_co_drain_end, .bdrv_refresh_filename =3D nbd_refresh_filename, .bdrv_co_block_status =3D nbd_client_co_block_status, .bdrv_dirname =3D nbd_dirname, @@ -2190,10 +2060,6 @@ static BlockDriver bdrv_nbd_tcp =3D { .bdrv_refresh_limits =3D nbd_refresh_limits, .bdrv_co_truncate =3D nbd_co_truncate, .bdrv_getlength =3D nbd_getlength, - .bdrv_detach_aio_context =3D nbd_client_detach_aio_context, - .bdrv_attach_aio_context =3D nbd_client_attach_aio_context, - .bdrv_co_drain_begin =3D nbd_client_co_drain_begin, - .bdrv_co_drain_end =3D nbd_client_co_drain_end, .bdrv_refresh_filename =3D nbd_refresh_filename, .bdrv_co_block_status =3D nbd_client_co_block_status, .bdrv_dirname =3D nbd_dirname, @@ -2219,10 +2085,6 @@ static BlockDriver bdrv_nbd_unix =3D { .bdrv_refresh_limits =3D nbd_refresh_limits, .bdrv_co_truncate =3D nbd_co_truncate, .bdrv_getlength =3D nbd_getlength, - .bdrv_detach_aio_context =3D nbd_client_detach_aio_context, - .bdrv_attach_aio_context =3D nbd_client_attach_aio_context, - .bdrv_co_drain_begin =3D nbd_client_co_drain_begin, - .bdrv_co_drain_end =3D nbd_client_co_drain_end, .bdrv_refresh_filename =3D nbd_refresh_filename, .bdrv_co_block_status =3D nbd_client_co_block_status, .bdrv_dirname =3D nbd_dirname, diff --git a/nbd/client.c b/nbd/client.c index 0c2db4bcba..30d5383cb1 100644 --- a/nbd/client.c +++ b/nbd/client.c @@ -1434,9 +1434,7 @@ nbd_read_eof(BlockDriverState *bs, QIOChannel *ioc, v= oid *buffer, size_t size, =20 len =3D qio_channel_readv(ioc, &iov, 1, errp); if (len =3D=3D QIO_CHANNEL_ERR_BLOCK) { - bdrv_dec_in_flight(bs); qio_channel_yield(ioc, G_IO_IN); - bdrv_inc_in_flight(bs); continue; } else if (len < 0) { return -EIO; --=20 2.29.2