From nobody Mon Feb 9 10:29:12 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=1617891055; cv=pass; d=zohomail.com; s=zohoarc; b=IHW1mAkzc+QigF//0md1uMKQGjovXIHsGxRjTBsQ0dPAlvIroiPtFio3mw7DxInHEX5tdAHHMMBgxW1Y5SdIOV7s4UsjKrGtgvUJ6ydHgqIptnjWXT4qrweYge9Gc7XxXg6/rsFS057xTNLPm//ZQ2INdu45yR0Sk0Y2wzGv9Ig= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1617891055; 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=+5jiqsB/GccwtYQCqrqNoYIaehUhulhHRfym3T32OhA=; b=TtFEGCQWN0PN1QdoG9MR74HsKpqQ7rvGTXBtx6KWuinlUKweUK59qJH2HLitNNEUE4W9w2rCOuuB7uVJPhsBo8qSPveOPBwo7bNF3bjHw0HmpmGKIQrIjANkXn3qA7Bbizu97J6TvRi0TCe+2yGHpzrvvMlBleUk1p/A0g4ylZY= 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 1617891054568135.13716665304537; Thu, 8 Apr 2021 07:10:54 -0700 (PDT) Received: from localhost ([::1]:42690 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lUVMy-0006uv-P2 for importer@patchew.org; Thu, 08 Apr 2021 10:10:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40404) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lUVLf-0005F5-4C; Thu, 08 Apr 2021 10:09:31 -0400 Received: from mail-eopbgr140103.outbound.protection.outlook.com ([40.107.14.103]:51570 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 1lUVLV-0001b3-Kj; Thu, 08 Apr 2021 10:09:30 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM5PR0801MB1713.eurprd08.prod.outlook.com (2603:10a6:203:34::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.17; Thu, 8 Apr 2021 14:08:53 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4020.017; Thu, 8 Apr 2021 14:08:53 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1PR0701CA0052.eurprd07.prod.outlook.com (2603:10a6:3:9e::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.6 via Frontend Transport; Thu, 8 Apr 2021 14:08:52 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=P/y6OvRquF5cRTIqFkK8vlNz+MbFIr8Yu1BUCTuL+AWYpv16k9NsCe7dkTM61IgxJQ7TLNq/owT1tJoaup6J2Oa6COuxAy7w1pUmYJYc7EPW5H500dCGfYt6fvEb5s24ZBi7JjBBN01CUn1c1rSNpBB1K0sPOnmzwXKS7w/GKsKs79nrJMw6MTyjjE8C/R6LcL32sj4LsdOFm7yiDkm3ydbaKIpQSc1XCyJebKIlaojzdsLuX+xAYkQ9oC66vEUzv0KjW8m2QiqdQx7nQ68f4dSJZGwa7K7ZsfuRYaRAu1ttIE/KfuX8sJKRxnSHSPsbNrbNA2inpF6xHA6N0d+eEQ== 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=+5jiqsB/GccwtYQCqrqNoYIaehUhulhHRfym3T32OhA=; b=K0gRDtQiqnd7iqFPqttuMI+zMehguL8FEkGvh/uvblsvksStYkLjTvx5vNpKteDJp6DpsQdlxTDMLKcUiNoaY1O8K2SS2ojBo/sMjQh9eBTvTA2AzG7OE7EVNhWmINUcEX7oqOb87KpXK3dbXPZssAVSReoGrKfagUMCGKTlMvvYT+QhhnMuuZ07U4IfEYF9G+RUPUfDvL0A/T1bUj6pLihbqmFQyBIcCAk/0t7sDSc/y87BpKuo+DX8ylOt71If5OPcD6G5OHGMvjfMKywIwVB6uPBEhDTrMFm9sNfq1wJU1O9JBghIz8/QJIf8Sw4F5Abxlk8lBVprAWprHqEHEQ== 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=+5jiqsB/GccwtYQCqrqNoYIaehUhulhHRfym3T32OhA=; b=tdIopiAkAhvhpkc/dYjGzfXO6ZW86F3zSjzSXnz/P+d/qRF436EWW9F1qP7LaLzO8eriRB0hyo9GRevL7jFGKuPwyOPD7EfbM61zulYGQHEdIhwsE4CGafGkUOjNOg1Oy+/fMxJLuNDU/ORh1uD4OLwiirGJr9QYOrl9UvgVlP4= 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, fam@euphon.net, stefanha@redhat.com, mreitz@redhat.com, kwolf@redhat.com, vsementsov@virtuozzo.com, eblake@redhat.com, rvkagan@yandex-team.ru Subject: [PATCH v2 08/10] block/nbd: rename NBDConnectThread to NBDClientConnection Date: Thu, 8 Apr 2021 17:08:25 +0300 Message-Id: <20210408140827.332915-9-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210408140827.332915-1-vsementsov@virtuozzo.com> References: <20210408140827.332915-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1PR0701CA0052.eurprd07.prod.outlook.com (2603:10a6:3:9e::20) 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: b870ffae-40b6-4ade-6c2a-08d8fa97d788 X-MS-TrafficTypeDiagnostic: AM5PR0801MB1713: 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: BHU0R320RMNRwcII9DSlPq/USbpNNz/iUmHZXy2C9TOSZk7kCWq7h2a7vm4mINKVr9sYvPwRVUPI7TrF0ajRhGtyOOUtMvx8C/WQYYFp8tQBoFG3pF7mewjcilRoYQbF96Lar7JQJIFoVzyJyKafBU6jkvC+BJsn1BDMjW5h6XPV8AAW3XZgbZz93vhW6QDeEebG626XnPNQSmjfuL3rcwCHDRYAvJR0c2/J/jiZj5Yb4BK9EpilB14Om+bkK1OOuN88YwNueNjfxobFlindocig3+xlaef7oUYdmG2gZXDDp1qCiLyoL8GHsCmqhA9JNX9NSbfC+RXbwgm6ojdYkxOyBxMWb/nRwUp2Vo9FHK+xiuWZd8udLsCR1oduHjlGcWf/APBu7JuR66tP3YY+3j3zp4NrnFsPwNkl41dlcKjJxC9GYJV59zByo8ha7gcyyW1ckze51GRnG2a01LT9xyKvaRb9idK30zRLGZe9PT8l1RVxiTF+Io5xYXmvQi3bOfVyklx630i7bhn0iGJAzZP079g7apGipapI0CyPRY4T8393LUsFwVcHQNB3GswMthwtPTzCJ0bAnEB1VFvzEQmQ9cJfnCG41t+/LJ/jwMLOeWSPZGuVMk6qwFeeb1pKHClR/YUhP2+DyQQwJ/tMUF4F6fRTgWVtSOaLwZuBBloPEwFzYwFTdubfobtVQntMyKJKp5W8/2cMlrDU+VV7Sg== 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)(366004)(39840400004)(6506007)(4326008)(8936002)(2906002)(83380400001)(6666004)(36756003)(66556008)(66476007)(66946007)(186003)(478600001)(6916009)(16526019)(1076003)(316002)(38350700001)(52116002)(86362001)(69590400012)(2616005)(8676002)(956004)(26005)(5660300002)(6512007)(38100700001)(6486002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?fW4ix0eugdPmiwZfAyIsoXHKEpV/dY5q0bBQWb5/B/pS9a80aZJ+TD9ZGhkL?= =?us-ascii?Q?8H01wxcSJtbV2vDcPQdMu+/izt1BjPAGaaKokR0RgBJQaE90HYcPIC4XfmfZ?= =?us-ascii?Q?RTqbSdsvZ4JVfGVEypqGDPxJph9EB0zRtsNSnJ5TjPP0n3GQ79pY9IsMyVOX?= =?us-ascii?Q?r1/bLsLb854kPQjSdj5Ijy+rropmok8r0TKsrsTcVI6R8Ojg/X110LeSp+c5?= =?us-ascii?Q?umcDTqbb38r82ynwKQFbbIX5F/Xu/dSFkORGGTvn8kHKhJZSNjt6SpKAGiFa?= =?us-ascii?Q?P3Qmnk3YI4MQbC9ncSf4FfO/LernpPnczt9pBp+v0xyE4WeZGp+oqgGHhwUW?= =?us-ascii?Q?bHTJqNIMsa2NYQDjFKQGP8o/Bb8PASBgo1yu5FjpunHzjaYUBDB0o5SjpmSm?= =?us-ascii?Q?H9bNyIAL5VY1WOa+xdvSUNaitB6a5szH1+QlVEjZTy1bneR8f3cz/sjpppQV?= =?us-ascii?Q?YieddnQpqg6zbwLlpPWziv21PLPoB5yrTvZMzLEx+DmnOM30LDP8PQ8rJ3NE?= =?us-ascii?Q?QyVeW5+Gtp7TRxKe9uWJAohL7nTX+/5/5thwPCKsgaoZJE39rbZ7RajHJiyg?= =?us-ascii?Q?LOOM2lvf6OK1GOsfar00fQ4gszUg4rY22ii6MMd+pbiIj7vpPIZQuGStaY4H?= =?us-ascii?Q?gUley9426aRfRsSXfHQnuCYbbDOF8137gV70Acz6MYtX4ME+N6Pe1vKZox+I?= =?us-ascii?Q?XT2txo9HYxQ8FZwWT7DSjogw4YK37y9ShU8dumhlIUS9j1WStsIm6Tf120W0?= =?us-ascii?Q?Q9JPQd6/BWcdug5Qp/dZxD2yAH05vQfXBByrbb1TE/yByWhZQSthJplS1qmd?= =?us-ascii?Q?BtI6eeeiVBKRnaDX48H/igomEZQl7AxmNLzdXWxSH/oEB925op5rHqfVL8ge?= =?us-ascii?Q?EI7Dqd+uYIdiVCikx1Mt6JltMpLQS5J4SZiwYVTBVgBC316aIUJj46bO4xE/?= =?us-ascii?Q?FjcA4YEQspERcnerHGhveayENOrGQZclSEpHL16K+4aSxvkfrcRUjbjgQ+eP?= =?us-ascii?Q?ilPD4WzVKD4z5vv0QbMd8mk59ayriv65z/cDDTNF5OITN4hEYcYYBLWB753m?= =?us-ascii?Q?SAF07dyps+Sci7piTESuz1lfnid++PSrmUjhEJsGty2zifZTtc7fx8aYcSz4?= =?us-ascii?Q?RoYc4Bx1hDbcdFUDJcKYWXKFXygXN+iyQPC/l8uWbQwUWN0MvhDmS5QHyw9z?= =?us-ascii?Q?IPlesteg8h9i5tD1Kv6WPehFLRqnOXDPrdznIij6NG/h40Xr37j+tE7lh8FP?= =?us-ascii?Q?f49awH30G2rzGE9SuoVXAPg0CexcQ2vE+WAyxQK+5gJEbE8xL9cWaG08qpCg?= =?us-ascii?Q?pNZEKE/MQXahy6o6l5XpzOnd?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: b870ffae-40b6-4ade-6c2a-08d8fa97d788 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2021 14:08:53.8501 (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: ck6fkbS006Hl0kWKmmccygkDmcgNLUt+ttyb8Yjv18i0MkQbaFqWy+LPBr1Jvrz3AL+y1onpMduAnZciVxDNDRsT2amqI+wKu8RZeY+icF0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB1713 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.103; 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" 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. connect_thread_state_unref() function gets new appropriate name too Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Roman Kagan --- block/nbd.c | 127 ++++++++++++++++++++++++++-------------------------- 1 file changed, 63 insertions(+), 64 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index ebbb0bec6a..ab3ef13366 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 @@ -83,7 +83,7 @@ typedef struct NBDConnectThread { /* All further fields are protected by mutex */ bool running; /* thread is running now */ Coroutine *wait_co; /* nbd_co_establish_connection() wait in yield() */ -} NBDConnectThread; +} NBDClientConnection; =20 typedef struct BDRVNBDState { QIOChannelSocket *sioc; /* The master data channel */ @@ -116,22 +116,22 @@ typedef struct BDRVNBDState { char *x_dirty_bitmap; bool alloc_depth; =20 - NBDConnectThread *connect_thread; + NBDClientConnection *conn; } BDRVNBDState; =20 -static void connect_thread_state_unref(NBDConnectThread *thr); +static void nbd_client_connection_unref(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(BDRVNBDState *s) { - connect_thread_state_unref(s->connect_thread); - s->connect_thread =3D NULL; + nbd_client_connection_unref(s->conn); + s->conn =3D NULL; object_unref(OBJECT(s->tlscreds)); qapi_free_SocketAddress(s->saddr); s->saddr =3D NULL; @@ -271,7 +271,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 @@ -311,7 +311,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(); @@ -338,100 +338,100 @@ 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), .refcnt =3D 1, }; =20 - qemu_mutex_init(&s->connect_thread->mutex); + qemu_mutex_init(&s->conn->mutex); } =20 -static void connect_thread_state_unref(NBDConnectThread *thr) +static void nbd_client_connection_unref(NBDClientConnection *conn) { - if (qatomic_dec_fetch(&thr->refcnt) =3D=3D 0) { - if (thr->sioc) { - qio_channel_close(QIO_CHANNEL(thr->sioc), NULL); + if (qatomic_dec_fetch(&conn->refcnt) =3D=3D 0) { + if (conn->sioc) { + qio_channel_close(QIO_CHANNEL(conn->sioc), NULL); } - 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; =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_wake(thr->wait_co); - thr->wait_co =3D NULL; + assert(conn->running); + conn->running =3D false; + if (conn->wait_co) { + aio_co_wake(conn->wait_co); + conn->wait_co =3D NULL; } =20 - qemu_mutex_unlock(&thr->mutex); + qemu_mutex_unlock(&conn->mutex); =20 - connect_thread_state_unref(thr); + nbd_client_connection_unref(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; - qatomic_inc(&thr->refcnt); /* for thread */ + conn->running =3D true; + error_free(conn->err); + conn->err =3D NULL; + qatomic_inc(&conn->refcnt); /* for thread */ 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 @@ -439,9 +439,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 @@ -449,12 +449,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; } @@ -465,17 +465,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_wake(thr->wait_co); - thr->wait_co =3D NULL; + if (conn->wait_co) { + aio_co_wake(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) @@ -521,7 +520,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