From nobody Sat Jun 29 06:29:01 2024 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=none dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1590612057; cv=pass; d=zohomail.com; s=zohoarc; b=Tcsy5ac6+DLqgkLwNm0fSQfJY0yKtuMWuVpaYK2CDAOC4uxTIsSBbqF/OhiMjWo631mgwuDrflsLshvdvVtdzgnO+qMlEdvVmB6gBFNg3ubyFZSLR2M+7791eegAhe0iVjJOa3ArVrTNeK2pMwlpskR77NQgLp0X5zdycAsQvco= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590612057; 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=K+B/0B38ta1cH4B105Z17VFOIQ3nKibFWFX93vJaNbQ=; b=JoNiZBSSusTr4suc+q+Au1qze0FqqkQfSg0tw2a2m9XS/kAUa8XMIa119HmBTKTTFdQ1fxOGQFSb1DbSi0xi1oq4DD8Le+6Yr61WIsPKKUV/5b+yKvhrlNKe6UFz0Onbbe7qnYdnJB6ntcFTK44OZ5ti8nalLfy7JwJ4TsrzQ+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=none 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 1590612057846218.2382148650081; Wed, 27 May 2020 13:40:57 -0700 (PDT) Received: from localhost ([::1]:49790 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1je2rA-0001f2-JI for importer@patchew.org; Wed, 27 May 2020 16:40:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35226) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1je2oH-0004TE-5V; Wed, 27 May 2020 16:37:57 -0400 Received: from mail-am6eur05on2112.outbound.protection.outlook.com ([40.107.22.112]:57342 helo=EUR05-AM6-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 1je2oG-0007uz-DS; Wed, 27 May 2020 16:37:56 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM7PR08MB5336.eurprd08.prod.outlook.com (2603:10a6:20b:105::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3021.24; Wed, 27 May 2020 20:37:51 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::a408:2f0f:bc6c:d312]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::a408:2f0f:bc6c:d312%4]) with mapi id 15.20.3045.018; Wed, 27 May 2020 20:37:50 +0000 Received: from kvm.sw.ru (185.215.60.148) by AM0PR10CA0101.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:208:e6::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3045.17 via Frontend Transport; Wed, 27 May 2020 20:37:50 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TAemYnGiAHIFea/ti7uzSgj/x0fCmMdTAYmRmvunXI7V53Lia2CNMbV2w6o3oJwakeUkQqjGE9P6pqD1UY9Mnx1axZNmmJHG9uyGVYycAYJvnA4R8ZJm2KHZqKzdd+xsKls/Hqt5WCGGN1Erm1UQKDs/TVSoCsNBpZIo4ZCe/+GOeaVu1nx/KJ+Kvdv3nTv41cBB/EcXm+C3XN4kX3gGxqTWGZlNJoJizWooxbN2N79I5bvo3mUI6xAhG0rCse91Zfzo6s2GVjeOIcllFP1bPktHzYarkhF0CNoWeSg4X4noqPiVEy9MD3Kgk0+mP2XgPMetzjpK/VsVjODj8zny8g== 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=K+B/0B38ta1cH4B105Z17VFOIQ3nKibFWFX93vJaNbQ=; b=T6gvJ5zk52lbpCvrDN3UIwtnccYawUYciZuSGHNHTZ+Bfx/33LVRWC7bZPPB9EaC+DJs+Lb5AFUCIU6YypBk3vbZPNeJ0cKA9Pfc7Tmsj1cJHkfz+/qNgsBkJEoKjBuQBOnLQyZNa51K9OHxJwzpe8gZD1ZL7LzP90JnwnjgfJ8NQs+gDJ2rFmUFCPL4ykSvKv2LDl2/Gi9AI96UCQoM4GQvG7QjI9wRzcyHe55FoAtbWGzYTMVj5AB8+LxaC4JBNZCE+uHe1c3lIGcjhci/OxyHhmb+DID1AAx5DWRBc5b7zuU7DLgvGzN7tuoj2/w1bd421K6PQVCo1frX1Mg26w== 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=K+B/0B38ta1cH4B105Z17VFOIQ3nKibFWFX93vJaNbQ=; b=OLRmk8BfxytVFnIB17xCCCN+swqE9Aa83hWhUtnJjefUuOfZwe/NSfHNSDnLbKVCcqLK+qz2+ad5bD5y6QBZUSM/9J8ke28EcEIy4E1bMcMjvWziJlcql62Lcofa3iZow2s8iWi6A29A6IU6N0mqm9RRJ6mmxR1tQM2s0ee3Az0= 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 Subject: [PATCH v5 2/7] block/io: refactor coroutine wrappers Date: Wed, 27 May 2020 23:37:28 +0300 Message-Id: <20200527203733.16129-3-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20200527203733.16129-1-vsementsov@virtuozzo.com> References: <20200527203733.16129-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM0PR10CA0101.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:208:e6::18) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-Mailer: git-send-email 2.21.0 X-Originating-IP: [185.215.60.148] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e9701913-4f0a-42f7-1a8e-08d8027dd2fb X-MS-TrafficTypeDiagnostic: AM7PR08MB5336: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:189; X-Forefront-PRVS: 04163EF38A X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jRZ5sLG6RS7Eub5an+jmIcPJhxVykXn5SCT0xM6d12r9mz09ggIVCjW33ZGuKA4LCcutLgW6M5ym0xfHFC8+PvrRgSIf6tuRzkpQmtFL9tEishCriy4Pp3YnRhpcmqKX8MI+jQgvf5zc5+xcg1JAkrWANGkpxMRf7QlpSk6tc/bQJeGC44ksTqhg9XkvzHC9kTu8/yhPdhExzDxZsm1RyGqd5ZLPpfJIo0E9Rk3qRwXN06w6lER8fiYnTJcefXOA3C9akRzjQiW+yk27jrDizMJcY7cSJ4dfLud28/O2C2NzAjhxjkmDfqREee1/AF/+VMfzNXukVq0C4gJWVqcG6A== 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; SFTY:; SFS:(4636009)(346002)(366004)(396003)(39850400004)(376002)(136003)(956004)(66556008)(66946007)(66476007)(8676002)(6486002)(6512007)(1076003)(478600001)(186003)(316002)(5660300002)(6916009)(2616005)(6506007)(8936002)(16526019)(26005)(2906002)(6666004)(83380400001)(36756003)(4326008)(52116002)(86362001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: C/IoHt8HsmeGb+4e61MYbxo5O2dTCAWF6GErz3qngd5K/FleQE9KfUACF50aewCDeCgO0xEER1aiLqRekkyro8HgOxqcFKkTAn3xdJKdDBS2TgI32nKT/CJ6QzNVRQJMb+bLZ/UFxf9GVubqdLl9x0GEm6udsVAf4KsuM8GXyeGSqFjx/xzoqA0A53Bud9x4CqI0wHBfaUwhoHcyphEeXPRd5B/I0OK0DsFe8djRVmuii5eAj0LMuRx0/9waeLQNdsdtxVJbuxVHIVz+5GI885Rfq37ICcfOIbNg7WaJT6viHN+bIibJU2h3k6gh5xuQvnBnfexTw8FRTKRm/fmUs4SqBwdNYZFaupf8Ak7v1CRxDmVSkXsrZQZr3BBhaZHSyAIbQh0Lc9NyViaV5Q8dBp82830Hlyxo/EAAKErfQmIAPhwXr91Qou+aSh/IqfnFFY71EbC5jKvEVxMq4bqvNlXTQmRBFx5zdtUAwVwKmqw= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: e9701913-4f0a-42f7-1a8e-08d8027dd2fb X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 May 2020 20:37:50.8745 (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: DR2zEnFVmHpreCJcwl8IUNc/tH+dj78lc3So3wz7vEYxF+hLZ4yR+LAWyqvPVoqMUkvaTw92wAR+iP9FBHeo47WeRqp4diNgELK75l7iRqw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR08MB5336 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.22.112; envelope-from=vsementsov@virtuozzo.com; helo=EUR05-AM6-obe.outbound.protection.outlook.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/27 16:37:50 X-ACL-Warn: Detected OS = Windows NT kernel [generic] [fuzzy] X-Spam_score_int: 5 X-Spam_score: 0.5 X-Spam_bar: / X-Spam_report: (0.5 / 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, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN 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: , Cc: kwolf@redhat.com, fam@euphon.net, vsementsov@virtuozzo.com, ehabkost@redhat.com, qemu-devel@nongnu.org, mreitz@redhat.com, stefanha@redhat.com, crosa@redhat.com, den@openvz.org 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" Most of our coroutine wrappers already follow this convention: We have 'coroutine_fn bdrv_co_()' as the core function, and a wrapper 'bdrv_()' which does a polling loop. The only outsiders are the bdrv_prwv_co and bdrv_common_block_status_above wrappers. Let's refactor them to behave as the others, it simplifies further conversion of coroutine wrappers. This patch adds indirection layer, but it will be compensated by further commit, which will drop bdrv_co_prwv together with is_write logic, to keep read and write patch separate. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- block/io.c | 61 +++++++++++++++++++++++++++++------------------------- 1 file changed, 33 insertions(+), 28 deletions(-) diff --git a/block/io.c b/block/io.c index 121ce17a49..bd00a70b47 100644 --- a/block/io.c +++ b/block/io.c @@ -900,28 +900,32 @@ typedef struct RwCo { BdrvRequestFlags flags; } RwCo; =20 +static int coroutine_fn bdrv_co_prwv(BdrvChild *child, int64_t offset, + QEMUIOVector *qiov, bool is_write, + BdrvRequestFlags flags) +{ + if (is_write) { + return bdrv_co_pwritev(child, offset, qiov->size, qiov, flags); + } else { + return bdrv_co_preadv(child, offset, qiov->size, qiov, flags); + } +} + static void coroutine_fn bdrv_rw_co_entry(void *opaque) { RwCo *rwco =3D opaque; =20 - if (!rwco->is_write) { - rwco->ret =3D bdrv_co_preadv(rwco->child, rwco->offset, - rwco->qiov->size, rwco->qiov, - rwco->flags); - } else { - rwco->ret =3D bdrv_co_pwritev(rwco->child, rwco->offset, - rwco->qiov->size, rwco->qiov, - rwco->flags); - } + rwco->ret =3D bdrv_co_prwv(rwco->child, rwco->offset, rwco->qiov, + rwco->is_write, rwco->flags); aio_wait_kick(); } =20 /* * Process a vectored synchronous request using coroutines */ -static int bdrv_prwv_co(BdrvChild *child, int64_t offset, - QEMUIOVector *qiov, bool is_write, - BdrvRequestFlags flags) +static int bdrv_prwv(BdrvChild *child, int64_t offset, + QEMUIOVector *qiov, bool is_write, + BdrvRequestFlags flags) { Coroutine *co; RwCo rwco =3D { @@ -949,8 +953,7 @@ int bdrv_pwrite_zeroes(BdrvChild *child, int64_t offset, { QEMUIOVector qiov =3D QEMU_IOVEC_INIT_BUF(qiov, NULL, bytes); =20 - return bdrv_prwv_co(child, offset, &qiov, true, - BDRV_REQ_ZERO_WRITE | flags); + return bdrv_prwv(child, offset, &qiov, true, BDRV_REQ_ZERO_WRITE | fla= gs); } =20 /* @@ -999,7 +1002,7 @@ int bdrv_preadv(BdrvChild *child, int64_t offset, QEMU= IOVector *qiov) { int ret; =20 - ret =3D bdrv_prwv_co(child, offset, qiov, false, 0); + ret =3D bdrv_prwv(child, offset, qiov, false, 0); if (ret < 0) { return ret; } @@ -1023,7 +1026,7 @@ int bdrv_pwritev(BdrvChild *child, int64_t offset, QE= MUIOVector *qiov) { int ret; =20 - ret =3D bdrv_prwv_co(child, offset, qiov, true, 0); + ret =3D bdrv_prwv(child, offset, qiov, true, 0); if (ret < 0) { return ret; } @@ -2443,14 +2446,15 @@ early_out: return ret; } =20 -static int coroutine_fn bdrv_co_block_status_above(BlockDriverState *bs, - BlockDriverState *base, - bool want_zero, - int64_t offset, - int64_t bytes, - int64_t *pnum, - int64_t *map, - BlockDriverState **file) +static int coroutine_fn +bdrv_co_common_block_status_above(BlockDriverState *bs, + BlockDriverState *base, + bool want_zero, + int64_t offset, + int64_t bytes, + int64_t *pnum, + int64_t *map, + BlockDriverState **file) { BlockDriverState *p; int ret =3D 0; @@ -2488,10 +2492,11 @@ static void coroutine_fn bdrv_block_status_above_co= _entry(void *opaque) { BdrvCoBlockStatusData *data =3D opaque; =20 - data->ret =3D bdrv_co_block_status_above(data->bs, data->base, - data->want_zero, - data->offset, data->bytes, - data->pnum, data->map, data->fi= le); + data->ret =3D bdrv_co_common_block_status_above(data->bs, data->base, + data->want_zero, + data->offset, data->byte= s, + data->pnum, data->map, + data->file); data->done =3D true; aio_wait_kick(); } --=20 2.21.0