From nobody Sat May 18 22:31:18 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; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1670923014; cv=none; d=zohomail.com; s=zohoarc; b=mEsTlWnGjXDeOEcgnn4sCJ4GfFXlye6FBlCJ5QKQMQOBpbezkQ/UDoHJh3OLSW2TVo8PhP+/rwjf7/MZJmc6LPOJeVuSNfIP3DBhmltMRFXYWxqJ5BxyW+O7gEQn00xQx8zy7jmj9Oup9A7QBch5eePFHlQJw8JZpVochPOvg54= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1670923014; h=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=CVOPB379Jvnni2ccSM+vLxv3AvP2G5ZvVhvcaqpt0+k=; b=Z8s4SYgeuFOsZyMp+xVYW8DUsKacT5j4E556D87YsNvmZePtmxjhhgtA5OVpW1gVUje5BHo6FzsAsLja+7Yl1m6t18ll9nmlZkf+X9ao1EBcXtBlW9sf3p49p7khNkedySNSlgubtNahJqgaa+5XWRIhwbytZLXU8XkYjPIj9WE= ARC-Authentication-Results: i=1; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1670923014269431.0598136769755; Tue, 13 Dec 2022 01:16:54 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p512r-0006Kw-1Z; Tue, 13 Dec 2022 03:53:49 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p512h-0006Df-7f for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:53:42 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p512f-0002ud-CB for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:53:38 -0500 Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-154-7uMQh4wPMqex-0C8eah8Qg-1; Tue, 13 Dec 2022 03:53:32 -0500 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 6F5D329AB40D; Tue, 13 Dec 2022 08:53:32 +0000 (UTC) Received: from merkur.redhat.com (unknown [10.39.192.221]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5384F492C14; Tue, 13 Dec 2022 08:53:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1670921616; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=CVOPB379Jvnni2ccSM+vLxv3AvP2G5ZvVhvcaqpt0+k=; b=IdFczgcYJZANY9j482dwdBjcW6FlaNPbCxmACVQt0EyI9VNvem0EPZGMVZaSFB/MligrDF 2xxLNUUIZS0ShKGSbPP8ENro3llwFB9m1GI6V/vO138yKXNBHFAIoMyQvpO6wFdAfvOfK+ /fKSrPUM03/ad/h6kVjhpAhdeAOZVS4= X-MC-Unique: 7uMQh4wPMqex-0C8eah8Qg-1 From: Kevin Wolf To: qemu-block@nongnu.org Cc: kwolf@redhat.com, hreitz@redhat.com, eesposit@redhat.com, pbonzini@redhat.com, vsementsov@yandex-team.ru, qemu-devel@nongnu.org Subject: [PATCH 01/14] block-coroutine-wrapper: support void functions Date: Tue, 13 Dec 2022 09:53:07 +0100 Message-Id: <20221213085320.95673-2-kwolf@redhat.com> In-Reply-To: <20221213085320.95673-1-kwolf@redhat.com> References: <20221213085320.95673-1-kwolf@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 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=170.10.133.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.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, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=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.29 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1670923016737100003 Content-Type: text/plain; charset="utf-8" From: Emanuele Giuseppe Esposito Just omit the various 'return' when the return type is void. Signed-off-by: Emanuele Giuseppe Esposito Signed-off-by: Kevin Wolf Reviewed-by: Emanuele Giuseppe Esposito Reviewed-by: Vladimir Sementsov-Ogievskiy --- scripts/block-coroutine-wrapper.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/scripts/block-coroutine-wrapper.py b/scripts/block-coroutine-w= rapper.py index 6e087fa0b7..0c5d7782b1 100644 --- a/scripts/block-coroutine-wrapper.py +++ b/scripts/block-coroutine-wrapper.py @@ -85,6 +85,16 @@ def __init__(self, return_type: str, name: str, args: st= r, ctx =3D 'qemu_get_aio_context()' self.ctx =3D ctx =20 + self.get_result =3D 's->ret =3D ' + self.ret =3D 'return s.ret;' + self.co_ret =3D 'return ' + self.return_field =3D self.return_type + " ret;" + if self.return_type =3D=3D 'void': + self.get_result =3D '' + self.ret =3D '' + self.co_ret =3D '' + self.return_field =3D '' + def gen_list(self, format: str) -> str: return ', '.join(format.format_map(arg.__dict__) for arg in self.a= rgs) =20 @@ -131,7 +141,7 @@ def create_mixed_wrapper(func: FuncDecl) -> str: {{ if (qemu_in_coroutine()) {{ {graph_assume_lock} - return {name}({ func.gen_list('{name}') }); + {func.co_ret}{name}({ func.gen_list('{name}') }); }} else {{ {struct_name} s =3D {{ .poll_state.ctx =3D {func.ctx}, @@ -143,7 +153,7 @@ def create_mixed_wrapper(func: FuncDecl) -> str: s.poll_state.co =3D qemu_coroutine_create({name}_entry, &s); =20 bdrv_poll_co(&s.poll_state); - return s.ret; + {func.ret} }} }}""" =20 @@ -168,7 +178,7 @@ def create_co_wrapper(func: FuncDecl) -> str: s.poll_state.co =3D qemu_coroutine_create({name}_entry, &s); =20 bdrv_poll_co(&s.poll_state); - return s.ret; + {func.ret} }}""" =20 =20 @@ -195,7 +205,7 @@ def gen_wrapper(func: FuncDecl) -> str: =20 typedef struct {struct_name} {{ BdrvPollCo poll_state; - {func.return_type} ret; + {func.return_field} { func.gen_block(' {decl};') } }} {struct_name}; =20 @@ -204,7 +214,7 @@ def gen_wrapper(func: FuncDecl) -> str: {struct_name} *s =3D opaque; =20 {graph_lock} - s->ret =3D {name}({ func.gen_list('s->{name}') }); + {func.get_result}{name}({ func.gen_list('s->{name}') }); {graph_unlock} s->poll_state.in_progress =3D false; =20 --=20 2.38.1 From nobody Sat May 18 22:31:18 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; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1670923067; cv=none; d=zohomail.com; s=zohoarc; b=Du3y6XmrtcMhPTL8TubP689ol+oeByk5NNNwT2h7PRy/oaMXpBhKwCyJ/KWVqgg/h+ygcYJ2R3y46JGk3/QH3KwxN8iadiZmZ89wpEGHw0KV+Z6PJcNj9UMZSsqGkaQDmh0lvdb9E1Ae2A9pMDjsG2EsyulCM/rBwbhJHOZEojg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1670923067; h=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=PuU7ALAXzy2Iv7yyti4yAs7CK1ag2zCUfY3+aruO78E=; b=Fq347Gj4xPYGHX/uLqmMbD0+YFH/X/8EejCYNCqEJ3rjpxvpfG3RRd3owDkDsyEo/piUTr5KM55rUdK3OoiYh1pYqW6/Ir5M8iuY8ZrRuOPvdApYml/uXeXJiIwN6OLDv3zinl9eWjIiC/B/On9xgnHXZ3UeuKP4BbD6HcDn02c= ARC-Authentication-Results: i=1; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1670923067890263.65261981571405; Tue, 13 Dec 2022 01:17:47 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p512y-0006RH-Bt; Tue, 13 Dec 2022 03:53:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p512h-0006Dg-NR for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:53:42 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p512g-0002v2-47 for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:53:39 -0500 Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-493-kMRjOFI7NIqJYE--Y50ZYA-1; Tue, 13 Dec 2022 03:53:34 -0500 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id C253D382C96E; Tue, 13 Dec 2022 08:53:33 +0000 (UTC) Received: from merkur.redhat.com (unknown [10.39.192.221]) by smtp.corp.redhat.com (Postfix) with ESMTP id A80D6492C14; Tue, 13 Dec 2022 08:53:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1670921617; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=PuU7ALAXzy2Iv7yyti4yAs7CK1ag2zCUfY3+aruO78E=; b=OHGnZ4TAgB1lSOPDQQMze+cOza7YevyaJjAZs2PMzCAGUeXoa0jnn8cO4/nc+7BHlCCXBx 0M3JGO/45YbOsreHvTHLoLW0ASMBzVS6I5sIMwupdXFLUqi0IdslVbcY3+ID3Ua9lVAMMH /9dPqWl6RAZ84RkQC76478GD9V6WeqI= X-MC-Unique: kMRjOFI7NIqJYE--Y50ZYA-1 From: Kevin Wolf To: qemu-block@nongnu.org Cc: kwolf@redhat.com, hreitz@redhat.com, eesposit@redhat.com, pbonzini@redhat.com, vsementsov@yandex-team.ru, qemu-devel@nongnu.org Subject: [PATCH 02/14] block: Convert bdrv_io_plug() to co_wrapper Date: Tue, 13 Dec 2022 09:53:08 +0100 Message-Id: <20221213085320.95673-3-kwolf@redhat.com> In-Reply-To: <20221213085320.95673-1-kwolf@redhat.com> References: <20221213085320.95673-1-kwolf@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 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=170.10.129.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.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, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=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.29 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1670923068818100003 Content-Type: text/plain; charset="utf-8" From: Emanuele Giuseppe Esposito BlockDriver->bdrv_io_plug is categorized as IO callback, and it currently doesn't run in a coroutine. We should let it take a graph rdlock since the callback traverses the block nodes graph, which however is only possible in a coroutine. The only caller of this function is blk_io_plug(), therefore make blk_io_plug() a co_wrapper, so that we're always running in a coroutine where the lock can be taken. Signed-off-by: Emanuele Giuseppe Esposito Signed-off-by: Kevin Wolf Reviewed-by: Emanuele Giuseppe Esposito Reviewed-by: Vladimir Sementsov-Ogievskiy --- include/block/block-io.h | 3 ++- include/block/block_int-common.h | 2 +- include/sysemu/block-backend-io.h | 4 +++- block/block-backend.c | 4 ++-- block/io.c | 4 ++-- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/include/block/block-io.h b/include/block/block-io.h index 2ed6214909..d96168375e 100644 --- a/include/block/block-io.h +++ b/include/block/block-io.h @@ -217,7 +217,8 @@ void bdrv_coroutine_enter(BlockDriverState *bs, Corouti= ne *co); =20 AioContext *child_of_bds_get_parent_aio_context(BdrvChild *c); =20 -void bdrv_io_plug(BlockDriverState *bs); +void coroutine_fn bdrv_co_io_plug(BlockDriverState *bs); + void bdrv_io_unplug(BlockDriverState *bs); =20 bool coroutine_fn bdrv_co_can_store_new_dirty_bitmap(BlockDriverState *bs, diff --git a/include/block/block_int-common.h b/include/block/block_int-com= mon.h index c34c525fa6..4a1c1e348a 100644 --- a/include/block/block_int-common.h +++ b/include/block/block_int-common.h @@ -729,7 +729,7 @@ struct BlockDriver { void (*bdrv_debug_event)(BlockDriverState *bs, BlkdebugEvent event); =20 /* io queue for linux-aio */ - void (*bdrv_io_plug)(BlockDriverState *bs); + void coroutine_fn (*bdrv_io_plug)(BlockDriverState *bs); void (*bdrv_io_unplug)(BlockDriverState *bs); =20 /** diff --git a/include/sysemu/block-backend-io.h b/include/sysemu/block-backe= nd-io.h index 7ec6d978d4..70b73f7d11 100644 --- a/include/sysemu/block-backend-io.h +++ b/include/sysemu/block-backend-io.h @@ -73,7 +73,9 @@ void blk_iostatus_set_err(BlockBackend *blk, int error); int blk_get_max_iov(BlockBackend *blk); int blk_get_max_hw_iov(BlockBackend *blk); =20 -void blk_io_plug(BlockBackend *blk); +void coroutine_fn blk_co_io_plug(BlockBackend *blk); +void co_wrapper blk_io_plug(BlockBackend *blk); + void blk_io_unplug(BlockBackend *blk); AioContext *blk_get_aio_context(BlockBackend *blk); BlockAcctStats *blk_get_stats(BlockBackend *blk); diff --git a/block/block-backend.c b/block/block-backend.c index 2852a892de..f862fd1950 100644 --- a/block/block-backend.c +++ b/block/block-backend.c @@ -2315,13 +2315,13 @@ void blk_add_insert_bs_notifier(BlockBackend *blk, = Notifier *notify) notifier_list_add(&blk->insert_bs_notifiers, notify); } =20 -void blk_io_plug(BlockBackend *blk) +void coroutine_fn blk_co_io_plug(BlockBackend *blk) { BlockDriverState *bs =3D blk_bs(blk); IO_CODE(); =20 if (bs) { - bdrv_io_plug(bs); + bdrv_co_io_plug(bs); } } =20 diff --git a/block/io.c b/block/io.c index d87788dfbb..3d27836420 100644 --- a/block/io.c +++ b/block/io.c @@ -3127,13 +3127,13 @@ void *qemu_try_blockalign0(BlockDriverState *bs, si= ze_t size) return mem; } =20 -void bdrv_io_plug(BlockDriverState *bs) +void coroutine_fn bdrv_co_io_plug(BlockDriverState *bs) { BdrvChild *child; IO_CODE(); =20 QLIST_FOREACH(child, &bs->children, next) { - bdrv_io_plug(child->bs); + bdrv_co_io_plug(child->bs); } =20 if (qatomic_fetch_inc(&bs->io_plugged) =3D=3D 0) { --=20 2.38.1 From nobody Sat May 18 22:31:18 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; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1670923022; cv=none; d=zohomail.com; s=zohoarc; b=l+eaZ8d4CnzGdRcyN07d0rfyLFxftuaLVD9jP1J0ZcWZbunIW4c2nob3ppCkphqjCXs3cD6oCRG8poRJmSp+aepZmCyxnw3ltLqHOFZlnDZof9KwnWAefEMbAa1A4mjhvXAEtV8ETNEOOGtYdxp2Mc6uYxbMS5Ri/lVSEG7DT9E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1670923022; h=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=wlaRanZghZfZD4QMfY00NJi1XM7KOnldjOOzm9vzI+0=; b=nCl8BHXoUgd8Uqg2V61hfTtog7S6BS0c7eQZSQ2NyG5C2d44JOwP2Gxukxh7W0qUzRo7MY13Bq/w1AhocjbIx9X/YtpCmfT5HfdsCrM5j3XrN6vGe7zfDnz5LLPuwZJxP/0CJ0WMFJ0unPbPGtKuS9SP3HWBxvyVEWh5GWgX/Uc= ARC-Authentication-Results: i=1; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1670923022556371.20725657329103; Tue, 13 Dec 2022 01:17:02 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p512t-0006N2-Lo; Tue, 13 Dec 2022 03:53:51 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p512j-0006FK-FV for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:53:42 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p512h-0002w8-LV for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:53:41 -0500 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-543-xuwyTFBBN9un6HTsVIgNdA-1; Tue, 13 Dec 2022 03:53:35 -0500 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 2057B805AC5; Tue, 13 Dec 2022 08:53:35 +0000 (UTC) Received: from merkur.redhat.com (unknown [10.39.192.221]) by smtp.corp.redhat.com (Postfix) with ESMTP id 07C20492C1B; Tue, 13 Dec 2022 08:53:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1670921619; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=wlaRanZghZfZD4QMfY00NJi1XM7KOnldjOOzm9vzI+0=; b=BQOiCjsmw0Cg1xXGrtNqEB0qMS7MOBkumweHc2D91XoI9rl509zp/9oOymoMJCZwELbYBh IN6YeJysWKcb0szVMC54dGpnBg44arO7GjToeiCX82u6R2SMLzkCpWrh1M+uyM4THRdiY6 gzkIMgILss1E8Z20tvxzZRL8p2PslHA= X-MC-Unique: xuwyTFBBN9un6HTsVIgNdA-1 From: Kevin Wolf To: qemu-block@nongnu.org Cc: kwolf@redhat.com, hreitz@redhat.com, eesposit@redhat.com, pbonzini@redhat.com, vsementsov@yandex-team.ru, qemu-devel@nongnu.org Subject: [PATCH 03/14] block: Convert bdrv_io_unplug() to co_wrapper Date: Tue, 13 Dec 2022 09:53:09 +0100 Message-Id: <20221213085320.95673-4-kwolf@redhat.com> In-Reply-To: <20221213085320.95673-1-kwolf@redhat.com> References: <20221213085320.95673-1-kwolf@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 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=170.10.129.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.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, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=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.29 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1670923024395100003 Content-Type: text/plain; charset="utf-8" From: Emanuele Giuseppe Esposito BlockDriver->bdrv_io_unplug is categorized as IO callback, and it currently doesn't run in a coroutine. We should let it take a graph rdlock since the callback traverses the block nodes graph, which however is only possible in a coroutine. The only caller of this function is blk_io_unplug(), therefore make blk_io_unplug() a co_wrapper, so that we're always running in a coroutine where the lock can be taken. Signed-off-by: Emanuele Giuseppe Esposito Signed-off-by: Kevin Wolf Reviewed-by: Emanuele Giuseppe Esposito --- include/block/block-io.h | 3 +-- include/block/block_int-common.h | 2 +- include/sysemu/block-backend-io.h | 4 +++- block/block-backend.c | 4 ++-- block/io.c | 4 ++-- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/include/block/block-io.h b/include/block/block-io.h index d96168375e..3bf201f7f4 100644 --- a/include/block/block-io.h +++ b/include/block/block-io.h @@ -218,8 +218,7 @@ void bdrv_coroutine_enter(BlockDriverState *bs, Corouti= ne *co); AioContext *child_of_bds_get_parent_aio_context(BdrvChild *c); =20 void coroutine_fn bdrv_co_io_plug(BlockDriverState *bs); - -void bdrv_io_unplug(BlockDriverState *bs); +void coroutine_fn bdrv_co_io_unplug(BlockDriverState *bs); =20 bool coroutine_fn bdrv_co_can_store_new_dirty_bitmap(BlockDriverState *bs, const char *name, diff --git a/include/block/block_int-common.h b/include/block/block_int-com= mon.h index 4a1c1e348a..adccb4e540 100644 --- a/include/block/block_int-common.h +++ b/include/block/block_int-common.h @@ -730,7 +730,7 @@ struct BlockDriver { =20 /* io queue for linux-aio */ void coroutine_fn (*bdrv_io_plug)(BlockDriverState *bs); - void (*bdrv_io_unplug)(BlockDriverState *bs); + void coroutine_fn (*bdrv_io_unplug)(BlockDriverState *bs); =20 /** * bdrv_drain_begin is called if implemented in the beginning of a diff --git a/include/sysemu/block-backend-io.h b/include/sysemu/block-backe= nd-io.h index 70b73f7d11..d8cc8d74f5 100644 --- a/include/sysemu/block-backend-io.h +++ b/include/sysemu/block-backend-io.h @@ -76,7 +76,9 @@ int blk_get_max_hw_iov(BlockBackend *blk); void coroutine_fn blk_co_io_plug(BlockBackend *blk); void co_wrapper blk_io_plug(BlockBackend *blk); =20 -void blk_io_unplug(BlockBackend *blk); +void coroutine_fn blk_co_io_unplug(BlockBackend *blk); +void co_wrapper blk_io_unplug(BlockBackend *blk); + AioContext *blk_get_aio_context(BlockBackend *blk); BlockAcctStats *blk_get_stats(BlockBackend *blk); void *blk_aio_get(const AIOCBInfo *aiocb_info, BlockBackend *blk, diff --git a/block/block-backend.c b/block/block-backend.c index f862fd1950..5a357f504a 100644 --- a/block/block-backend.c +++ b/block/block-backend.c @@ -2325,13 +2325,13 @@ void coroutine_fn blk_co_io_plug(BlockBackend *blk) } } =20 -void blk_io_unplug(BlockBackend *blk) +void coroutine_fn blk_co_io_unplug(BlockBackend *blk) { BlockDriverState *bs =3D blk_bs(blk); IO_CODE(); =20 if (bs) { - bdrv_io_unplug(bs); + bdrv_co_io_unplug(bs); } } =20 diff --git a/block/io.c b/block/io.c index 3d27836420..c33672e90a 100644 --- a/block/io.c +++ b/block/io.c @@ -3144,7 +3144,7 @@ void coroutine_fn bdrv_co_io_plug(BlockDriverState *b= s) } } =20 -void bdrv_io_unplug(BlockDriverState *bs) +void coroutine_fn bdrv_co_io_unplug(BlockDriverState *bs) { BdrvChild *child; IO_CODE(); @@ -3158,7 +3158,7 @@ void bdrv_io_unplug(BlockDriverState *bs) } =20 QLIST_FOREACH(child, &bs->children, next) { - bdrv_io_unplug(child->bs); + bdrv_co_io_unplug(child->bs); } } =20 --=20 2.38.1 From nobody Sat May 18 22:31:18 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; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1670921700; cv=none; d=zohomail.com; s=zohoarc; b=TKWCHLXC6ixCt6T99KbDhN/I92HocR8uwV7fXVKK8u9F4nT8VNg6ygOwcP/IEv68TY17sG/55Zyc7msQaBuRL52YGCHfmwac1isGbDbmtbCwM/REUGABlYzfNYlTP3fcSD7muW8XbeK6b+I1Y+CYbqT//zr3C5opEVAsBMic1bE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1670921700; h=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=k9YCQqJU1mj7sKW4bWO/nKZ+VNStZiBLJs64igUlTlk=; b=IaDEEwtXY/4+UiLdLc4pDDxUSo6UDgA9FdA+5DwJFaJGXWyBiZb+mfcqV7nEE0+WgWqCw0ui2SV2LQgKHdCWnUuI18FI3y7BjTPrJf5igYLNUSnnFIeKO5leybhE7UuQh5MrUtOB7u7jq762LYYP91/T7yqvJbCKNyYJNuBYtG8= ARC-Authentication-Results: i=1; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1670921700215793.7869557600582; Tue, 13 Dec 2022 00:55:00 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p512u-0006Nx-RQ; Tue, 13 Dec 2022 03:53:52 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p512j-0006FI-ED for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:53:42 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p512g-0002vJ-M9 for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:53:40 -0500 Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-639-C39s2rT9OHayPIIdtgY_iA-1; Tue, 13 Dec 2022 03:53:36 -0500 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 71FE0296A612; Tue, 13 Dec 2022 08:53:36 +0000 (UTC) Received: from merkur.redhat.com (unknown [10.39.192.221]) by smtp.corp.redhat.com (Postfix) with ESMTP id 58D7D492C14; Tue, 13 Dec 2022 08:53:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1670921618; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=k9YCQqJU1mj7sKW4bWO/nKZ+VNStZiBLJs64igUlTlk=; b=fouV208ijzuPJJXM+XPFeKr0LMKMXN0pxD2HNbRz4A/iahg/3lzNqx98IKufjMxfeirHx6 4UOBACD22a3CNElEW0TZVvWmY4hnUITPorox18Hl2D7HAgOnR4nJjYkijKLSxMJPPSu+sf 51gyPy8CkDm4ci0In28cwinNSjBlbHc= X-MC-Unique: C39s2rT9OHayPIIdtgY_iA-1 From: Kevin Wolf To: qemu-block@nongnu.org Cc: kwolf@redhat.com, hreitz@redhat.com, eesposit@redhat.com, pbonzini@redhat.com, vsementsov@yandex-team.ru, qemu-devel@nongnu.org Subject: [PATCH 04/14] block: Rename refresh_total_sectors to bdrv_refresh_total_sectors Date: Tue, 13 Dec 2022 09:53:10 +0100 Message-Id: <20221213085320.95673-5-kwolf@redhat.com> In-Reply-To: <20221213085320.95673-1-kwolf@redhat.com> References: <20221213085320.95673-1-kwolf@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 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=170.10.129.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.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, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=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.29 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1670921700756100001 Content-Type: text/plain; charset="utf-8" From: Emanuele Giuseppe Esposito The name is not good, not the least because we are going to convert this to a generated co_wrapper, which adds a _co infix after the first part of the name. No functional change intended. Signed-off-by: Emanuele Giuseppe Esposito Signed-off-by: Kevin Wolf Reviewed-by: Emanuele Giuseppe Esposito Reviewed-by: Vladimir Sementsov-Ogievskiy --- include/block/block_int-io.h | 2 +- block.c | 8 ++++---- block/io.c | 8 +++++--- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/include/block/block_int-io.h b/include/block/block_int-io.h index 8bc061ebb8..6b285fb520 100644 --- a/include/block/block_int-io.h +++ b/include/block/block_int-io.h @@ -120,7 +120,7 @@ int coroutine_fn bdrv_co_copy_range_to(BdrvChild *src, = int64_t src_offset, BdrvRequestFlags read_flags, BdrvRequestFlags write_flags); =20 -int refresh_total_sectors(BlockDriverState *bs, int64_t hint); +int bdrv_refresh_total_sectors(BlockDriverState *bs, int64_t hint); =20 BdrvChild *bdrv_cow_child(BlockDriverState *bs); BdrvChild *bdrv_filter_child(BlockDriverState *bs); diff --git a/block.c b/block.c index 9c2ac757e4..fdcd06d05d 100644 --- a/block.c +++ b/block.c @@ -1034,7 +1034,7 @@ static int find_image_format(BlockBackend *file, cons= t char *filename, * Set the current 'total_sectors' value * Return 0 on success, -errno on error. */ -int refresh_total_sectors(BlockDriverState *bs, int64_t hint) +int bdrv_refresh_total_sectors(BlockDriverState *bs, int64_t hint) { BlockDriver *drv =3D bs->drv; IO_CODE(); @@ -1651,7 +1651,7 @@ static int bdrv_open_driver(BlockDriverState *bs, Blo= ckDriver *drv, bs->supported_read_flags |=3D BDRV_REQ_REGISTERED_BUF; bs->supported_write_flags |=3D BDRV_REQ_REGISTERED_BUF; =20 - ret =3D refresh_total_sectors(bs, bs->total_sectors); + ret =3D bdrv_refresh_total_sectors(bs, bs->total_sectors); if (ret < 0) { error_setg_errno(errp, -ret, "Could not refresh total sector count= "); return ret; @@ -5808,7 +5808,7 @@ int64_t bdrv_nb_sectors(BlockDriverState *bs) return -ENOMEDIUM; =20 if (drv->has_variable_length) { - int ret =3D refresh_total_sectors(bs, bs->total_sectors); + int ret =3D bdrv_refresh_total_sectors(bs, bs->total_sectors); if (ret < 0) { return ret; } @@ -6590,7 +6590,7 @@ int bdrv_activate(BlockDriverState *bs, Error **errp) bdrv_dirty_bitmap_skip_store(bm, false); } =20 - ret =3D refresh_total_sectors(bs, bs->total_sectors); + ret =3D bdrv_refresh_total_sectors(bs, bs->total_sectors); if (ret < 0) { bs->open_flags |=3D BDRV_O_INACTIVE; error_setg_errno(errp, -ret, "Could not refresh total sector c= ount"); diff --git a/block/io.c b/block/io.c index c33672e90a..3940026dc1 100644 --- a/block/io.c +++ b/block/io.c @@ -3464,15 +3464,17 @@ int coroutine_fn bdrv_co_truncate(BdrvChild *child,= int64_t offset, bool exact, goto out; } =20 - ret =3D refresh_total_sectors(bs, offset >> BDRV_SECTOR_BITS); + ret =3D bdrv_refresh_total_sectors(bs, offset >> BDRV_SECTOR_BITS); if (ret < 0) { error_setg_errno(errp, -ret, "Could not refresh total sector count= "); } else { offset =3D bs->total_sectors * BDRV_SECTOR_SIZE; } - /* It's possible that truncation succeeded but refresh_total_sectors + /* + * It's possible that truncation succeeded but bdrv_refresh_total_sect= ors * failed, but the latter doesn't affect how we should finish the requ= est. - * Pass 0 as the last parameter so that dirty bitmaps etc. are handled= . */ + * Pass 0 as the last parameter so that dirty bitmaps etc. are handled. + */ bdrv_co_write_req_finish(child, offset - new_bytes, new_bytes, &req, 0= ); =20 out: --=20 2.38.1 From nobody Sat May 18 22:31:18 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; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1670922621; cv=none; d=zohomail.com; s=zohoarc; b=XrTiu8G4ShdbqHhwpt/lqmucvYE+BqFVutPzIrlUix7wRjv9x9Jmz8hgGTHtsf5GJyXQri2PmOvuWfNzfmQk1RD/wSttpQdY3F+8+9inrg4H3jLhnND56qPU9kHS5sSwnhud8yRtyqgrlSzBgppsZDKIE5vmQmBSPOEpXMpJbSI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1670922621; h=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=ofQsHMVEKqYjNoxBrvrtpbtIpDKuJEhBWsOUKD5ta+g=; b=nZMKuKEosZHMOTjowfo86c3HV9WzgtpuFvmvp70el5gh3ZrU8Mmo/eKnGAxx/BEYjD2B/faBazGpOH732syX674yWCNJ0anwP7AREPf+hedbpozsXRL9XZMgUwWvYGuZFGlonCpvbql0TizRraAYCwTCa4e2wk6FhiC6qQabTSk= ARC-Authentication-Results: i=1; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1670922621523930.4202285874263; Tue, 13 Dec 2022 01:10:21 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p512x-0006QC-2o; Tue, 13 Dec 2022 03:53:55 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p512u-0006NS-9v for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:53:52 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p512r-000319-Sv for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:53:52 -0500 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-615-9_wbktHgNoGwQWZjeqdiHw-1; Tue, 13 Dec 2022 03:53:38 -0500 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id C3BED800960; Tue, 13 Dec 2022 08:53:37 +0000 (UTC) Received: from merkur.redhat.com (unknown [10.39.192.221]) by smtp.corp.redhat.com (Postfix) with ESMTP id AB189492C14; Tue, 13 Dec 2022 08:53:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1670921628; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ofQsHMVEKqYjNoxBrvrtpbtIpDKuJEhBWsOUKD5ta+g=; b=YAVJzMSGg1fAax3zpMsOR9rg1D39ygfGZdtiNVWPpTSVYtHISt2e6HERYmBTLsV9qD3gGt +QzC+0GHP4cRDggx0yMru/AqYy9GISUaE94lZ4LgYemjoMCcYTMG+ApvhrSIB7FtHEa+6B sDksaqWgWUHF/mS+bN3JBvS8fBFUlaM= X-MC-Unique: 9_wbktHgNoGwQWZjeqdiHw-1 From: Kevin Wolf To: qemu-block@nongnu.org Cc: kwolf@redhat.com, hreitz@redhat.com, eesposit@redhat.com, pbonzini@redhat.com, vsementsov@yandex-team.ru, qemu-devel@nongnu.org Subject: [PATCH 05/14] block: Convert bdrv_refresh_total_sectors() to co_wrapper_mixed Date: Tue, 13 Dec 2022 09:53:11 +0100 Message-Id: <20221213085320.95673-6-kwolf@redhat.com> In-Reply-To: <20221213085320.95673-1-kwolf@redhat.com> References: <20221213085320.95673-1-kwolf@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 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=170.10.129.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.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, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=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.29 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1670922623307100003 Content-Type: text/plain; charset="utf-8" From: Emanuele Giuseppe Esposito BlockDriver->bdrv_getlength is categorized as IO callback, and it currently doesn't run in a coroutine. We should let it take a graph rdlock since the callback traverses the block nodes graph, which however is only possible in a coroutine. Therefore turn it into a co_wrapper to move the actual function into a coroutine where the lock can be taken. Because now this function creates a new coroutine and polls, we need to take the AioContext lock where it is missing, for the only reason that internally co_wrapper calls AIO_WAIT_WHILE and it expects to release the AioContext lock. This is especially messy when a co_wrapper creates a coroutine and polls in bdrv_open_driver, because this function has so many callers in so many context that it can easily lead to deadlocks. Therefore the new rule for bdrv_open_driver is that the caller must always hold the AioContext lock of the given bs (except if it is a coroutine), because the function calls bdrv_refresh_total_sectors() which is now a co_wrapper. Once the rwlock is ultimated and placed in every place it needs to be, we will poll using AIO_WAIT_WHILE_UNLOCKED and remove the AioContext lock. Signed-off-by: Emanuele Giuseppe Esposito Signed-off-by: Kevin Wolf Reviewed-by: Emanuele Giuseppe Esposito --- include/block/block-io.h | 8 ++++++-- include/block/block_int-common.h | 2 +- include/block/block_int-io.h | 5 ++++- include/sysemu/block-backend-io.h | 10 ++++++++-- block.c | 26 +++++++++++++++++++++----- block/block-backend.c | 10 ++++++---- block/commit.c | 4 ++-- block/mirror.c | 4 ++-- hw/scsi/scsi-disk.c | 5 +++++ tests/unit/test-block-iothread.c | 3 +++ block/meson.build | 1 + 11 files changed, 59 insertions(+), 19 deletions(-) diff --git a/include/block/block-io.h b/include/block/block-io.h index 3bf201f7f4..fe1fa339be 100644 --- a/include/block/block-io.h +++ b/include/block/block-io.h @@ -73,8 +73,12 @@ int coroutine_fn bdrv_co_truncate(BdrvChild *child, int6= 4_t offset, bool exact, PreallocMode prealloc, BdrvRequestFlags = flags, Error **errp); =20 -int64_t bdrv_nb_sectors(BlockDriverState *bs); -int64_t bdrv_getlength(BlockDriverState *bs); +int64_t coroutine_fn bdrv_co_nb_sectors(BlockDriverState *bs); +int64_t co_wrapper_mixed bdrv_nb_sectors(BlockDriverState *bs); + +int64_t coroutine_fn bdrv_co_getlength(BlockDriverState *bs); +int64_t co_wrapper_mixed bdrv_getlength(BlockDriverState *bs); + int64_t bdrv_get_allocated_file_size(BlockDriverState *bs); BlockMeasureInfo *bdrv_measure(BlockDriver *drv, QemuOpts *opts, BlockDriverState *in_bs, Error **errp); diff --git a/include/block/block_int-common.h b/include/block/block_int-com= mon.h index adccb4e540..0e705e08f4 100644 --- a/include/block/block_int-common.h +++ b/include/block/block_int-common.h @@ -684,7 +684,7 @@ struct BlockDriver { int coroutine_fn (*bdrv_co_truncate)(BlockDriverState *bs, int64_t off= set, bool exact, PreallocMode prealloc, BdrvRequestFlags flags, Error **e= rrp); - int64_t (*bdrv_getlength)(BlockDriverState *bs); + int64_t coroutine_fn (*bdrv_getlength)(BlockDriverState *bs); int64_t (*bdrv_get_allocated_file_size)(BlockDriverState *bs); BlockMeasureInfo *(*bdrv_measure)(QemuOpts *opts, BlockDriverState *in= _bs, Error **errp); diff --git a/include/block/block_int-io.h b/include/block/block_int-io.h index 6b285fb520..d1559a501f 100644 --- a/include/block/block_int-io.h +++ b/include/block/block_int-io.h @@ -120,7 +120,10 @@ int coroutine_fn bdrv_co_copy_range_to(BdrvChild *src,= int64_t src_offset, BdrvRequestFlags read_flags, BdrvRequestFlags write_flags); =20 -int bdrv_refresh_total_sectors(BlockDriverState *bs, int64_t hint); +int coroutine_fn bdrv_co_refresh_total_sectors(BlockDriverState *bs, + int64_t hint); +int co_wrapper_mixed +bdrv_refresh_total_sectors(BlockDriverState *bs, int64_t hint); =20 BdrvChild *bdrv_cow_child(BlockDriverState *bs); BdrvChild *bdrv_filter_child(BlockDriverState *bs); diff --git a/include/sysemu/block-backend-io.h b/include/sysemu/block-backe= nd-io.h index d8cc8d74f5..8ad8854ecb 100644 --- a/include/sysemu/block-backend-io.h +++ b/include/sysemu/block-backend-io.h @@ -57,9 +57,15 @@ bool blk_is_inserted(BlockBackend *blk); bool blk_is_available(BlockBackend *blk); void blk_lock_medium(BlockBackend *blk, bool locked); void blk_eject(BlockBackend *blk, bool eject_flag); -int64_t blk_getlength(BlockBackend *blk); + +int64_t coroutine_fn blk_co_getlength(BlockBackend *blk); +int64_t co_wrapper_mixed blk_getlength(BlockBackend *blk); + void blk_get_geometry(BlockBackend *blk, uint64_t *nb_sectors_ptr); -int64_t blk_nb_sectors(BlockBackend *blk); + +int64_t coroutine_fn blk_co_nb_sectors(BlockBackend *blk); +int64_t co_wrapper_mixed blk_nb_sectors(BlockBackend *blk); + void *blk_try_blockalign(BlockBackend *blk, size_t size); void *blk_blockalign(BlockBackend *blk, size_t size); bool blk_is_writable(BlockBackend *blk); diff --git a/block.c b/block.c index fdcd06d05d..e1a8f7af4d 100644 --- a/block.c +++ b/block.c @@ -1034,7 +1034,8 @@ static int find_image_format(BlockBackend *file, cons= t char *filename, * Set the current 'total_sectors' value * Return 0 on success, -errno on error. */ -int bdrv_refresh_total_sectors(BlockDriverState *bs, int64_t hint) +int coroutine_fn bdrv_co_refresh_total_sectors(BlockDriverState *bs, + int64_t hint) { BlockDriver *drv =3D bs->drv; IO_CODE(); @@ -1600,6 +1601,11 @@ out: g_free(gen_node_name); } =20 +/* + * The caller must always hold @bs AioContext lock, because this function = calls + * bdrv_refresh_total_sectors() which polls when called from non-coroutine + * context. + */ static int bdrv_open_driver(BlockDriverState *bs, BlockDriver *drv, const char *node_name, QDict *options, int open_flags, Error **errp) @@ -3795,6 +3801,10 @@ out: * The reference parameter may be used to specify an existing block device= which * should be opened. If specified, neither options nor a filename may be g= iven, * nor can an existing BDS be reused (that is, *pbs has to be NULL). + * + * The caller must always hold @filename AioContext lock, because this + * function eventually calls bdrv_refresh_total_sectors() which polls + * when called from non-coroutine context. */ static BlockDriverState *bdrv_open_inherit(const char *filename, const char *reference, @@ -4083,6 +4093,11 @@ close_and_fail: return NULL; } =20 +/* + * The caller must always hold @filename AioContext lock, because this + * function eventually calls bdrv_refresh_total_sectors() which polls + * when called from non-coroutine context. + */ BlockDriverState *bdrv_open(const char *filename, const char *reference, QDict *options, int flags, Error **errp) { @@ -5799,7 +5814,7 @@ BlockMeasureInfo *bdrv_measure(BlockDriver *drv, Qemu= Opts *opts, /** * Return number of sectors on success, -errno on error. */ -int64_t bdrv_nb_sectors(BlockDriverState *bs) +int64_t coroutine_fn bdrv_co_nb_sectors(BlockDriverState *bs) { BlockDriver *drv =3D bs->drv; IO_CODE(); @@ -5808,7 +5823,7 @@ int64_t bdrv_nb_sectors(BlockDriverState *bs) return -ENOMEDIUM; =20 if (drv->has_variable_length) { - int ret =3D bdrv_refresh_total_sectors(bs, bs->total_sectors); + int ret =3D bdrv_co_refresh_total_sectors(bs, bs->total_sectors); if (ret < 0) { return ret; } @@ -5820,11 +5835,12 @@ int64_t bdrv_nb_sectors(BlockDriverState *bs) * Return length in bytes on success, -errno on error. * The length is always a multiple of BDRV_SECTOR_SIZE. */ -int64_t bdrv_getlength(BlockDriverState *bs) +int64_t coroutine_fn bdrv_co_getlength(BlockDriverState *bs) { - int64_t ret =3D bdrv_nb_sectors(bs); + int64_t ret; IO_CODE(); =20 + ret =3D bdrv_co_nb_sectors(bs); if (ret < 0) { return ret; } diff --git a/block/block-backend.c b/block/block-backend.c index 5a357f504a..0194d86113 100644 --- a/block/block-backend.c +++ b/block/block-backend.c @@ -1599,14 +1599,15 @@ BlockAIOCB *blk_aio_pwrite_zeroes(BlockBackend *blk= , int64_t offset, flags | BDRV_REQ_ZERO_WRITE, cb, opaque); } =20 -int64_t blk_getlength(BlockBackend *blk) +int64_t coroutine_fn blk_co_getlength(BlockBackend *blk) { IO_CODE(); + if (!blk_is_available(blk)) { return -ENOMEDIUM; } =20 - return bdrv_getlength(blk_bs(blk)); + return bdrv_co_getlength(blk_bs(blk)); } =20 void blk_get_geometry(BlockBackend *blk, uint64_t *nb_sectors_ptr) @@ -1619,14 +1620,15 @@ void blk_get_geometry(BlockBackend *blk, uint64_t *= nb_sectors_ptr) } } =20 -int64_t blk_nb_sectors(BlockBackend *blk) +int64_t coroutine_fn blk_co_nb_sectors(BlockBackend *blk) { IO_CODE(); + if (!blk_is_available(blk)) { return -ENOMEDIUM; } =20 - return bdrv_nb_sectors(blk_bs(blk)); + return bdrv_co_nb_sectors(blk_bs(blk)); } =20 BlockAIOCB *blk_aio_preadv(BlockBackend *blk, int64_t offset, diff --git a/block/commit.c b/block/commit.c index b346341767..41e3599281 100644 --- a/block/commit.c +++ b/block/commit.c @@ -123,13 +123,13 @@ static int coroutine_fn commit_run(Job *job, Error **= errp) QEMU_AUTO_VFREE void *buf =3D NULL; int64_t len, base_len; =20 - len =3D blk_getlength(s->top); + len =3D blk_co_getlength(s->top); if (len < 0) { return len; } job_progress_set_remaining(&s->common.job, len); =20 - base_len =3D blk_getlength(s->base); + base_len =3D blk_co_getlength(s->base); if (base_len < 0) { return base_len; } diff --git a/block/mirror.c b/block/mirror.c index 251adc5ae0..c7d7ce2f8f 100644 --- a/block/mirror.c +++ b/block/mirror.c @@ -909,13 +909,13 @@ static int coroutine_fn mirror_run(Job *job, Error **= errp) goto immediate_exit; } =20 - s->bdev_length =3D bdrv_getlength(bs); + s->bdev_length =3D bdrv_co_getlength(bs); if (s->bdev_length < 0) { ret =3D s->bdev_length; goto immediate_exit; } =20 - target_length =3D blk_getlength(s->target); + target_length =3D blk_co_getlength(s->target); if (target_length < 0) { ret =3D target_length; goto immediate_exit; diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c index e493c28814..d4e360850f 100644 --- a/hw/scsi/scsi-disk.c +++ b/hw/scsi/scsi-disk.c @@ -2332,10 +2332,15 @@ static void scsi_disk_reset(DeviceState *dev) { SCSIDiskState *s =3D DO_UPCAST(SCSIDiskState, qdev.qdev, dev); uint64_t nb_sectors; + AioContext *ctx; =20 scsi_device_purge_requests(&s->qdev, SENSE_CODE(RESET)); =20 + ctx =3D blk_get_aio_context(s->qdev.conf.blk); + aio_context_acquire(ctx); blk_get_geometry(s->qdev.conf.blk, &nb_sectors); + aio_context_release(ctx); + nb_sectors /=3D s->qdev.blocksize / BDRV_SECTOR_SIZE; if (nb_sectors) { nb_sectors--; diff --git a/tests/unit/test-block-iothread.c b/tests/unit/test-block-iothr= ead.c index 8ca5adec5e..e444aa707d 100644 --- a/tests/unit/test-block-iothread.c +++ b/tests/unit/test-block-iothread.c @@ -831,7 +831,10 @@ static void test_attach_second_node(void) qdict_put_str(options, "driver", "raw"); qdict_put_str(options, "file", "base"); =20 + aio_context_acquire(ctx); filter =3D bdrv_open(NULL, NULL, options, BDRV_O_RDWR, &error_abort); + aio_context_release(ctx); + g_assert(blk_get_aio_context(blk) =3D=3D ctx); g_assert(bdrv_get_aio_context(bs) =3D=3D ctx); g_assert(bdrv_get_aio_context(filter) =3D=3D ctx); diff --git a/block/meson.build b/block/meson.build index 90011a2805..3662852dc2 100644 --- a/block/meson.build +++ b/block/meson.build @@ -139,6 +139,7 @@ block_gen_c =3D custom_target('block-gen.c', input: files( '../include/block/block-io.h', '../include/block/dirty-bitmap.h', + '../include/block/block_int-io.h', '../include/block/block-global-state= .h', '../include/sysemu/block-backend-io.= h', 'coroutines.h' --=20 2.38.1 From nobody Sat May 18 22:31:18 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; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1670921682; cv=none; d=zohomail.com; s=zohoarc; b=AxRcwuEVCa0fNTODMllNwO8bRzmUFQ6Oa4SwrgymMuVeH4jb2XjhjX1oozzS2QKPEo3ySy49w1RArmzQH/EAnd1P86cazIkakQDT9byGiAsxUMy/9ScsLBlRzxraAuVBEg82DtFHhetORjAieBwFyN0sA9CCcJd9HiD7ijOiRek= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1670921682; h=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=4CgTAo3S8Cbyv5Ix1t3NJgdQD7vkj6R9TQIdbUgqEgQ=; b=QP3IbAhs5+iH2MNzPoMNO0UFku9vxexwPWDPHLE19pc0leSb2Vs0a58wRT7Vuf+wMIGJqQDvtVMxCMA02G1MrMbfxa4MHpdN1Hq/PfH66MNxpM/ah8pTd/20vx0+Lgmtp6CVShxXM64tDkX7ezC7zr3PwAlvh2xgJNhkGtvM/Ls= ARC-Authentication-Results: i=1; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1670921682890429.57032964894233; Tue, 13 Dec 2022 00:54:42 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p512u-0006NM-Ae; Tue, 13 Dec 2022 03:53:52 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p512l-0006Fj-0N for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:53:44 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p512j-0002xq-Hd for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:53:42 -0500 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-607-4WSeK0n2NEuh3K_fqFz82A-1; Tue, 13 Dec 2022 03:53:39 -0500 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 21658185A78B; Tue, 13 Dec 2022 08:53:39 +0000 (UTC) Received: from merkur.redhat.com (unknown [10.39.192.221]) by smtp.corp.redhat.com (Postfix) with ESMTP id 08AAB492C14; Tue, 13 Dec 2022 08:53:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1670921620; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=4CgTAo3S8Cbyv5Ix1t3NJgdQD7vkj6R9TQIdbUgqEgQ=; b=QEVIvfHVVLEqvYIhLiKLWl3zyV7dVjojX3/xKZp5Cs9mT3xlDnbQNYS534c1xxXmUl5sB8 cdtPIc3bCaFPEJc7MmYZELBaHsytuX5d6Tqiu63Pr2LtqhNJzJzJkWgP+fY2wzDahM5Bml UECN0bos3Qfd/eHKiyuuax9Eg8p46Ew= X-MC-Unique: 4WSeK0n2NEuh3K_fqFz82A-1 From: Kevin Wolf To: qemu-block@nongnu.org Cc: kwolf@redhat.com, hreitz@redhat.com, eesposit@redhat.com, pbonzini@redhat.com, vsementsov@yandex-team.ru, qemu-devel@nongnu.org Subject: [PATCH 06/14] block-backend: use bdrv_getlength instead of blk_getlength Date: Tue, 13 Dec 2022 09:53:12 +0100 Message-Id: <20221213085320.95673-7-kwolf@redhat.com> In-Reply-To: <20221213085320.95673-1-kwolf@redhat.com> References: <20221213085320.95673-1-kwolf@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 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=170.10.129.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.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, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=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.29 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1670921685229100005 Content-Type: text/plain; charset="utf-8" From: Emanuele Giuseppe Esposito The only difference is that blk_ checks if the block is available, but this check is already performed above in blk_check_byte_request(). This is in preparation for the graph rdlock, which will be taken by both the callers of blk_check_byte_request() and blk_getlength(). Signed-off-by: Emanuele Giuseppe Esposito Signed-off-by: Kevin Wolf Reviewed-by: Emanuele Giuseppe Esposito Reviewed-by: Vladimir Sementsov-Ogievskiy --- block/block-backend.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/block/block-backend.c b/block/block-backend.c index 0194d86113..5b8da86772 100644 --- a/block/block-backend.c +++ b/block/block-backend.c @@ -1253,7 +1253,7 @@ static int blk_check_byte_request(BlockBackend *blk, = int64_t offset, } =20 if (!blk->allow_write_beyond_eof) { - len =3D blk_getlength(blk); + len =3D bdrv_getlength(blk_bs(blk)); if (len < 0) { return len; } --=20 2.38.1 From nobody Sat May 18 22:31:18 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; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1670922287; cv=none; d=zohomail.com; s=zohoarc; b=kKIh5++D5rbsjAxgSxpGSuj6ndQ8Is9Ih5P5lb4HNV1Q5B8WEmK2cSW7/S6JzL/Z5IMYAknhXXuU3mPAQlaLL6KxnRb5CaEGHOp870C9nED9+zztZ4foHgRfmdfTnvX8IBezm3jBr4ewcO1fGFb+OmBbyDiPolCC8OaK9XsF7OE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1670922287; h=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=LZ6InHFofFQKxuOZxHqzQtgc0l/JTD74KtOmAt68oxM=; b=TjG7JlWoi75dzVSXyVj6oQZkfN7ohW+6UZYoGklqF2W+/Fiv8wPKeQBYo7+aYITNREVZ4GJtXkHT2Xw30M3eeoqcdvHJ+6efZMBYO2Z7NRshhLUml9kEpCdDuVIsHO8gX/z83T4QTlZIHuOlgWvJHDIObVJZxmuPaGuWs0D7nZs= ARC-Authentication-Results: i=1; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1670922287833652.4404597864187; Tue, 13 Dec 2022 01:04:47 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p512x-0006QD-48; Tue, 13 Dec 2022 03:53:55 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p512o-0006K5-CM for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:53:46 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p512m-0002zS-RM for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:53:46 -0500 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-652-xRGVgNL1MVewm6usbZ6IEA-1; Tue, 13 Dec 2022 03:53:40 -0500 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 74F83101A528; Tue, 13 Dec 2022 08:53:40 +0000 (UTC) Received: from merkur.redhat.com (unknown [10.39.192.221]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5B405492C14; Tue, 13 Dec 2022 08:53:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1670921624; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=LZ6InHFofFQKxuOZxHqzQtgc0l/JTD74KtOmAt68oxM=; b=bTyU13QqxOZ9OwypfKe+2lawAoPxmNj1mbOLG1xge8+imrfiupngvL5ESk/YDOjJOVFkWP 92WlxW50blhRRbo2tkaqHe1BLLav7EnTdazmqzTnxbJPn4OREuDa/hVOeHCWLwckPD8LDV e77YD4YIAbHijx/NFgZ2CyrAyoxL/58= X-MC-Unique: xRGVgNL1MVewm6usbZ6IEA-1 From: Kevin Wolf To: qemu-block@nongnu.org Cc: kwolf@redhat.com, hreitz@redhat.com, eesposit@redhat.com, pbonzini@redhat.com, vsementsov@yandex-team.ru, qemu-devel@nongnu.org Subject: [PATCH 07/14] block: use bdrv_co_refresh_total_sectors when possible Date: Tue, 13 Dec 2022 09:53:13 +0100 Message-Id: <20221213085320.95673-8-kwolf@redhat.com> In-Reply-To: <20221213085320.95673-1-kwolf@redhat.com> References: <20221213085320.95673-1-kwolf@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 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=170.10.133.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.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, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=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.29 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1670922289196100001 Content-Type: text/plain; charset="utf-8" From: Emanuele Giuseppe Esposito In some places we are sure we are always running in a coroutine, therefore it's useless to call the generated_co_wrapper, instead call directly the _co_ function. Signed-off-by: Emanuele Giuseppe Esposito Signed-off-by: Kevin Wolf Reviewed-by: Emanuele Giuseppe Esposito --- block/block-backend.c | 6 +++--- block/copy-on-read.c | 2 +- block/io.c | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/block/block-backend.c b/block/block-backend.c index 5b8da86772..5f6b269a79 100644 --- a/block/block-backend.c +++ b/block/block-backend.c @@ -1235,8 +1235,8 @@ void blk_set_disable_request_queuing(BlockBackend *bl= k, bool disable) blk->disable_request_queuing =3D disable; } =20 -static int blk_check_byte_request(BlockBackend *blk, int64_t offset, - int64_t bytes) +static coroutine_fn int blk_check_byte_request(BlockBackend *blk, + int64_t offset, int64_t byt= es) { int64_t len; =20 @@ -1253,7 +1253,7 @@ static int blk_check_byte_request(BlockBackend *blk, = int64_t offset, } =20 if (!blk->allow_write_beyond_eof) { - len =3D bdrv_getlength(blk_bs(blk)); + len =3D bdrv_co_getlength(blk_bs(blk)); if (len < 0) { return len; } diff --git a/block/copy-on-read.c b/block/copy-on-read.c index 815ac1d835..74f7727a02 100644 --- a/block/copy-on-read.c +++ b/block/copy-on-read.c @@ -122,7 +122,7 @@ static void cor_child_perm(BlockDriverState *bs, BdrvCh= ild *c, =20 static int64_t cor_getlength(BlockDriverState *bs) { - return bdrv_getlength(bs->file->bs); + return bdrv_co_getlength(bs->file->bs); } =20 =20 diff --git a/block/io.c b/block/io.c index 3940026dc1..aef0929202 100644 --- a/block/io.c +++ b/block/io.c @@ -3434,7 +3434,7 @@ int coroutine_fn bdrv_co_truncate(BdrvChild *child, i= nt64_t offset, bool exact, if (new_bytes && backing) { int64_t backing_len; =20 - backing_len =3D bdrv_getlength(backing->bs); + backing_len =3D bdrv_co_getlength(backing->bs); if (backing_len < 0) { ret =3D backing_len; error_setg_errno(errp, -ret, "Could not get backing file size"= ); @@ -3464,7 +3464,7 @@ int coroutine_fn bdrv_co_truncate(BdrvChild *child, i= nt64_t offset, bool exact, goto out; } =20 - ret =3D bdrv_refresh_total_sectors(bs, offset >> BDRV_SECTOR_BITS); + ret =3D bdrv_co_refresh_total_sectors(bs, offset >> BDRV_SECTOR_BITS); if (ret < 0) { error_setg_errno(errp, -ret, "Could not refresh total sector count= "); } else { --=20 2.38.1 From nobody Sat May 18 22:31:18 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; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1670922056; cv=none; d=zohomail.com; s=zohoarc; b=nrAPXYKLCMGWlfpW2Hn7eixIHsfuLaSv73zlhsFXFBMgv3S4aRto9BQCI3nvPC0AWjesXlcwSwmSLAEEj6KqP8cz9FOVQ8x6ePpqKPmiR3hqyEBQt7YYbvibA45zf89ILl1XIdXROmxCKvLzTIE9vsLUTAbHRigGHXTcLp0AbIo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1670922056; h=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=rAUzh+Os3ogDaHUpnfJv1Euz+IEfCB6WHkXw9eTHgeE=; b=cvROO2KFtWMUHMqHWsr929lFlqNiq0faYMwGZHvALXapGpxoxnY2Xo/BL0hhyXDzUWR+okCj4rteQO/GmRmwY5g5HJutUSdD81mkB7ADwJBYLMG6omuYa8urm14qHM3EKh372WFkbQY/5q5rCxPWPX34dTb7LA5jZyEUh3cOcGE= ARC-Authentication-Results: i=1; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1670922055954933.7886098907336; Tue, 13 Dec 2022 01:00:55 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p512z-0006Sg-Qr; Tue, 13 Dec 2022 03:53:57 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p512p-0006LE-SG for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:53:48 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p512o-000307-4r for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:53:47 -0500 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-85-6ZPvM6H8OxKxuVRJdXgNpw-1; Tue, 13 Dec 2022 03:53:42 -0500 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id C9ADE8038E7; Tue, 13 Dec 2022 08:53:41 +0000 (UTC) Received: from merkur.redhat.com (unknown [10.39.192.221]) by smtp.corp.redhat.com (Postfix) with ESMTP id AF0E4492C14; Tue, 13 Dec 2022 08:53:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1670921625; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=rAUzh+Os3ogDaHUpnfJv1Euz+IEfCB6WHkXw9eTHgeE=; b=PFGrCYd+y9YnlmSXIMqbxWD+X5Q4V8I9goLCVLqfooHmqIqiS41H1vA1y5UjTfpi0Gyny4 mA0IKM1xxd63SvpJ4Kq9XrtpHeVXGsCAsUaVLVnljXx4KtS2vCIqD6SpRy1SMie+3e0I1T dxLSLrKZ9R/9uGfHlcYWqu2Z7TjKAQk= X-MC-Unique: 6ZPvM6H8OxKxuVRJdXgNpw-1 From: Kevin Wolf To: qemu-block@nongnu.org Cc: kwolf@redhat.com, hreitz@redhat.com, eesposit@redhat.com, pbonzini@redhat.com, vsementsov@yandex-team.ru, qemu-devel@nongnu.org Subject: [PATCH 08/14] block: Convert bdrv_get_allocated_file_size() to co_wrapper Date: Tue, 13 Dec 2022 09:53:14 +0100 Message-Id: <20221213085320.95673-9-kwolf@redhat.com> In-Reply-To: <20221213085320.95673-1-kwolf@redhat.com> References: <20221213085320.95673-1-kwolf@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 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=170.10.129.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.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, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=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.29 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1670922058235100001 Content-Type: text/plain; charset="utf-8" From: Emanuele Giuseppe Esposito bdrv_get_allocated_file_size() is categorized as an I/O function, and it currently doesn't run in a coroutine. We should let it take a graph rdlock since it traverses the block nodes graph, which however is only possible in a coroutine. Therefore turn it into a co_wrapper to move the actual function into a coroutine where the lock can be taken. Signed-off-by: Emanuele Giuseppe Esposito Signed-off-by: Kevin Wolf Reviewed-by: Emanuele Giuseppe Esposito --- include/block/block-io.h | 4 +++- include/block/block_int-common.h | 3 ++- block.c | 6 +++--- block/qcow2-refcount.c | 2 +- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/include/block/block-io.h b/include/block/block-io.h index fe1fa339be..b1c6abee7b 100644 --- a/include/block/block-io.h +++ b/include/block/block-io.h @@ -79,7 +79,9 @@ int64_t co_wrapper_mixed bdrv_nb_sectors(BlockDriverState= *bs); int64_t coroutine_fn bdrv_co_getlength(BlockDriverState *bs); int64_t co_wrapper_mixed bdrv_getlength(BlockDriverState *bs); =20 -int64_t bdrv_get_allocated_file_size(BlockDriverState *bs); +int64_t coroutine_fn bdrv_co_get_allocated_file_size(BlockDriverState *bs); +int64_t co_wrapper bdrv_get_allocated_file_size(BlockDriverState *bs); + BlockMeasureInfo *bdrv_measure(BlockDriver *drv, QemuOpts *opts, BlockDriverState *in_bs, Error **errp); void bdrv_get_geometry(BlockDriverState *bs, uint64_t *nb_sectors_ptr); diff --git a/include/block/block_int-common.h b/include/block/block_int-com= mon.h index 0e705e08f4..7b324c3bfc 100644 --- a/include/block/block_int-common.h +++ b/include/block/block_int-common.h @@ -685,7 +685,8 @@ struct BlockDriver { bool exact, PreallocMode prealloc, BdrvRequestFlags flags, Error **e= rrp); int64_t coroutine_fn (*bdrv_getlength)(BlockDriverState *bs); - int64_t (*bdrv_get_allocated_file_size)(BlockDriverState *bs); + int64_t coroutine_fn (*bdrv_get_allocated_file_size)(BlockDriverState = *bs); + BlockMeasureInfo *(*bdrv_measure)(QemuOpts *opts, BlockDriverState *in= _bs, Error **errp); =20 diff --git a/block.c b/block.c index e1a8f7af4d..f3d6693113 100644 --- a/block.c +++ b/block.c @@ -5732,7 +5732,7 @@ static int64_t bdrv_sum_allocated_file_size(BlockDriv= erState *bs) if (child->role & (BDRV_CHILD_DATA | BDRV_CHILD_METADATA | BDRV_CHILD_FILTERED)) { - child_size =3D bdrv_get_allocated_file_size(child->bs); + child_size =3D bdrv_co_get_allocated_file_size(child->bs); if (child_size < 0) { return child_size; } @@ -5747,7 +5747,7 @@ static int64_t bdrv_sum_allocated_file_size(BlockDriv= erState *bs) * Length of a allocated file in bytes. Sparse files are counted by actual * allocated space. Return < 0 if error or unknown. */ -int64_t bdrv_get_allocated_file_size(BlockDriverState *bs) +int64_t coroutine_fn bdrv_co_get_allocated_file_size(BlockDriverState *bs) { BlockDriver *drv =3D bs->drv; IO_CODE(); @@ -5768,7 +5768,7 @@ int64_t bdrv_get_allocated_file_size(BlockDriverState= *bs) return -ENOTSUP; } else if (drv->is_filter) { /* Filter drivers default to the size of their filtered child */ - return bdrv_get_allocated_file_size(bdrv_filter_bs(bs)); + return bdrv_co_get_allocated_file_size(bdrv_filter_bs(bs)); } else { /* Other drivers default to summing their children's sizes */ return bdrv_sum_allocated_file_size(bs); diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c index 81264740f0..487681d85e 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -3719,7 +3719,7 @@ int coroutine_fn qcow2_detect_metadata_preallocation(= BlockDriverState *bs) return file_length; } =20 - real_allocation =3D bdrv_get_allocated_file_size(bs->file->bs); + real_allocation =3D bdrv_co_get_allocated_file_size(bs->file->bs); if (real_allocation < 0) { return real_allocation; } --=20 2.38.1 From nobody Sat May 18 22:31:18 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; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1670923539; cv=none; d=zohomail.com; s=zohoarc; b=hf0qJEe5ZgqamRnT2MWD2IE1oEkU3VIWsSFj6W7ki+v/a+J4Bn0ajdywykrRByWFldbn8Gaxh2W5injkexgbh80w/V8p1e+fmgs410iC1v5n+927U7lSwM6bBjXcMc/SAQZktt4y+FPpliarPoDAb0kifKhztHVuULTBuAi8D2E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1670923539; h=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=JJCgakwC0FuKF/QQXUJqdhYyrwEbk0YhblkFzIp+hTI=; b=VA/g/oY3nu3CnNdfemIeq1YVes/5ZZXYe9MJSnJP0OHJjKv3JJk81+zsOPftDkM8JOB3bWiKdaab1vf62pZ3/1lHIHAsEk9hIQHmcZm4M8WBU6tamD0wDADOGTtC9dFuNOKErD0BD852HwgOELbtA900iMfIPk2sc5ZjEBle9G0= ARC-Authentication-Results: i=1; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1670923539010468.5191182942425; Tue, 13 Dec 2022 01:25:39 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p5130-0006TB-7A; Tue, 13 Dec 2022 03:53:58 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p512p-0006LF-SW for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:53:48 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p512n-0002zu-LI for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:53:47 -0500 Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-428-DZFmYB3GPlarpiS-Ff8hUg-1; Tue, 13 Dec 2022 03:53:43 -0500 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 2E58C2932491; Tue, 13 Dec 2022 08:53:43 +0000 (UTC) Received: from merkur.redhat.com (unknown [10.39.192.221]) by smtp.corp.redhat.com (Postfix) with ESMTP id 12D3E492C14; Tue, 13 Dec 2022 08:53:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1670921624; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=JJCgakwC0FuKF/QQXUJqdhYyrwEbk0YhblkFzIp+hTI=; b=dgtE3/tTbth62CNAifSzl/25TQDk3dR2rEoet/NVWGfe7gSNxBBzBIsbF74mDYq/rCJLD3 fx5gVjNFlOsp43Jvrb2n6JulKeUVXTrQWMjdrZ/5LrD3NtnqXLL8vt4jR6ZHs/Sw86+bJ6 hfrOBBe8S0o1QKpbZeJc70OJ4E+zj18= X-MC-Unique: DZFmYB3GPlarpiS-Ff8hUg-1 From: Kevin Wolf To: qemu-block@nongnu.org Cc: kwolf@redhat.com, hreitz@redhat.com, eesposit@redhat.com, pbonzini@redhat.com, vsementsov@yandex-team.ru, qemu-devel@nongnu.org Subject: [PATCH 09/14] block: Convert bdrv_get_info() to co_wrapper_mixed Date: Tue, 13 Dec 2022 09:53:15 +0100 Message-Id: <20221213085320.95673-10-kwolf@redhat.com> In-Reply-To: <20221213085320.95673-1-kwolf@redhat.com> References: <20221213085320.95673-1-kwolf@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 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=170.10.133.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.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, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=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.29 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1670923539713100001 Content-Type: text/plain; charset="utf-8" From: Emanuele Giuseppe Esposito bdrv_get_info() is categorized as an I/O function, and it currently doesn't run in a coroutine. We should let it take a graph rdlock since it traverses the block nodes graph, which however is only possible in a coroutine. Therefore turn it into a co_wrapper to move the actual function into a coroutine where the lock can be taken. Signed-off-by: Emanuele Giuseppe Esposito Signed-off-by: Kevin Wolf Reviewed-by: Emanuele Giuseppe Esposito --- include/block/block-io.h | 5 ++++- include/block/block_int-common.h | 3 ++- block.c | 4 ++-- block/crypto.c | 2 +- block/io.c | 8 ++++---- block/mirror.c | 2 +- block/raw-format.c | 2 +- 7 files changed, 15 insertions(+), 11 deletions(-) diff --git a/include/block/block-io.h b/include/block/block-io.h index b1c6abee7b..1d6748463c 100644 --- a/include/block/block-io.h +++ b/include/block/block-io.h @@ -148,7 +148,10 @@ bool bdrv_supports_compressed_writes(BlockDriverState = *bs); const char *bdrv_get_node_name(const BlockDriverState *bs); const char *bdrv_get_device_name(const BlockDriverState *bs); const char *bdrv_get_device_or_node_name(const BlockDriverState *bs); -int bdrv_get_info(BlockDriverState *bs, BlockDriverInfo *bdi); + +int coroutine_fn bdrv_co_get_info(BlockDriverState *bs, BlockDriverInfo *b= di); +int co_wrapper_mixed bdrv_get_info(BlockDriverState *bs, BlockDriverInfo *= bdi); + ImageInfoSpecific *bdrv_get_specific_info(BlockDriverState *bs, Error **errp); BlockStatsSpecific *bdrv_get_specific_stats(BlockDriverState *bs); diff --git a/include/block/block_int-common.h b/include/block/block_int-com= mon.h index 7b324c3bfc..2c190c6d75 100644 --- a/include/block/block_int-common.h +++ b/include/block/block_int-common.h @@ -696,7 +696,8 @@ struct BlockDriver { int64_t offset, int64_t bytes, QEMUIOVector *qiov, size_t qiov_offset); =20 - int (*bdrv_get_info)(BlockDriverState *bs, BlockDriverInfo *bdi); + int coroutine_fn (*bdrv_get_info)(BlockDriverState *bs, + BlockDriverInfo *bdi); =20 ImageInfoSpecific *(*bdrv_get_specific_info)(BlockDriverState *bs, Error **errp); diff --git a/block.c b/block.c index f3d6693113..7694879a54 100644 --- a/block.c +++ b/block.c @@ -6300,7 +6300,7 @@ void bdrv_get_backing_filename(BlockDriverState *bs, pstrcpy(filename, filename_size, bs->backing_file); } =20 -int bdrv_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) +int coroutine_fn bdrv_co_get_info(BlockDriverState *bs, BlockDriverInfo *b= di) { int ret; BlockDriver *drv =3D bs->drv; @@ -6312,7 +6312,7 @@ int bdrv_get_info(BlockDriverState *bs, BlockDriverIn= fo *bdi) if (!drv->bdrv_get_info) { BlockDriverState *filtered =3D bdrv_filter_bs(bs); if (filtered) { - return bdrv_get_info(filtered, bdi); + return bdrv_co_get_info(filtered, bdi); } return -ENOTSUP; } diff --git a/block/crypto.c b/block/crypto.c index bbeb9f437c..1b4a9eb8e7 100644 --- a/block/crypto.c +++ b/block/crypto.c @@ -743,7 +743,7 @@ static int block_crypto_get_info_luks(BlockDriverState = *bs, BlockDriverInfo subbdi; int ret; =20 - ret =3D bdrv_get_info(bs->file->bs, &subbdi); + ret =3D bdrv_co_get_info(bs->file->bs, &subbdi); if (ret !=3D 0) { return ret; } diff --git a/block/io.c b/block/io.c index aef0929202..f988e42f26 100644 --- a/block/io.c +++ b/block/io.c @@ -712,14 +712,14 @@ BdrvTrackedRequest *coroutine_fn bdrv_co_get_self_req= uest(BlockDriverState *bs) /** * Round a region to cluster boundaries */ -void bdrv_round_to_clusters(BlockDriverState *bs, +void coroutine_fn bdrv_round_to_clusters(BlockDriverState *bs, int64_t offset, int64_t bytes, int64_t *cluster_offset, int64_t *cluster_bytes) { BlockDriverInfo bdi; IO_CODE(); - if (bdrv_get_info(bs, &bdi) < 0 || bdi.cluster_size =3D=3D 0) { + if (bdrv_co_get_info(bs, &bdi) < 0 || bdi.cluster_size =3D=3D 0) { *cluster_offset =3D offset; *cluster_bytes =3D bytes; } else { @@ -729,12 +729,12 @@ void bdrv_round_to_clusters(BlockDriverState *bs, } } =20 -static int bdrv_get_cluster_size(BlockDriverState *bs) +static coroutine_fn int bdrv_get_cluster_size(BlockDriverState *bs) { BlockDriverInfo bdi; int ret; =20 - ret =3D bdrv_get_info(bs, &bdi); + ret =3D bdrv_co_get_info(bs, &bdi); if (ret < 0 || bdi.cluster_size =3D=3D 0) { return bs->bl.request_alignment; } else { diff --git a/block/mirror.c b/block/mirror.c index c7d7ce2f8f..26db3ad0d7 100644 --- a/block/mirror.c +++ b/block/mirror.c @@ -956,7 +956,7 @@ static int coroutine_fn mirror_run(Job *job, Error **er= rp) */ bdrv_get_backing_filename(target_bs, backing_filename, sizeof(backing_filename)); - if (!bdrv_get_info(target_bs, &bdi) && bdi.cluster_size) { + if (!bdrv_co_get_info(target_bs, &bdi) && bdi.cluster_size) { s->target_cluster_size =3D bdi.cluster_size; } else { s->target_cluster_size =3D BDRV_SECTOR_SIZE; diff --git a/block/raw-format.c b/block/raw-format.c index 28905b09ee..39a2f20df1 100644 --- a/block/raw-format.c +++ b/block/raw-format.c @@ -369,7 +369,7 @@ static BlockMeasureInfo *raw_measure(QemuOpts *opts, Bl= ockDriverState *in_bs, =20 static int raw_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) { - return bdrv_get_info(bs->file->bs, bdi); + return bdrv_co_get_info(bs->file->bs, bdi); } =20 static void raw_refresh_limits(BlockDriverState *bs, Error **errp) --=20 2.38.1 From nobody Sat May 18 22:31:18 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; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1670921922; cv=none; d=zohomail.com; s=zohoarc; b=e5NeMNy9lh45IYzyYpq0ZP2iv7AoMmWhyqCO7qf8Ly8KfptEZHcl1nrNBMwZnrC/JgtGW9lBDMZlhXDMnEq/b6Ue0ME2ALLPGVEUnGAm6dAcLg0Yn1rWHD3Yw5U3tcuY73A1vUEpO4tEOuLkHU0p9FehNAKY/Y1z7IPZV4lpqWI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1670921922; h=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=F4PHvUYJmDh8HCJMx8spZm9+fkjWIvZWDWBVTqPMvc0=; b=Zus95A0PpmouZ9bZWnEzaMz7dDffV7dAvqqKvqd22TpP/0xSGyPahEidYdanm04icSXvpSSI+G1fUZt3bNfLFleolW/A4tS9xtrcJIO6CrG6ReUkbUm3NWaniPU8Oujhr+KOBcqF3yTqA6ewA3Ka/wqMXc+q+BGiq2rqclHH/Ug= ARC-Authentication-Results: i=1; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1670921922011554.2598220923145; Tue, 13 Dec 2022 00:58:42 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p5131-0006UO-6T; Tue, 13 Dec 2022 03:53:59 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p512s-0006Mb-Ef for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:53:51 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p512q-00030w-IT for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:53:50 -0500 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-303-ByRMvPl5MQWXWH0ExACzFw-1; Tue, 13 Dec 2022 03:53:44 -0500 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 833FA801580; Tue, 13 Dec 2022 08:53:44 +0000 (UTC) Received: from merkur.redhat.com (unknown [10.39.192.221]) by smtp.corp.redhat.com (Postfix) with ESMTP id 69808492C14; Tue, 13 Dec 2022 08:53:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1670921628; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=F4PHvUYJmDh8HCJMx8spZm9+fkjWIvZWDWBVTqPMvc0=; b=XXW+hPQWLkZyLuwjKYX5sFVLTCdb5mtLQlW2ujphv1/Oc6fHLJ4PY1K/vOnHj/BNtE1ZKc 3/l1aLmol7z7GlLNazfVkpRWJAJkTUMzD6f7TMhpjupAnziy9Iyb+U5fBN9zUA0IpH4m2K nGHnPUJ5qSjfjO7vcZ/n6VRPwqqrG6Y= X-MC-Unique: ByRMvPl5MQWXWH0ExACzFw-1 From: Kevin Wolf To: qemu-block@nongnu.org Cc: kwolf@redhat.com, hreitz@redhat.com, eesposit@redhat.com, pbonzini@redhat.com, vsementsov@yandex-team.ru, qemu-devel@nongnu.org Subject: [PATCH 10/14] block: Convert bdrv_is_inserted() to co_wrapper Date: Tue, 13 Dec 2022 09:53:16 +0100 Message-Id: <20221213085320.95673-11-kwolf@redhat.com> In-Reply-To: <20221213085320.95673-1-kwolf@redhat.com> References: <20221213085320.95673-1-kwolf@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 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=170.10.129.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.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, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=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.29 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1670921924125100001 Content-Type: text/plain; charset="utf-8" From: Emanuele Giuseppe Esposito bdrv_is_inserted() is categorized as an I/O function, and it currently doesn't run in a coroutine. We should let it take a graph rdlock since it traverses the block nodes graph, which however is only possible in a coroutine. Therefore turn it into a co_wrapper to move the actual function into a coroutine where the lock can be taken. At the same time, add also blk_is_inserted as co_wrapper_mixed, since it is called in both coroutine and non-coroutine contexts. Because now this function creates a new coroutine and polls, we need to take the AioContext lock where it is missing, for the only reason that internally c_w_mixed_bdrv_rdlock calls AIO_WAIT_WHILE and it expects to release the AioContext lock. Once the rwlock is ultimated and placed in every place it needs to be, we will poll using AIO_WAIT_WHILE_UNLOCKED and remove the AioContext lock. Signed-off-by: Emanuele Giuseppe Esposito Signed-off-by: Kevin Wolf Reviewed-by: Emanuele Giuseppe Esposito --- include/block/block-io.h | 5 ++++- include/block/block_int-common.h | 2 +- include/sysemu/block-backend-io.h | 5 ++++- block.c | 4 ++-- block/block-backend.c | 4 ++-- block/io.c | 12 ++++++------ blockdev.c | 8 +++++++- 7 files changed, 26 insertions(+), 14 deletions(-) diff --git a/include/block/block-io.h b/include/block/block-io.h index 1d6748463c..e27dc9787b 100644 --- a/include/block/block-io.h +++ b/include/block/block-io.h @@ -139,7 +139,10 @@ bool bdrv_is_read_only(BlockDriverState *bs); bool bdrv_is_writable(BlockDriverState *bs); bool bdrv_is_sg(BlockDriverState *bs); int bdrv_get_flags(BlockDriverState *bs); -bool bdrv_is_inserted(BlockDriverState *bs); + +bool coroutine_fn bdrv_co_is_inserted(BlockDriverState *bs); +bool co_wrapper bdrv_is_inserted(BlockDriverState *bs); + void bdrv_lock_medium(BlockDriverState *bs, bool locked); void bdrv_eject(BlockDriverState *bs, bool eject_flag); const char *bdrv_get_format_name(BlockDriverState *bs); diff --git a/include/block/block_int-common.h b/include/block/block_int-com= mon.h index 2c190c6d75..b954b3cb36 100644 --- a/include/block/block_int-common.h +++ b/include/block/block_int-common.h @@ -710,7 +710,7 @@ struct BlockDriver { BlockDriverState *bs, QEMUIOVector *qiov, int64_t pos); =20 /* removable device specific */ - bool (*bdrv_is_inserted)(BlockDriverState *bs); + bool coroutine_fn (*bdrv_is_inserted)(BlockDriverState *bs); void (*bdrv_eject)(BlockDriverState *bs, bool eject_flag); void (*bdrv_lock_medium)(BlockDriverState *bs, bool locked); =20 diff --git a/include/sysemu/block-backend-io.h b/include/sysemu/block-backe= nd-io.h index 8ad8854ecb..a1eac6c00a 100644 --- a/include/sysemu/block-backend-io.h +++ b/include/sysemu/block-backend-io.h @@ -53,7 +53,10 @@ BlockAIOCB *blk_aio_ioctl(BlockBackend *blk, unsigned lo= ng int req, void *buf, =20 void blk_inc_in_flight(BlockBackend *blk); void blk_dec_in_flight(BlockBackend *blk); -bool blk_is_inserted(BlockBackend *blk); + +bool coroutine_fn blk_co_is_inserted(BlockBackend *blk); +bool co_wrapper_mixed blk_is_inserted(BlockBackend *blk); + bool blk_is_available(BlockBackend *blk); void blk_lock_medium(BlockBackend *blk, bool locked); void blk_eject(BlockBackend *blk, bool eject_flag); diff --git a/block.c b/block.c index 7694879a54..a7b9da6a7e 100644 --- a/block.c +++ b/block.c @@ -6797,7 +6797,7 @@ out: /** * Return TRUE if the media is present */ -bool bdrv_is_inserted(BlockDriverState *bs) +bool coroutine_fn bdrv_co_is_inserted(BlockDriverState *bs) { BlockDriver *drv =3D bs->drv; BdrvChild *child; @@ -6810,7 +6810,7 @@ bool bdrv_is_inserted(BlockDriverState *bs) return drv->bdrv_is_inserted(bs); } QLIST_FOREACH(child, &bs->children, next) { - if (!bdrv_is_inserted(child->bs)) { + if (!bdrv_co_is_inserted(child->bs)) { return false; } } diff --git a/block/block-backend.c b/block/block-backend.c index 5f6b269a79..e4b54f7b0c 100644 --- a/block/block-backend.c +++ b/block/block-backend.c @@ -1985,12 +1985,12 @@ void blk_activate(BlockBackend *blk, Error **errp) bdrv_activate(bs, errp); } =20 -bool blk_is_inserted(BlockBackend *blk) +bool coroutine_fn blk_co_is_inserted(BlockBackend *blk) { BlockDriverState *bs =3D blk_bs(blk); IO_CODE(); =20 - return bs && bdrv_is_inserted(bs); + return bs && bdrv_co_is_inserted(bs); } =20 bool blk_is_available(BlockBackend *blk) diff --git a/block/io.c b/block/io.c index f988e42f26..116d6cf10b 100644 --- a/block/io.c +++ b/block/io.c @@ -1612,7 +1612,7 @@ int coroutine_fn bdrv_co_preadv_part(BdrvChild *child, =20 trace_bdrv_co_preadv_part(bs, offset, bytes, flags); =20 - if (!bdrv_is_inserted(bs)) { + if (!bdrv_co_is_inserted(bs)) { return -ENOMEDIUM; } =20 @@ -2057,7 +2057,7 @@ int coroutine_fn bdrv_co_pwritev_part(BdrvChild *chil= d, =20 trace_bdrv_co_pwritev_part(child->bs, offset, bytes, flags); =20 - if (!bdrv_is_inserted(bs)) { + if (!bdrv_co_is_inserted(bs)) { return -ENOMEDIUM; } =20 @@ -2825,7 +2825,7 @@ int coroutine_fn bdrv_co_flush(BlockDriverState *bs) =20 bdrv_inc_in_flight(bs); =20 - if (!bdrv_is_inserted(bs) || bdrv_is_read_only(bs) || + if (!bdrv_co_is_inserted(bs) || bdrv_is_read_only(bs) || bdrv_is_sg(bs)) { goto early_exit; } @@ -2949,7 +2949,7 @@ int coroutine_fn bdrv_co_pdiscard(BdrvChild *child, i= nt64_t offset, BlockDriverState *bs =3D child->bs; IO_CODE(); =20 - if (!bs || !bs->drv || !bdrv_is_inserted(bs)) { + if (!bs || !bs->drv || !bdrv_co_is_inserted(bs)) { return -ENOMEDIUM; } =20 @@ -3231,7 +3231,7 @@ static int coroutine_fn bdrv_co_copy_range_internal( assert(!(read_flags & BDRV_REQ_NO_WAIT)); assert(!(write_flags & BDRV_REQ_NO_WAIT)); =20 - if (!dst || !dst->bs || !bdrv_is_inserted(dst->bs)) { + if (!dst || !dst->bs || !bdrv_co_is_inserted(dst->bs)) { return -ENOMEDIUM; } ret =3D bdrv_check_request32(dst_offset, bytes, NULL, 0); @@ -3242,7 +3242,7 @@ static int coroutine_fn bdrv_co_copy_range_internal( return bdrv_co_pwrite_zeroes(dst, dst_offset, bytes, write_flags); } =20 - if (!src || !src->bs || !bdrv_is_inserted(src->bs)) { + if (!src || !src->bs || !bdrv_co_is_inserted(src->bs)) { return -ENOMEDIUM; } ret =3D bdrv_check_request32(src_offset, bytes, NULL, 0); diff --git a/blockdev.c b/blockdev.c index 011e48df7b..cef3bc1215 100644 --- a/blockdev.c +++ b/blockdev.c @@ -1023,6 +1023,7 @@ fail: static BlockDriverState *qmp_get_root_bs(const char *name, Error **errp) { BlockDriverState *bs; + AioContext *aio_context; =20 bs =3D bdrv_lookup_bs(name, name, errp); if (bs =3D=3D NULL) { @@ -1034,11 +1035,16 @@ static BlockDriverState *qmp_get_root_bs(const char= *name, Error **errp) return NULL; } =20 + aio_context =3D bdrv_get_aio_context(bs); + aio_context_acquire(aio_context); + if (!bdrv_is_inserted(bs)) { error_setg(errp, "Device has no medium"); - return NULL; + bs =3D NULL; } =20 + aio_context_release(aio_context); + return bs; } =20 --=20 2.38.1 From nobody Sat May 18 22:31:18 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; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1670922544; cv=none; d=zohomail.com; s=zohoarc; b=bGW3nu+1ZI7z9sdaJpaWS2vlYvc7GvjtcXQNeGXZUF3Iba1fw3/TIn6GbhlRs6h0wIeb05Mn076Y7mHgz9cWiwFrjJzMDpuZj/hwz/7MxPtqCT21nEX8zuu3IbY6StCmtVK39nNCC4efRQK0NoD6Uhq6EnxJ8vVxU8g4+lJi7ZU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1670922544; h=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=a1MyXY1A7pp7cXRZYDLe74ELqzddIS8QBrGppTpmCno=; b=HBGNAyXmEpr+6wTm513Jw4JPhTCy+Oou1rZS8zW8+lVWP7JrhyKU/4J5W8jt8mBrZB3Mp8TU1qYTdAIUa0YMQ9+uz7l0fuduZ7FAVTQuKUVyNutjbgONIMJBQj0hI34BD8gGZ9cA9pV+a8IdmRWx3jXv7/FfckngzRiH2wxE78U= ARC-Authentication-Results: i=1; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1670922544170309.0321471009911; Tue, 13 Dec 2022 01:09:04 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p513A-0006We-OH; Tue, 13 Dec 2022 03:54:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p5139-0006WK-0b for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:54:07 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.145.221.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p5136-00033A-5K for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:54:05 -0500 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-86-IdxvcOJLP56Jt0Y56KNqWA-1; Tue, 13 Dec 2022 03:53:46 -0500 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id D9E2A801231; Tue, 13 Dec 2022 08:53:45 +0000 (UTC) Received: from merkur.redhat.com (unknown [10.39.192.221]) by smtp.corp.redhat.com (Postfix) with ESMTP id BD7CA492C18; Tue, 13 Dec 2022 08:53:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1670921642; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=a1MyXY1A7pp7cXRZYDLe74ELqzddIS8QBrGppTpmCno=; b=HqdQbslJZvQG9YLyJ5elR4QG4vCCjZsspDzkCt/BgWv58KlPKdzLJ3mI45PTwFLb8Lenme b2/Ma/U9q34oTtpn9L4SyBmphLAvAg0+1MM4mlRg15U+3NPl3LlL7EbyAn7yUhQ7xE3TEr ckkgQmj/zh6vKY5Kpptwsbty4HTlq64= X-MC-Unique: IdxvcOJLP56Jt0Y56KNqWA-1 From: Kevin Wolf To: qemu-block@nongnu.org Cc: kwolf@redhat.com, hreitz@redhat.com, eesposit@redhat.com, pbonzini@redhat.com, vsementsov@yandex-team.ru, qemu-devel@nongnu.org Subject: [PATCH 11/14] block: Convert bdrv_eject() to co_wrapper Date: Tue, 13 Dec 2022 09:53:17 +0100 Message-Id: <20221213085320.95673-12-kwolf@redhat.com> In-Reply-To: <20221213085320.95673-1-kwolf@redhat.com> References: <20221213085320.95673-1-kwolf@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 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: permerror client-ip=216.145.221.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.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, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_FAIL=0.001, SPF_HELO_NONE=0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1670922544711100001 Content-Type: text/plain; charset="utf-8" From: Emanuele Giuseppe Esposito bdrv_eject() is categorized as an I/O function, and it currently doesn't run in a coroutine. We should let it take a graph rdlock since it traverses the block nodes graph, which however is only possible in a coroutine. The only caller of this function is blk_eject(). Therefore make blk_eject() a co_wrapper, so that it always creates a new coroutine, and then make bdrv_eject() coroutine_fn where the lock can be taken. Signed-off-by: Emanuele Giuseppe Esposito Signed-off-by: Kevin Wolf Reviewed-by: Emanuele Giuseppe Esposito --- include/block/block-io.h | 3 ++- include/block/block_int-common.h | 2 +- include/sysemu/block-backend-io.h | 4 +++- block.c | 2 +- block/block-backend.c | 4 ++-- block/copy-on-read.c | 2 +- block/filter-compress.c | 2 +- block/raw-format.c | 2 +- 8 files changed, 12 insertions(+), 9 deletions(-) diff --git a/include/block/block-io.h b/include/block/block-io.h index e27dc9787b..f3d49ea05f 100644 --- a/include/block/block-io.h +++ b/include/block/block-io.h @@ -144,7 +144,8 @@ bool coroutine_fn bdrv_co_is_inserted(BlockDriverState = *bs); bool co_wrapper bdrv_is_inserted(BlockDriverState *bs); =20 void bdrv_lock_medium(BlockDriverState *bs, bool locked); -void bdrv_eject(BlockDriverState *bs, bool eject_flag); +void coroutine_fn bdrv_co_eject(BlockDriverState *bs, bool eject_flag); + const char *bdrv_get_format_name(BlockDriverState *bs); =20 bool bdrv_supports_compressed_writes(BlockDriverState *bs); diff --git a/include/block/block_int-common.h b/include/block/block_int-com= mon.h index b954b3cb36..fd31b37567 100644 --- a/include/block/block_int-common.h +++ b/include/block/block_int-common.h @@ -711,7 +711,7 @@ struct BlockDriver { =20 /* removable device specific */ bool coroutine_fn (*bdrv_is_inserted)(BlockDriverState *bs); - void (*bdrv_eject)(BlockDriverState *bs, bool eject_flag); + void coroutine_fn (*bdrv_eject)(BlockDriverState *bs, bool eject_flag); void (*bdrv_lock_medium)(BlockDriverState *bs, bool locked); =20 /* to control generic scsi devices */ diff --git a/include/sysemu/block-backend-io.h b/include/sysemu/block-backe= nd-io.h index a1eac6c00a..00209625e1 100644 --- a/include/sysemu/block-backend-io.h +++ b/include/sysemu/block-backend-io.h @@ -59,7 +59,9 @@ bool co_wrapper_mixed blk_is_inserted(BlockBackend *blk); =20 bool blk_is_available(BlockBackend *blk); void blk_lock_medium(BlockBackend *blk, bool locked); -void blk_eject(BlockBackend *blk, bool eject_flag); + +void coroutine_fn blk_co_eject(BlockBackend *blk, bool eject_flag); +void co_wrapper blk_eject(BlockBackend *blk, bool eject_flag); =20 int64_t coroutine_fn blk_co_getlength(BlockBackend *blk); int64_t co_wrapper_mixed blk_getlength(BlockBackend *blk); diff --git a/block.c b/block.c index a7b9da6a7e..11647e49db 100644 --- a/block.c +++ b/block.c @@ -6820,7 +6820,7 @@ bool coroutine_fn bdrv_co_is_inserted(BlockDriverStat= e *bs) /** * If eject_flag is TRUE, eject the media. Otherwise, close the tray */ -void bdrv_eject(BlockDriverState *bs, bool eject_flag) +void coroutine_fn bdrv_co_eject(BlockDriverState *bs, bool eject_flag) { BlockDriver *drv =3D bs->drv; IO_CODE(); diff --git a/block/block-backend.c b/block/block-backend.c index e4b54f7b0c..233ce6d05a 100644 --- a/block/block-backend.c +++ b/block/block-backend.c @@ -2009,14 +2009,14 @@ void blk_lock_medium(BlockBackend *blk, bool locked) } } =20 -void blk_eject(BlockBackend *blk, bool eject_flag) +void coroutine_fn blk_co_eject(BlockBackend *blk, bool eject_flag) { BlockDriverState *bs =3D blk_bs(blk); char *id; IO_CODE(); =20 if (bs) { - bdrv_eject(bs, eject_flag); + bdrv_co_eject(bs, eject_flag); } =20 /* Whether or not we ejected on the backend, diff --git a/block/copy-on-read.c b/block/copy-on-read.c index 74f7727a02..76f884a6ae 100644 --- a/block/copy-on-read.c +++ b/block/copy-on-read.c @@ -218,7 +218,7 @@ static int coroutine_fn cor_co_pwritev_compressed(Block= DriverState *bs, =20 static void cor_eject(BlockDriverState *bs, bool eject_flag) { - bdrv_eject(bs->file->bs, eject_flag); + bdrv_co_eject(bs->file->bs, eject_flag); } =20 =20 diff --git a/block/filter-compress.c b/block/filter-compress.c index 305716c86c..571e4684dd 100644 --- a/block/filter-compress.c +++ b/block/filter-compress.c @@ -118,7 +118,7 @@ static void compress_refresh_limits(BlockDriverState *b= s, Error **errp) =20 static void compress_eject(BlockDriverState *bs, bool eject_flag) { - bdrv_eject(bs->file->bs, eject_flag); + bdrv_co_eject(bs->file->bs, eject_flag); } =20 =20 diff --git a/block/raw-format.c b/block/raw-format.c index 39a2f20df1..efe1ef0265 100644 --- a/block/raw-format.c +++ b/block/raw-format.c @@ -405,7 +405,7 @@ static int coroutine_fn raw_co_truncate(BlockDriverStat= e *bs, int64_t offset, =20 static void raw_eject(BlockDriverState *bs, bool eject_flag) { - bdrv_eject(bs->file->bs, eject_flag); + bdrv_co_eject(bs->file->bs, eject_flag); } =20 static void raw_lock_medium(BlockDriverState *bs, bool locked) --=20 2.38.1 From nobody Sat May 18 22:31:18 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; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1670921682; cv=none; d=zohomail.com; s=zohoarc; b=bQHsoYHYfpqSwVMkOGLteU8gID2Qcm/QJUMSoyj0oyDe8xVBb7uJWIi4RZxawfWsfLACQ1P4O2jHs+UcQU7OR9Cu9XnoLzRqKXo72KRh+F5N51JGAas63lnSz44dKkmHpnQV3BqKGR0fJ2mF44RdAtdo9SraboNp4HD7bgyJxWg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1670921682; h=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=rDIT5R8xLa5n0OX6Q2beZjyG+PsX1tFuVapUyb7CGoI=; b=ChTIivBkFLHMd4AXDu0A/Kql83WPdWg7HuTMhQtDoH6jguFgxWbydbk/uaXQ0m6FgwRmeLXwOpyy9+7iiNyA573GR2D145y0GKbB7Ahx49c53/LQCxOiFiGN/kEcYvHn4mQVZ2oD6Tak5DzZbeVYhm96KFySJuptOq4qyiyGZAw= ARC-Authentication-Results: i=1; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1670921682827862.4748270828966; Tue, 13 Dec 2022 00:54:42 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p512w-0006Ps-LL; Tue, 13 Dec 2022 03:53:54 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p512t-0006N1-GM for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:53:51 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p512r-00031G-K2 for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:53:51 -0500 Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-623-P4rglM8ZPaayNTLiUfhnjQ-1; Tue, 13 Dec 2022 03:53:47 -0500 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 392592932491; Tue, 13 Dec 2022 08:53:47 +0000 (UTC) Received: from merkur.redhat.com (unknown [10.39.192.221]) by smtp.corp.redhat.com (Postfix) with ESMTP id 20239492C1B; Tue, 13 Dec 2022 08:53:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1670921629; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=rDIT5R8xLa5n0OX6Q2beZjyG+PsX1tFuVapUyb7CGoI=; b=NtEECSa+Rv+WX2SF630YAkfpA49lQKsOV+H3sPX/T2jEF4LKlsAB/TYHWukX04vULUmF/F at2wvMVzh8LJN1rU+ZnNdAKpUDl4LdXTFDBdr4tiSOkzHQ32p20euCBkAxRuO28F3O6acB AyV7HkNfcLI+vegR/FoUUswGZY12VXY= X-MC-Unique: P4rglM8ZPaayNTLiUfhnjQ-1 From: Kevin Wolf To: qemu-block@nongnu.org Cc: kwolf@redhat.com, hreitz@redhat.com, eesposit@redhat.com, pbonzini@redhat.com, vsementsov@yandex-team.ru, qemu-devel@nongnu.org Subject: [PATCH 12/14] block: convert bdrv_lock_medium in co_wrapper Date: Tue, 13 Dec 2022 09:53:18 +0100 Message-Id: <20221213085320.95673-13-kwolf@redhat.com> In-Reply-To: <20221213085320.95673-1-kwolf@redhat.com> References: <20221213085320.95673-1-kwolf@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 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=170.10.129.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.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, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=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.29 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1670921685252100006 Content-Type: text/plain; charset="utf-8" From: Emanuele Giuseppe Esposito bdrv_lock_medium() is categorized as an I/O function, and it currently doesn't run in a coroutine. We should let it take a graph rdlock since it traverses the block nodes graph, which however is only possible in a coroutine. The only caller of this function is blk_lock_medium(). Therefore make blk_lock_medium() a co_wrapper, so that it always creates a new coroutine, and then make bdrv_lock_medium() a coroutine_fn where the lock can be taken. Signed-off-by: Emanuele Giuseppe Esposito Signed-off-by: Kevin Wolf Reviewed-by: Emanuele Giuseppe Esposito --- include/block/block-io.h | 2 +- include/block/block_int-common.h | 2 +- include/sysemu/block-backend-io.h | 4 +++- block.c | 2 +- block/block-backend.c | 4 ++-- block/copy-on-read.c | 2 +- block/filter-compress.c | 2 +- block/raw-format.c | 2 +- 8 files changed, 11 insertions(+), 9 deletions(-) diff --git a/include/block/block-io.h b/include/block/block-io.h index f3d49ea05f..7e76bb647a 100644 --- a/include/block/block-io.h +++ b/include/block/block-io.h @@ -143,7 +143,7 @@ int bdrv_get_flags(BlockDriverState *bs); bool coroutine_fn bdrv_co_is_inserted(BlockDriverState *bs); bool co_wrapper bdrv_is_inserted(BlockDriverState *bs); =20 -void bdrv_lock_medium(BlockDriverState *bs, bool locked); +void coroutine_fn bdrv_co_lock_medium(BlockDriverState *bs, bool locked); void coroutine_fn bdrv_co_eject(BlockDriverState *bs, bool eject_flag); =20 const char *bdrv_get_format_name(BlockDriverState *bs); diff --git a/include/block/block_int-common.h b/include/block/block_int-com= mon.h index fd31b37567..0de99682e2 100644 --- a/include/block/block_int-common.h +++ b/include/block/block_int-common.h @@ -712,7 +712,7 @@ struct BlockDriver { /* removable device specific */ bool coroutine_fn (*bdrv_is_inserted)(BlockDriverState *bs); void coroutine_fn (*bdrv_eject)(BlockDriverState *bs, bool eject_flag); - void (*bdrv_lock_medium)(BlockDriverState *bs, bool locked); + void coroutine_fn (*bdrv_lock_medium)(BlockDriverState *bs, bool locke= d); =20 /* to control generic scsi devices */ BlockAIOCB *(*bdrv_aio_ioctl)(BlockDriverState *bs, diff --git a/include/sysemu/block-backend-io.h b/include/sysemu/block-backe= nd-io.h index 00209625e1..780c1e5f77 100644 --- a/include/sysemu/block-backend-io.h +++ b/include/sysemu/block-backend-io.h @@ -58,7 +58,9 @@ bool coroutine_fn blk_co_is_inserted(BlockBackend *blk); bool co_wrapper_mixed blk_is_inserted(BlockBackend *blk); =20 bool blk_is_available(BlockBackend *blk); -void blk_lock_medium(BlockBackend *blk, bool locked); + +void coroutine_fn blk_co_lock_medium(BlockBackend *blk, bool locked); +void co_wrapper blk_lock_medium(BlockBackend *blk, bool locked); =20 void coroutine_fn blk_co_eject(BlockBackend *blk, bool eject_flag); void co_wrapper blk_eject(BlockBackend *blk, bool eject_flag); diff --git a/block.c b/block.c index 11647e49db..d5e660bc9d 100644 --- a/block.c +++ b/block.c @@ -6834,7 +6834,7 @@ void coroutine_fn bdrv_co_eject(BlockDriverState *bs,= bool eject_flag) * Lock or unlock the media (if it is locked, the user won't be able * to eject it manually). */ -void bdrv_lock_medium(BlockDriverState *bs, bool locked) +void coroutine_fn bdrv_co_lock_medium(BlockDriverState *bs, bool locked) { BlockDriver *drv =3D bs->drv; IO_CODE(); diff --git a/block/block-backend.c b/block/block-backend.c index 233ce6d05a..fcc9ede031 100644 --- a/block/block-backend.c +++ b/block/block-backend.c @@ -1999,13 +1999,13 @@ bool blk_is_available(BlockBackend *blk) return blk_is_inserted(blk) && !blk_dev_is_tray_open(blk); } =20 -void blk_lock_medium(BlockBackend *blk, bool locked) +void coroutine_fn blk_co_lock_medium(BlockBackend *blk, bool locked) { BlockDriverState *bs =3D blk_bs(blk); IO_CODE(); =20 if (bs) { - bdrv_lock_medium(bs, locked); + bdrv_co_lock_medium(bs, locked); } } =20 diff --git a/block/copy-on-read.c b/block/copy-on-read.c index 76f884a6ae..ccc767f37b 100644 --- a/block/copy-on-read.c +++ b/block/copy-on-read.c @@ -224,7 +224,7 @@ static void cor_eject(BlockDriverState *bs, bool eject_= flag) =20 static void cor_lock_medium(BlockDriverState *bs, bool locked) { - bdrv_lock_medium(bs->file->bs, locked); + bdrv_co_lock_medium(bs->file->bs, locked); } =20 =20 diff --git a/block/filter-compress.c b/block/filter-compress.c index 571e4684dd..e10312c225 100644 --- a/block/filter-compress.c +++ b/block/filter-compress.c @@ -124,7 +124,7 @@ static void compress_eject(BlockDriverState *bs, bool e= ject_flag) =20 static void compress_lock_medium(BlockDriverState *bs, bool locked) { - bdrv_lock_medium(bs->file->bs, locked); + bdrv_co_lock_medium(bs->file->bs, locked); } =20 =20 diff --git a/block/raw-format.c b/block/raw-format.c index efe1ef0265..adc766bf79 100644 --- a/block/raw-format.c +++ b/block/raw-format.c @@ -410,7 +410,7 @@ static void raw_eject(BlockDriverState *bs, bool eject_= flag) =20 static void raw_lock_medium(BlockDriverState *bs, bool locked) { - bdrv_lock_medium(bs->file->bs, locked); + bdrv_co_lock_medium(bs->file->bs, locked); } =20 static int coroutine_fn raw_co_ioctl(BlockDriverState *bs, --=20 2.38.1 From nobody Sat May 18 22:31:18 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; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1670922856; cv=none; d=zohomail.com; s=zohoarc; b=V/0kYYGtpha/0/wOVP9QtffK90ya+yxjpG4E/BUZF44hfxNsPkdoCe1991wtuth8rsqK0KQGAYIUJVbso7qF1Wta3K4OU72Ocf60KqSkkhEIuV43APx+t7u/qRgqwgf4zQCqbPH47zVS053ckGKEa9E4EYX7miyFfI9SzmdiGhk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1670922856; h=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=OZwijoKOXthKmcXtDn1yguT6BOSW/bBIZKtPgek8VXw=; b=RREwGFrXI2QRA04SDxryL3TmwBrb7UiRqnvuvrqY242xZYnzj7Q83YFIf1qIR0hRwcU1RPRbezFrXfRnYKUobkWQ445+B4GmemD31RMlBToiQng21OyKwY9rvUzpPYHhyFKcJ0wTsGFNE3ABwDtzhoAFbaIFRf1w6VIWoJajqJo= ARC-Authentication-Results: i=1; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1670922856115176.5243643810188; Tue, 13 Dec 2022 01:14:16 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p5131-0006Uc-O2; Tue, 13 Dec 2022 03:53:59 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p512w-0006Pv-LE for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:53:54 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p512u-000321-UC for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:53:54 -0500 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-186-GLJWywAvMb652gNvDd_0Og-1; Tue, 13 Dec 2022 03:53:48 -0500 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 8C02E801231; Tue, 13 Dec 2022 08:53:48 +0000 (UTC) Received: from merkur.redhat.com (unknown [10.39.192.221]) by smtp.corp.redhat.com (Postfix) with ESMTP id 733E2492C14; Tue, 13 Dec 2022 08:53:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1670921632; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=OZwijoKOXthKmcXtDn1yguT6BOSW/bBIZKtPgek8VXw=; b=Wsei60GCZNYP6vd8fZfDMa7nTUMtBom00xcEI4bv9piqZlb06xbKFuOesBQ1oso9bO9jtq lNcgBTLF1c5k/1c6+qXImw8N75UkjJvXeEvxJmlhVfrSjX32eRaz7RDmoKn+bSs+zupEil eajzlywrmr5oqTdjNyZ9q6riJ3PhIwI= X-MC-Unique: GLJWywAvMb652gNvDd_0Og-1 From: Kevin Wolf To: qemu-block@nongnu.org Cc: kwolf@redhat.com, hreitz@redhat.com, eesposit@redhat.com, pbonzini@redhat.com, vsementsov@yandex-team.ru, qemu-devel@nongnu.org Subject: [PATCH 13/14] block: Convert bdrv_debug_event to co_wrapper_mixed Date: Tue, 13 Dec 2022 09:53:19 +0100 Message-Id: <20221213085320.95673-14-kwolf@redhat.com> In-Reply-To: <20221213085320.95673-1-kwolf@redhat.com> References: <20221213085320.95673-1-kwolf@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 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=170.10.133.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.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, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=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.29 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1670922857511100001 Content-Type: text/plain; charset="utf-8" From: Emanuele Giuseppe Esposito bdrv_debug_event() is categorized as an I/O function, and it currently doesn't run in a coroutine. We should let it take a graph rdlock since it traverses the block nodes graph, which however is only possible in a coroutine. Therefore turn it into a co_wrapper_mixed to move the actual function into a coroutine where the lock can be taken. Signed-off-by: Emanuele Giuseppe Esposito Signed-off-by: Kevin Wolf Reviewed-by: Emanuele Giuseppe Esposito --- include/block/block-io.h | 5 ++++- include/block/block_int-common.h | 3 ++- block.c | 2 +- block/io.c | 22 +++++++++++----------- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/include/block/block-io.h b/include/block/block-io.h index 7e76bb647a..9737fc63cb 100644 --- a/include/block/block-io.h +++ b/include/block/block-io.h @@ -188,7 +188,10 @@ void *qemu_try_blockalign0(BlockDriverState *bs, size_= t size); void bdrv_enable_copy_on_read(BlockDriverState *bs); void bdrv_disable_copy_on_read(BlockDriverState *bs); =20 -void bdrv_debug_event(BlockDriverState *bs, BlkdebugEvent event); +void coroutine_fn bdrv_co_debug_event(BlockDriverState *bs, + BlkdebugEvent event); +void co_wrapper_mixed bdrv_debug_event(BlockDriverState *bs, + BlkdebugEvent event); =20 #define BLKDBG_EVENT(child, evt) \ do { \ diff --git a/include/block/block_int-common.h b/include/block/block_int-com= mon.h index 0de99682e2..90702c6dcf 100644 --- a/include/block/block_int-common.h +++ b/include/block/block_int-common.h @@ -728,7 +728,8 @@ struct BlockDriver { int coroutine_fn GRAPH_RDLOCK_PTR (*bdrv_co_check)( BlockDriverState *bs, BdrvCheckResult *result, BdrvCheckMode fix); =20 - void (*bdrv_debug_event)(BlockDriverState *bs, BlkdebugEvent event); + void coroutine_fn (*bdrv_debug_event)(BlockDriverState *bs, + BlkdebugEvent event); =20 /* io queue for linux-aio */ void coroutine_fn (*bdrv_io_plug)(BlockDriverState *bs); diff --git a/block.c b/block.c index d5e660bc9d..d27105dd3b 100644 --- a/block.c +++ b/block.c @@ -6350,7 +6350,7 @@ BlockStatsSpecific *bdrv_get_specific_stats(BlockDriv= erState *bs) return drv->bdrv_get_specific_stats(bs); } =20 -void bdrv_debug_event(BlockDriverState *bs, BlkdebugEvent event) +void coroutine_fn bdrv_co_debug_event(BlockDriverState *bs, BlkdebugEvent = event) { IO_CODE(); if (!bs || !bs->drv || !bs->drv->bdrv_debug_event) { diff --git a/block/io.c b/block/io.c index 116d6cf10b..93ba851c8c 100644 --- a/block/io.c +++ b/block/io.c @@ -1241,7 +1241,7 @@ static int coroutine_fn bdrv_co_do_copy_on_readv(Bdrv= Child *child, goto err; } =20 - bdrv_debug_event(bs, BLKDBG_COR_WRITE); + bdrv_co_debug_event(bs, BLKDBG_COR_WRITE); if (drv->bdrv_co_pwrite_zeroes && buffer_is_zero(bounce_buffer, pnum)) { /* FIXME: Should we (perhaps conditionally) be setting @@ -1486,10 +1486,10 @@ static coroutine_fn int bdrv_padding_rmw_read(BdrvC= hild *child, qemu_iovec_init_buf(&local_qiov, pad->buf, bytes); =20 if (pad->head) { - bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_HEAD); + bdrv_co_debug_event(bs, BLKDBG_PWRITEV_RMW_HEAD); } if (pad->merge_reads && pad->tail) { - bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_TAIL); + bdrv_co_debug_event(bs, BLKDBG_PWRITEV_RMW_TAIL); } ret =3D bdrv_aligned_preadv(child, req, req->overlap_offset, bytes, align, &local_qiov, 0, 0); @@ -1497,10 +1497,10 @@ static coroutine_fn int bdrv_padding_rmw_read(BdrvC= hild *child, return ret; } if (pad->head) { - bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_AFTER_HEAD); + bdrv_co_debug_event(bs, BLKDBG_PWRITEV_RMW_AFTER_HEAD); } if (pad->merge_reads && pad->tail) { - bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_AFTER_TAIL); + bdrv_co_debug_event(bs, BLKDBG_PWRITEV_RMW_AFTER_TAIL); } =20 if (pad->merge_reads) { @@ -1511,7 +1511,7 @@ static coroutine_fn int bdrv_padding_rmw_read(BdrvChi= ld *child, if (pad->tail) { qemu_iovec_init_buf(&local_qiov, pad->tail_buf, align); =20 - bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_TAIL); + bdrv_co_debug_event(bs, BLKDBG_PWRITEV_RMW_TAIL); ret =3D bdrv_aligned_preadv( child, req, req->overlap_offset + req->overlap_bytes - align, @@ -1519,7 +1519,7 @@ static coroutine_fn int bdrv_padding_rmw_read(BdrvChi= ld *child, if (ret < 0) { return ret; } - bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_AFTER_TAIL); + bdrv_co_debug_event(bs, BLKDBG_PWRITEV_RMW_AFTER_TAIL); } =20 zero_mem: @@ -1921,16 +1921,16 @@ static int coroutine_fn bdrv_aligned_pwritev(BdrvCh= ild *child, if (ret < 0) { /* Do nothing, write notifier decided to fail this request */ } else if (flags & BDRV_REQ_ZERO_WRITE) { - bdrv_debug_event(bs, BLKDBG_PWRITEV_ZERO); + bdrv_co_debug_event(bs, BLKDBG_PWRITEV_ZERO); ret =3D bdrv_co_do_pwrite_zeroes(bs, offset, bytes, flags); } else if (flags & BDRV_REQ_WRITE_COMPRESSED) { ret =3D bdrv_driver_pwritev_compressed(bs, offset, bytes, qiov, qiov_offset); } else if (bytes <=3D max_transfer) { - bdrv_debug_event(bs, BLKDBG_PWRITEV); + bdrv_co_debug_event(bs, BLKDBG_PWRITEV); ret =3D bdrv_driver_pwritev(bs, offset, bytes, qiov, qiov_offset, = flags); } else { - bdrv_debug_event(bs, BLKDBG_PWRITEV); + bdrv_co_debug_event(bs, BLKDBG_PWRITEV); while (bytes_remaining) { int num =3D MIN(bytes_remaining, max_transfer); int local_flags =3D flags; @@ -1953,7 +1953,7 @@ static int coroutine_fn bdrv_aligned_pwritev(BdrvChil= d *child, bytes_remaining -=3D num; } } - bdrv_debug_event(bs, BLKDBG_PWRITEV_DONE); + bdrv_co_debug_event(bs, BLKDBG_PWRITEV_DONE); =20 if (ret >=3D 0) { ret =3D 0; --=20 2.38.1 From nobody Sat May 18 22:31:18 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; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1670923131; cv=none; d=zohomail.com; s=zohoarc; b=asD5RY3CgEUwEkO73zDxOjGeZB7uY+7+0uJRdDfcGF/lwR737X8f/FmV9SsjYGsUek+zxFrNR8UEdH7wa36I8a5Lv7kqflotp9xq0nADpIiAyWq6pstONNegbwkK/ovHkZbLX+bAY+NzYUCtoGf4zlJoCD1VlSZYpkDp7aq/eYw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1670923131; h=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=2+TYZzo8pqnY8mQpnUUd5NfbckTXbYQsMz3OlzRevEY=; b=gss4EV0Le3JJO1cWpg0LBVYoruxZ+StoZ2iO77l6FU1b/m5lJqjtfn5V0BEb1IV0Bh2kSGlSn5HjTuApapb2OwiwV/7kVTnNs/AFWfApSQe40YKm/1FXIgse3HsIJB0KP1v5KsoxE4jUYgRtYZ40AC6MF7cvkIuOgK8fb/6ETAI= ARC-Authentication-Results: i=1; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1670923131314125.03383712153561; Tue, 13 Dec 2022 01:18:51 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p5132-0006Uw-Lx; Tue, 13 Dec 2022 03:54:00 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p5130-0006TZ-EJ for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:53:58 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p512w-00032Y-VX for qemu-devel@nongnu.org; Tue, 13 Dec 2022 03:53:58 -0500 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-330-kJ9frqZ9NQSThq5GRmBPjA-1; Tue, 13 Dec 2022 03:53:51 -0500 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 9D43785A59D; Tue, 13 Dec 2022 08:53:50 +0000 (UTC) Received: from merkur.redhat.com (unknown [10.39.192.221]) by smtp.corp.redhat.com (Postfix) with ESMTP id C8F48492C14; Tue, 13 Dec 2022 08:53:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1670921634; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=2+TYZzo8pqnY8mQpnUUd5NfbckTXbYQsMz3OlzRevEY=; b=VIHH+2apiG11/5IpfZoxjyR+/I9xFR7dmswYxeqpmNfcUHZ/AKBHCEXCKvUlrhwOWpAarg Tu/daDagkYLlwv1g5OsbzsxN67uFcsMiBGNl5r/PrAifmyvClbdZMoD7rXw9ElYCBarQre /fRAGm5nb+8lmXNfHQ4apMGJ1MYIejM= X-MC-Unique: kJ9frqZ9NQSThq5GRmBPjA-1 From: Kevin Wolf To: qemu-block@nongnu.org Cc: kwolf@redhat.com, hreitz@redhat.com, eesposit@redhat.com, pbonzini@redhat.com, vsementsov@yandex-team.ru, qemu-devel@nongnu.org Subject: [PATCH 14/14] block: Rename newly converted BlockDriver IO coroutine functions Date: Tue, 13 Dec 2022 09:53:20 +0100 Message-Id: <20221213085320.95673-15-kwolf@redhat.com> In-Reply-To: <20221213085320.95673-1-kwolf@redhat.com> References: <20221213085320.95673-1-kwolf@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 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=170.10.133.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.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, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=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.29 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1670923133131100003 Content-Type: text/plain; charset="utf-8" From: Emanuele Giuseppe Esposito Since these functions always run in coroutine context, adjust their name to include "_co_", just like all other BlockDriver callbacks. No functional change intended. Signed-off-by: Emanuele Giuseppe Esposito Signed-off-by: Kevin Wolf Reviewed-by: Emanuele Giuseppe Esposito --- include/block/block_int-common.h | 27 +++++++++--------- block.c | 32 ++++++++++----------- block/blkdebug.c | 4 +-- block/blkio.c | 6 ++-- block/blklogwrites.c | 2 +- block/blkreplay.c | 2 +- block/blkverify.c | 2 +- block/copy-on-read.c | 6 ++-- block/crypto.c | 4 +-- block/curl.c | 8 +++--- block/file-posix.c | 48 ++++++++++++++++---------------- block/file-win32.c | 12 ++++---- block/filter-compress.c | 6 ++-- block/gluster.c | 16 +++++------ block/io.c | 16 +++++------ block/iscsi.c | 8 +++--- block/nbd.c | 6 ++-- block/nfs.c | 2 +- block/null.c | 8 +++--- block/nvme.c | 6 ++-- block/preallocate.c | 2 +- block/qcow.c | 2 +- block/qcow2.c | 6 ++-- block/qed.c | 4 +-- block/quorum.c | 2 +- block/raw-format.c | 8 +++--- block/rbd.c | 4 +-- block/replication.c | 2 +- block/ssh.c | 2 +- block/throttle.c | 2 +- block/vdi.c | 2 +- block/vhdx.c | 2 +- block/vmdk.c | 4 +-- block/vpc.c | 2 +- 34 files changed, 132 insertions(+), 133 deletions(-) diff --git a/include/block/block_int-common.h b/include/block/block_int-com= mon.h index 90702c6dcf..fd8ccaefee 100644 --- a/include/block/block_int-common.h +++ b/include/block/block_int-common.h @@ -684,8 +684,9 @@ struct BlockDriver { int coroutine_fn (*bdrv_co_truncate)(BlockDriverState *bs, int64_t off= set, bool exact, PreallocMode prealloc, BdrvRequestFlags flags, Error **e= rrp); - int64_t coroutine_fn (*bdrv_getlength)(BlockDriverState *bs); - int64_t coroutine_fn (*bdrv_get_allocated_file_size)(BlockDriverState = *bs); + int64_t coroutine_fn (*bdrv_co_getlength)(BlockDriverState *bs); + int64_t coroutine_fn (*bdrv_co_get_allocated_file_size)( + BlockDriverState *bs); =20 BlockMeasureInfo *(*bdrv_measure)(QemuOpts *opts, BlockDriverState *in= _bs, Error **errp); @@ -696,23 +697,23 @@ struct BlockDriver { int64_t offset, int64_t bytes, QEMUIOVector *qiov, size_t qiov_offset); =20 - int coroutine_fn (*bdrv_get_info)(BlockDriverState *bs, - BlockDriverInfo *bdi); + int coroutine_fn (*bdrv_co_get_info)(BlockDriverState *bs, + BlockDriverInfo *bdi); =20 ImageInfoSpecific *(*bdrv_get_specific_info)(BlockDriverState *bs, Error **errp); BlockStatsSpecific *(*bdrv_get_specific_stats)(BlockDriverState *bs); =20 - int coroutine_fn GRAPH_RDLOCK_PTR (*bdrv_save_vmstate)( + int coroutine_fn GRAPH_RDLOCK_PTR (*bdrv_co_save_vmstate)( BlockDriverState *bs, QEMUIOVector *qiov, int64_t pos); =20 - int coroutine_fn GRAPH_RDLOCK_PTR (*bdrv_load_vmstate)( + int coroutine_fn GRAPH_RDLOCK_PTR (*bdrv_co_load_vmstate)( BlockDriverState *bs, QEMUIOVector *qiov, int64_t pos); =20 /* removable device specific */ - bool coroutine_fn (*bdrv_is_inserted)(BlockDriverState *bs); - void coroutine_fn (*bdrv_eject)(BlockDriverState *bs, bool eject_flag); - void coroutine_fn (*bdrv_lock_medium)(BlockDriverState *bs, bool locke= d); + bool coroutine_fn (*bdrv_co_is_inserted)(BlockDriverState *bs); + void coroutine_fn (*bdrv_co_eject)(BlockDriverState *bs, bool eject_fl= ag); + void coroutine_fn (*bdrv_co_lock_medium)(BlockDriverState *bs, bool lo= cked); =20 /* to control generic scsi devices */ BlockAIOCB *(*bdrv_aio_ioctl)(BlockDriverState *bs, @@ -728,12 +729,12 @@ struct BlockDriver { int coroutine_fn GRAPH_RDLOCK_PTR (*bdrv_co_check)( BlockDriverState *bs, BdrvCheckResult *result, BdrvCheckMode fix); =20 - void coroutine_fn (*bdrv_debug_event)(BlockDriverState *bs, - BlkdebugEvent event); + void coroutine_fn (*bdrv_co_debug_event)(BlockDriverState *bs, + BlkdebugEvent event); =20 /* io queue for linux-aio */ - void coroutine_fn (*bdrv_io_plug)(BlockDriverState *bs); - void coroutine_fn (*bdrv_io_unplug)(BlockDriverState *bs); + void coroutine_fn (*bdrv_co_io_plug)(BlockDriverState *bs); + void coroutine_fn (*bdrv_co_io_unplug)(BlockDriverState *bs); =20 /** * bdrv_drain_begin is called if implemented in the beginning of a diff --git a/block.c b/block.c index d27105dd3b..eebb4560c4 100644 --- a/block.c +++ b/block.c @@ -1044,13 +1044,13 @@ int coroutine_fn bdrv_co_refresh_total_sectors(Bloc= kDriverState *bs, return -ENOMEDIUM; } =20 - /* Do not attempt drv->bdrv_getlength() on scsi-generic devices */ + /* Do not attempt drv->bdrv_co_getlength() on scsi-generic devices */ if (bdrv_is_sg(bs)) return 0; =20 /* query actual device if possible, otherwise just trust the hint */ - if (drv->bdrv_getlength) { - int64_t length =3D drv->bdrv_getlength(bs); + if (drv->bdrv_co_getlength) { + int64_t length =3D drv->bdrv_co_getlength(bs); if (length < 0) { return length; } @@ -5719,7 +5719,7 @@ exit: } =20 /** - * Implementation of BlockDriver.bdrv_get_allocated_file_size() that + * Implementation of BlockDriver.bdrv_co_get_allocated_file_size() that * sums the size of all data-bearing children. (This excludes backing * children.) */ @@ -5755,8 +5755,8 @@ int64_t coroutine_fn bdrv_co_get_allocated_file_size(= BlockDriverState *bs) if (!drv) { return -ENOMEDIUM; } - if (drv->bdrv_get_allocated_file_size) { - return drv->bdrv_get_allocated_file_size(bs); + if (drv->bdrv_co_get_allocated_file_size) { + return drv->bdrv_co_get_allocated_file_size(bs); } =20 if (drv->bdrv_file_open) { @@ -6309,7 +6309,7 @@ int coroutine_fn bdrv_co_get_info(BlockDriverState *b= s, BlockDriverInfo *bdi) if (!drv) { return -ENOMEDIUM; } - if (!drv->bdrv_get_info) { + if (!drv->bdrv_co_get_info) { BlockDriverState *filtered =3D bdrv_filter_bs(bs); if (filtered) { return bdrv_co_get_info(filtered, bdi); @@ -6317,7 +6317,7 @@ int coroutine_fn bdrv_co_get_info(BlockDriverState *b= s, BlockDriverInfo *bdi) return -ENOTSUP; } memset(bdi, 0, sizeof(*bdi)); - ret =3D drv->bdrv_get_info(bs, bdi); + ret =3D drv->bdrv_co_get_info(bs, bdi); if (ret < 0) { return ret; } @@ -6353,11 +6353,11 @@ BlockStatsSpecific *bdrv_get_specific_stats(BlockDr= iverState *bs) void coroutine_fn bdrv_co_debug_event(BlockDriverState *bs, BlkdebugEvent = event) { IO_CODE(); - if (!bs || !bs->drv || !bs->drv->bdrv_debug_event) { + if (!bs || !bs->drv || !bs->drv->bdrv_co_debug_event) { return; } =20 - bs->drv->bdrv_debug_event(bs, event); + bs->drv->bdrv_co_debug_event(bs, event); } =20 static BlockDriverState *bdrv_find_debug_node(BlockDriverState *bs) @@ -6806,8 +6806,8 @@ bool coroutine_fn bdrv_co_is_inserted(BlockDriverStat= e *bs) if (!drv) { return false; } - if (drv->bdrv_is_inserted) { - return drv->bdrv_is_inserted(bs); + if (drv->bdrv_co_is_inserted) { + return drv->bdrv_co_is_inserted(bs); } QLIST_FOREACH(child, &bs->children, next) { if (!bdrv_co_is_inserted(child->bs)) { @@ -6825,8 +6825,8 @@ void coroutine_fn bdrv_co_eject(BlockDriverState *bs,= bool eject_flag) BlockDriver *drv =3D bs->drv; IO_CODE(); =20 - if (drv && drv->bdrv_eject) { - drv->bdrv_eject(bs, eject_flag); + if (drv && drv->bdrv_co_eject) { + drv->bdrv_co_eject(bs, eject_flag); } } =20 @@ -6840,8 +6840,8 @@ void coroutine_fn bdrv_co_lock_medium(BlockDriverStat= e *bs, bool locked) IO_CODE(); trace_bdrv_lock_medium(bs, locked); =20 - if (drv && drv->bdrv_lock_medium) { - drv->bdrv_lock_medium(bs, locked); + if (drv && drv->bdrv_co_lock_medium) { + drv->bdrv_co_lock_medium(bs, locked); } } =20 diff --git a/block/blkdebug.c b/block/blkdebug.c index 4265ca125e..d8e199d59c 100644 --- a/block/blkdebug.c +++ b/block/blkdebug.c @@ -1076,7 +1076,7 @@ static BlockDriver bdrv_blkdebug =3D { .bdrv_reopen_prepare =3D blkdebug_reopen_prepare, .bdrv_child_perm =3D blkdebug_child_perm, =20 - .bdrv_getlength =3D blkdebug_getlength, + .bdrv_co_getlength =3D blkdebug_getlength, .bdrv_refresh_filename =3D blkdebug_refresh_filename, .bdrv_refresh_limits =3D blkdebug_refresh_limits, =20 @@ -1087,7 +1087,7 @@ static BlockDriver bdrv_blkdebug =3D { .bdrv_co_pdiscard =3D blkdebug_co_pdiscard, .bdrv_co_block_status =3D blkdebug_co_block_status, =20 - .bdrv_debug_event =3D blkdebug_debug_event, + .bdrv_co_debug_event =3D blkdebug_debug_event, .bdrv_debug_breakpoint =3D blkdebug_debug_breakpoint, .bdrv_debug_remove_breakpoint =3D blkdebug_debug_remove_breakpoint, diff --git a/block/blkio.c b/block/blkio.c index 5eae3adfaf..83ee4e9cce 100644 --- a/block/blkio.c +++ b/block/blkio.c @@ -996,9 +996,9 @@ static void blkio_refresh_limits(BlockDriverState *bs, = Error **errp) .instance_size =3D sizeof(BDRVBlkioState), \ .bdrv_file_open =3D blkio_file_open, \ .bdrv_close =3D blkio_close, \ - .bdrv_getlength =3D blkio_getlength, \ + .bdrv_co_getlength =3D blkio_getlength, \ .bdrv_co_truncate =3D blkio_truncate, \ - .bdrv_get_info =3D blkio_get_info, \ + .bdrv_co_get_info =3D blkio_get_info, \ .bdrv_attach_aio_context =3D blkio_attach_aio_context, \ .bdrv_detach_aio_context =3D blkio_detach_aio_context, \ .bdrv_co_pdiscard =3D blkio_co_pdiscard, \ @@ -1006,7 +1006,7 @@ static void blkio_refresh_limits(BlockDriverState *bs= , Error **errp) .bdrv_co_pwritev =3D blkio_co_pwritev, \ .bdrv_co_flush_to_disk =3D blkio_co_flush, \ .bdrv_co_pwrite_zeroes =3D blkio_co_pwrite_zeroes, \ - .bdrv_io_unplug =3D blkio_io_unplug, \ + .bdrv_co_io_unplug =3D blkio_io_unplug, \ .bdrv_refresh_limits =3D blkio_refresh_limits, \ .bdrv_register_buf =3D blkio_register_buf, \ .bdrv_unregister_buf =3D blkio_unregister_buf, \ diff --git a/block/blklogwrites.c b/block/blklogwrites.c index cef9efe55d..8b81e8f0d9 100644 --- a/block/blklogwrites.c +++ b/block/blklogwrites.c @@ -497,7 +497,7 @@ static BlockDriver bdrv_blk_log_writes =3D { =20 .bdrv_open =3D blk_log_writes_open, .bdrv_close =3D blk_log_writes_close, - .bdrv_getlength =3D blk_log_writes_getlength, + .bdrv_co_getlength =3D blk_log_writes_getlength, .bdrv_child_perm =3D blk_log_writes_child_perm, .bdrv_refresh_limits =3D blk_log_writes_refresh_limits, =20 diff --git a/block/blkreplay.c b/block/blkreplay.c index 76a0b8d12a..23f785a700 100644 --- a/block/blkreplay.c +++ b/block/blkreplay.c @@ -135,7 +135,7 @@ static BlockDriver bdrv_blkreplay =3D { =20 .bdrv_open =3D blkreplay_open, .bdrv_child_perm =3D bdrv_default_perms, - .bdrv_getlength =3D blkreplay_getlength, + .bdrv_co_getlength =3D blkreplay_getlength, =20 .bdrv_co_preadv =3D blkreplay_co_preadv, .bdrv_co_pwritev =3D blkreplay_co_pwritev, diff --git a/block/blkverify.c b/block/blkverify.c index c60a2dc624..55cb093993 100644 --- a/block/blkverify.c +++ b/block/blkverify.c @@ -313,7 +313,7 @@ static BlockDriver bdrv_blkverify =3D { .bdrv_file_open =3D blkverify_open, .bdrv_close =3D blkverify_close, .bdrv_child_perm =3D bdrv_default_perms, - .bdrv_getlength =3D blkverify_getlength, + .bdrv_co_getlength =3D blkverify_getlength, .bdrv_refresh_filename =3D blkverify_refresh_filename, .bdrv_dirname =3D blkverify_dirname, =20 diff --git a/block/copy-on-read.c b/block/copy-on-read.c index ccc767f37b..423dc5ea0b 100644 --- a/block/copy-on-read.c +++ b/block/copy-on-read.c @@ -249,7 +249,7 @@ static BlockDriver bdrv_copy_on_read =3D { .bdrv_close =3D cor_close, .bdrv_child_perm =3D cor_child_perm, =20 - .bdrv_getlength =3D cor_getlength, + .bdrv_co_getlength =3D cor_getlength, =20 .bdrv_co_preadv_part =3D cor_co_preadv_part, .bdrv_co_pwritev_part =3D cor_co_pwritev_part, @@ -257,8 +257,8 @@ static BlockDriver bdrv_copy_on_read =3D { .bdrv_co_pdiscard =3D cor_co_pdiscard, .bdrv_co_pwritev_compressed =3D cor_co_pwritev_compressed, =20 - .bdrv_eject =3D cor_eject, - .bdrv_lock_medium =3D cor_lock_medium, + .bdrv_co_eject =3D cor_eject, + .bdrv_co_lock_medium =3D cor_lock_medium, =20 .has_variable_length =3D true, .is_filter =3D true, diff --git a/block/crypto.c b/block/crypto.c index 1b4a9eb8e7..b134b7685f 100644 --- a/block/crypto.c +++ b/block/crypto.c @@ -953,9 +953,9 @@ static BlockDriver bdrv_crypto_luks =3D { .bdrv_refresh_limits =3D block_crypto_refresh_limits, .bdrv_co_preadv =3D block_crypto_co_preadv, .bdrv_co_pwritev =3D block_crypto_co_pwritev, - .bdrv_getlength =3D block_crypto_getlength, + .bdrv_co_getlength =3D block_crypto_getlength, .bdrv_measure =3D block_crypto_measure, - .bdrv_get_info =3D block_crypto_get_info_luks, + .bdrv_co_get_info =3D block_crypto_get_info_luks, .bdrv_get_specific_info =3D block_crypto_get_specific_info_luks, .bdrv_amend_options =3D block_crypto_amend_options_luks, .bdrv_co_amend =3D block_crypto_co_amend_luks, diff --git a/block/curl.c b/block/curl.c index cba4c4cac7..8076afb4d1 100644 --- a/block/curl.c +++ b/block/curl.c @@ -1001,7 +1001,7 @@ static BlockDriver bdrv_http =3D { .bdrv_parse_filename =3D curl_parse_filename, .bdrv_file_open =3D curl_open, .bdrv_close =3D curl_close, - .bdrv_getlength =3D curl_getlength, + .bdrv_co_getlength =3D curl_getlength, =20 .bdrv_co_preadv =3D curl_co_preadv, =20 @@ -1020,7 +1020,7 @@ static BlockDriver bdrv_https =3D { .bdrv_parse_filename =3D curl_parse_filename, .bdrv_file_open =3D curl_open, .bdrv_close =3D curl_close, - .bdrv_getlength =3D curl_getlength, + .bdrv_co_getlength =3D curl_getlength, =20 .bdrv_co_preadv =3D curl_co_preadv, =20 @@ -1039,7 +1039,7 @@ static BlockDriver bdrv_ftp =3D { .bdrv_parse_filename =3D curl_parse_filename, .bdrv_file_open =3D curl_open, .bdrv_close =3D curl_close, - .bdrv_getlength =3D curl_getlength, + .bdrv_co_getlength =3D curl_getlength, =20 .bdrv_co_preadv =3D curl_co_preadv, =20 @@ -1058,7 +1058,7 @@ static BlockDriver bdrv_ftps =3D { .bdrv_parse_filename =3D curl_parse_filename, .bdrv_file_open =3D curl_open, .bdrv_close =3D curl_close, - .bdrv_getlength =3D curl_getlength, + .bdrv_co_getlength =3D curl_getlength, =20 .bdrv_co_preadv =3D curl_co_preadv, =20 diff --git a/block/file-posix.c b/block/file-posix.c index b9647c5ffc..ce558ccd5d 100644 --- a/block/file-posix.c +++ b/block/file-posix.c @@ -3321,14 +3321,14 @@ BlockDriver bdrv_file =3D { .bdrv_co_copy_range_from =3D raw_co_copy_range_from, .bdrv_co_copy_range_to =3D raw_co_copy_range_to, .bdrv_refresh_limits =3D raw_refresh_limits, - .bdrv_io_plug =3D raw_aio_plug, - .bdrv_io_unplug =3D raw_aio_unplug, + .bdrv_co_io_plug =3D raw_aio_plug, + .bdrv_co_io_unplug =3D raw_aio_unplug, .bdrv_attach_aio_context =3D raw_aio_attach_aio_context, =20 .bdrv_co_truncate =3D raw_co_truncate, - .bdrv_getlength =3D raw_getlength, - .bdrv_get_info =3D raw_get_info, - .bdrv_get_allocated_file_size + .bdrv_co_getlength =3D raw_getlength, + .bdrv_co_get_info =3D raw_get_info, + .bdrv_co_get_allocated_file_size =3D raw_get_allocated_file_size, .bdrv_get_specific_stats =3D raw_get_specific_stats, .bdrv_check_perm =3D raw_check_perm, @@ -3693,14 +3693,14 @@ static BlockDriver bdrv_host_device =3D { .bdrv_co_copy_range_from =3D raw_co_copy_range_from, .bdrv_co_copy_range_to =3D raw_co_copy_range_to, .bdrv_refresh_limits =3D raw_refresh_limits, - .bdrv_io_plug =3D raw_aio_plug, - .bdrv_io_unplug =3D raw_aio_unplug, + .bdrv_co_io_plug =3D raw_aio_plug, + .bdrv_co_io_unplug =3D raw_aio_unplug, .bdrv_attach_aio_context =3D raw_aio_attach_aio_context, =20 .bdrv_co_truncate =3D raw_co_truncate, - .bdrv_getlength =3D raw_getlength, - .bdrv_get_info =3D raw_get_info, - .bdrv_get_allocated_file_size + .bdrv_co_getlength =3D raw_getlength, + .bdrv_co_get_info =3D raw_get_info, + .bdrv_co_get_allocated_file_size =3D raw_get_allocated_file_size, .bdrv_get_specific_stats =3D hdev_get_specific_stats, .bdrv_check_perm =3D raw_check_perm, @@ -3817,20 +3817,20 @@ static BlockDriver bdrv_host_cdrom =3D { .bdrv_co_pwritev =3D raw_co_pwritev, .bdrv_co_flush_to_disk =3D raw_co_flush_to_disk, .bdrv_refresh_limits =3D raw_refresh_limits, - .bdrv_io_plug =3D raw_aio_plug, - .bdrv_io_unplug =3D raw_aio_unplug, + .bdrv_co_io_plug =3D raw_aio_plug, + .bdrv_co_io_unplug =3D raw_aio_unplug, .bdrv_attach_aio_context =3D raw_aio_attach_aio_context, =20 .bdrv_co_truncate =3D raw_co_truncate, - .bdrv_getlength =3D raw_getlength, + .bdrv_co_getlength =3D raw_getlength, .has_variable_length =3D true, - .bdrv_get_allocated_file_size + .bdrv_co_get_allocated_file_size =3D raw_get_allocated_file_size, =20 /* removable device support */ - .bdrv_is_inserted =3D cdrom_is_inserted, - .bdrv_eject =3D cdrom_eject, - .bdrv_lock_medium =3D cdrom_lock_medium, + .bdrv_co_is_inserted =3D cdrom_is_inserted, + .bdrv_co_eject =3D cdrom_eject, + .bdrv_co_lock_medium =3D cdrom_lock_medium, =20 /* generic scsi device */ .bdrv_co_ioctl =3D hdev_co_ioctl, @@ -3947,20 +3947,20 @@ static BlockDriver bdrv_host_cdrom =3D { .bdrv_co_pwritev =3D raw_co_pwritev, .bdrv_co_flush_to_disk =3D raw_co_flush_to_disk, .bdrv_refresh_limits =3D raw_refresh_limits, - .bdrv_io_plug =3D raw_aio_plug, - .bdrv_io_unplug =3D raw_aio_unplug, + .bdrv_co_io_plug =3D raw_aio_plug, + .bdrv_co_io_unplug =3D raw_aio_unplug, .bdrv_attach_aio_context =3D raw_aio_attach_aio_context, =20 .bdrv_co_truncate =3D raw_co_truncate, - .bdrv_getlength =3D raw_getlength, + .bdrv_co_getlength =3D raw_getlength, .has_variable_length =3D true, - .bdrv_get_allocated_file_size + .bdrv_co_get_allocated_file_size =3D raw_get_allocated_file_size, =20 /* removable device support */ - .bdrv_is_inserted =3D cdrom_is_inserted, - .bdrv_eject =3D cdrom_eject, - .bdrv_lock_medium =3D cdrom_lock_medium, + .bdrv_co_is_inserted =3D cdrom_is_inserted, + .bdrv_co_eject =3D cdrom_eject, + .bdrv_co_lock_medium =3D cdrom_lock_medium, }; #endif /* __FreeBSD__ */ =20 diff --git a/block/file-win32.c b/block/file-win32.c index ec9d64d0e4..b7eef73149 100644 --- a/block/file-win32.c +++ b/block/file-win32.c @@ -763,8 +763,8 @@ BlockDriver bdrv_file =3D { .bdrv_aio_flush =3D raw_aio_flush, =20 .bdrv_co_truncate =3D raw_co_truncate, - .bdrv_getlength =3D raw_getlength, - .bdrv_get_allocated_file_size + .bdrv_co_getlength =3D raw_getlength, + .bdrv_co_get_allocated_file_size =3D raw_get_allocated_file_size, =20 .create_opts =3D &raw_create_opts, @@ -932,11 +932,9 @@ static BlockDriver bdrv_host_device =3D { .bdrv_detach_aio_context =3D raw_detach_aio_context, .bdrv_attach_aio_context =3D raw_attach_aio_context, =20 - .bdrv_getlength =3D raw_getlength, - .has_variable_length =3D true, - - .bdrv_get_allocated_file_size - =3D raw_get_allocated_file_size, + .bdrv_co_getlength =3D raw_getlength, + .has_variable_length =3D true, + .bdrv_co_get_allocated_file_size =3D raw_get_allocated_file_size, }; =20 static void bdrv_file_init(void) diff --git a/block/filter-compress.c b/block/filter-compress.c index e10312c225..42676f1d8e 100644 --- a/block/filter-compress.c +++ b/block/filter-compress.c @@ -134,7 +134,7 @@ static BlockDriver bdrv_compress =3D { .bdrv_open =3D compress_open, .bdrv_child_perm =3D bdrv_default_perms, =20 - .bdrv_getlength =3D compress_getlength, + .bdrv_co_getlength =3D compress_getlength, =20 .bdrv_co_preadv_part =3D compress_co_preadv_part, .bdrv_co_pwritev_part =3D compress_co_pwritev_part, @@ -142,8 +142,8 @@ static BlockDriver bdrv_compress =3D { .bdrv_co_pdiscard =3D compress_co_pdiscard, .bdrv_refresh_limits =3D compress_refresh_limits, =20 - .bdrv_eject =3D compress_eject, - .bdrv_lock_medium =3D compress_lock_medium, + .bdrv_co_eject =3D compress_eject, + .bdrv_co_lock_medium =3D compress_lock_medium, =20 .has_variable_length =3D true, .is_filter =3D true, diff --git a/block/gluster.c b/block/gluster.c index 7c90f7ba4b..15624c0b47 100644 --- a/block/gluster.c +++ b/block/gluster.c @@ -1561,8 +1561,8 @@ static BlockDriver bdrv_gluster =3D { .bdrv_close =3D qemu_gluster_close, .bdrv_co_create =3D qemu_gluster_co_create, .bdrv_co_create_opts =3D qemu_gluster_co_create_opts, - .bdrv_getlength =3D qemu_gluster_getlength, - .bdrv_get_allocated_file_size =3D qemu_gluster_allocated_file_size, + .bdrv_co_getlength =3D qemu_gluster_getlength, + .bdrv_co_get_allocated_file_size =3D qemu_gluster_allocated_file_size, .bdrv_co_truncate =3D qemu_gluster_co_truncate, .bdrv_co_readv =3D qemu_gluster_co_readv, .bdrv_co_writev =3D qemu_gluster_co_writev, @@ -1590,8 +1590,8 @@ static BlockDriver bdrv_gluster_tcp =3D { .bdrv_close =3D qemu_gluster_close, .bdrv_co_create =3D qemu_gluster_co_create, .bdrv_co_create_opts =3D qemu_gluster_co_create_opts, - .bdrv_getlength =3D qemu_gluster_getlength, - .bdrv_get_allocated_file_size =3D qemu_gluster_allocated_file_size, + .bdrv_co_getlength =3D qemu_gluster_getlength, + .bdrv_co_get_allocated_file_size =3D qemu_gluster_allocated_file_size, .bdrv_co_truncate =3D qemu_gluster_co_truncate, .bdrv_co_readv =3D qemu_gluster_co_readv, .bdrv_co_writev =3D qemu_gluster_co_writev, @@ -1619,8 +1619,8 @@ static BlockDriver bdrv_gluster_unix =3D { .bdrv_close =3D qemu_gluster_close, .bdrv_co_create =3D qemu_gluster_co_create, .bdrv_co_create_opts =3D qemu_gluster_co_create_opts, - .bdrv_getlength =3D qemu_gluster_getlength, - .bdrv_get_allocated_file_size =3D qemu_gluster_allocated_file_size, + .bdrv_co_getlength =3D qemu_gluster_getlength, + .bdrv_co_get_allocated_file_size =3D qemu_gluster_allocated_file_size, .bdrv_co_truncate =3D qemu_gluster_co_truncate, .bdrv_co_readv =3D qemu_gluster_co_readv, .bdrv_co_writev =3D qemu_gluster_co_writev, @@ -1654,8 +1654,8 @@ static BlockDriver bdrv_gluster_rdma =3D { .bdrv_close =3D qemu_gluster_close, .bdrv_co_create =3D qemu_gluster_co_create, .bdrv_co_create_opts =3D qemu_gluster_co_create_opts, - .bdrv_getlength =3D qemu_gluster_getlength, - .bdrv_get_allocated_file_size =3D qemu_gluster_allocated_file_size, + .bdrv_co_getlength =3D qemu_gluster_getlength, + .bdrv_co_get_allocated_file_size =3D qemu_gluster_allocated_file_size, .bdrv_co_truncate =3D qemu_gluster_co_truncate, .bdrv_co_readv =3D qemu_gluster_co_readv, .bdrv_co_writev =3D qemu_gluster_co_writev, diff --git a/block/io.c b/block/io.c index 93ba851c8c..7a5229e685 100644 --- a/block/io.c +++ b/block/io.c @@ -2710,8 +2710,8 @@ bdrv_co_readv_vmstate(BlockDriverState *bs, QEMUIOVec= tor *qiov, int64_t pos) =20 bdrv_inc_in_flight(bs); =20 - if (drv->bdrv_load_vmstate) { - ret =3D drv->bdrv_load_vmstate(bs, qiov, pos); + if (drv->bdrv_co_load_vmstate) { + ret =3D drv->bdrv_co_load_vmstate(bs, qiov, pos); } else if (child_bs) { ret =3D bdrv_co_readv_vmstate(child_bs, qiov, pos); } else { @@ -2743,8 +2743,8 @@ bdrv_co_writev_vmstate(BlockDriverState *bs, QEMUIOVe= ctor *qiov, int64_t pos) =20 bdrv_inc_in_flight(bs); =20 - if (drv->bdrv_save_vmstate) { - ret =3D drv->bdrv_save_vmstate(bs, qiov, pos); + if (drv->bdrv_co_save_vmstate) { + ret =3D drv->bdrv_co_save_vmstate(bs, qiov, pos); } else if (child_bs) { ret =3D bdrv_co_writev_vmstate(child_bs, qiov, pos); } else { @@ -3138,8 +3138,8 @@ void coroutine_fn bdrv_co_io_plug(BlockDriverState *b= s) =20 if (qatomic_fetch_inc(&bs->io_plugged) =3D=3D 0) { BlockDriver *drv =3D bs->drv; - if (drv && drv->bdrv_io_plug) { - drv->bdrv_io_plug(bs); + if (drv && drv->bdrv_co_io_plug) { + drv->bdrv_co_io_plug(bs); } } } @@ -3152,8 +3152,8 @@ void coroutine_fn bdrv_co_io_unplug(BlockDriverState = *bs) assert(bs->io_plugged); if (qatomic_fetch_dec(&bs->io_plugged) =3D=3D 1) { BlockDriver *drv =3D bs->drv; - if (drv && drv->bdrv_io_unplug) { - drv->bdrv_io_unplug(bs); + if (drv && drv->bdrv_co_io_unplug) { + drv->bdrv_co_io_unplug(bs); } } =20 diff --git a/block/iscsi.c b/block/iscsi.c index a316d46d96..839fd0b6eb 100644 --- a/block/iscsi.c +++ b/block/iscsi.c @@ -2433,8 +2433,8 @@ static BlockDriver bdrv_iscsi =3D { .bdrv_reopen_commit =3D iscsi_reopen_commit, .bdrv_co_invalidate_cache =3D iscsi_co_invalidate_cache, =20 - .bdrv_getlength =3D iscsi_getlength, - .bdrv_get_info =3D iscsi_get_info, + .bdrv_co_getlength =3D iscsi_getlength, + .bdrv_co_get_info =3D iscsi_get_info, .bdrv_co_truncate =3D iscsi_co_truncate, .bdrv_refresh_limits =3D iscsi_refresh_limits, =20 @@ -2472,8 +2472,8 @@ static BlockDriver bdrv_iser =3D { .bdrv_reopen_commit =3D iscsi_reopen_commit, .bdrv_co_invalidate_cache =3D iscsi_co_invalidate_cache, =20 - .bdrv_getlength =3D iscsi_getlength, - .bdrv_get_info =3D iscsi_get_info, + .bdrv_co_getlength =3D iscsi_getlength, + .bdrv_co_get_info =3D iscsi_get_info, .bdrv_co_truncate =3D iscsi_co_truncate, .bdrv_refresh_limits =3D iscsi_refresh_limits, =20 diff --git a/block/nbd.c b/block/nbd.c index 7d485c86d2..27919d5058 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -2124,7 +2124,7 @@ static BlockDriver bdrv_nbd =3D { .bdrv_co_pdiscard =3D nbd_client_co_pdiscard, .bdrv_refresh_limits =3D nbd_refresh_limits, .bdrv_co_truncate =3D nbd_co_truncate, - .bdrv_getlength =3D nbd_getlength, + .bdrv_co_getlength =3D nbd_getlength, .bdrv_refresh_filename =3D nbd_refresh_filename, .bdrv_co_block_status =3D nbd_client_co_block_status, .bdrv_dirname =3D nbd_dirname, @@ -2152,7 +2152,7 @@ static BlockDriver bdrv_nbd_tcp =3D { .bdrv_co_pdiscard =3D nbd_client_co_pdiscard, .bdrv_refresh_limits =3D nbd_refresh_limits, .bdrv_co_truncate =3D nbd_co_truncate, - .bdrv_getlength =3D nbd_getlength, + .bdrv_co_getlength =3D nbd_getlength, .bdrv_refresh_filename =3D nbd_refresh_filename, .bdrv_co_block_status =3D nbd_client_co_block_status, .bdrv_dirname =3D nbd_dirname, @@ -2180,7 +2180,7 @@ static BlockDriver bdrv_nbd_unix =3D { .bdrv_co_pdiscard =3D nbd_client_co_pdiscard, .bdrv_refresh_limits =3D nbd_refresh_limits, .bdrv_co_truncate =3D nbd_co_truncate, - .bdrv_getlength =3D nbd_getlength, + .bdrv_co_getlength =3D nbd_getlength, .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/block/nfs.c b/block/nfs.c index ece22353ac..ea198834f8 100644 --- a/block/nfs.c +++ b/block/nfs.c @@ -884,7 +884,7 @@ static BlockDriver bdrv_nfs =3D { .bdrv_has_zero_init =3D nfs_has_zero_init, /* libnfs does not provide the allocated filesize of a file on win32. */ #if !defined(_WIN32) - .bdrv_get_allocated_file_size =3D nfs_get_allocated_file_size, + .bdrv_co_get_allocated_file_size =3D nfs_get_allocated_file_size, #endif .bdrv_co_truncate =3D nfs_file_co_truncate, =20 diff --git a/block/null.c b/block/null.c index 75f7d0db40..f0e29d4f21 100644 --- a/block/null.c +++ b/block/null.c @@ -283,8 +283,8 @@ static BlockDriver bdrv_null_co =3D { =20 .bdrv_file_open =3D null_file_open, .bdrv_parse_filename =3D null_co_parse_filename, - .bdrv_getlength =3D null_getlength, - .bdrv_get_allocated_file_size =3D null_allocated_file_size, + .bdrv_co_getlength =3D null_getlength, + .bdrv_co_get_allocated_file_size =3D null_allocated_file_size, =20 .bdrv_co_preadv =3D null_co_preadv, .bdrv_co_pwritev =3D null_co_pwritev, @@ -304,8 +304,8 @@ static BlockDriver bdrv_null_aio =3D { =20 .bdrv_file_open =3D null_file_open, .bdrv_parse_filename =3D null_aio_parse_filename, - .bdrv_getlength =3D null_getlength, - .bdrv_get_allocated_file_size =3D null_allocated_file_size, + .bdrv_co_getlength =3D null_getlength, + .bdrv_co_get_allocated_file_size =3D null_allocated_file_size, =20 .bdrv_aio_preadv =3D null_aio_preadv, .bdrv_aio_pwritev =3D null_aio_pwritev, diff --git a/block/nvme.c b/block/nvme.c index 656624c585..be9a6801f1 100644 --- a/block/nvme.c +++ b/block/nvme.c @@ -1642,7 +1642,7 @@ static BlockDriver bdrv_nvme =3D { .bdrv_parse_filename =3D nvme_parse_filename, .bdrv_file_open =3D nvme_file_open, .bdrv_close =3D nvme_close, - .bdrv_getlength =3D nvme_getlength, + .bdrv_co_getlength =3D nvme_getlength, .bdrv_probe_blocksizes =3D nvme_probe_blocksizes, .bdrv_co_truncate =3D nvme_co_truncate, =20 @@ -1663,8 +1663,8 @@ static BlockDriver bdrv_nvme =3D { .bdrv_detach_aio_context =3D nvme_detach_aio_context, .bdrv_attach_aio_context =3D nvme_attach_aio_context, =20 - .bdrv_io_plug =3D nvme_aio_plug, - .bdrv_io_unplug =3D nvme_aio_unplug, + .bdrv_co_io_plug =3D nvme_aio_plug, + .bdrv_co_io_unplug =3D nvme_aio_unplug, =20 .bdrv_register_buf =3D nvme_register_buf, .bdrv_unregister_buf =3D nvme_unregister_buf, diff --git a/block/preallocate.c b/block/preallocate.c index d50ee7f49b..584a8b5912 100644 --- a/block/preallocate.c +++ b/block/preallocate.c @@ -536,7 +536,7 @@ BlockDriver bdrv_preallocate_filter =3D { .format_name =3D "preallocate", .instance_size =3D sizeof(BDRVPreallocateState), =20 - .bdrv_getlength =3D preallocate_getlength, + .bdrv_co_getlength =3D preallocate_getlength, .bdrv_open =3D preallocate_open, .bdrv_close =3D preallocate_close, =20 diff --git a/block/qcow.c b/block/qcow.c index 18e17a5b12..40502eb88c 100644 --- a/block/qcow.c +++ b/block/qcow.c @@ -1198,7 +1198,7 @@ static BlockDriver bdrv_qcow =3D { =20 .bdrv_make_empty =3D qcow_make_empty, .bdrv_co_pwritev_compressed =3D qcow_co_pwritev_compressed, - .bdrv_get_info =3D qcow_get_info, + .bdrv_co_get_info =3D qcow_get_info, =20 .create_opts =3D &qcow_create_opts, .strong_runtime_opts =3D qcow_strong_runtime_opts, diff --git a/block/qcow2.c b/block/qcow2.c index 7cc49a3a6c..c42b1fcdd6 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -6078,11 +6078,11 @@ BlockDriver bdrv_qcow2 =3D { .bdrv_snapshot_list =3D qcow2_snapshot_list, .bdrv_snapshot_load_tmp =3D qcow2_snapshot_load_tmp, .bdrv_measure =3D qcow2_measure, - .bdrv_get_info =3D qcow2_get_info, + .bdrv_co_get_info =3D qcow2_get_info, .bdrv_get_specific_info =3D qcow2_get_specific_info, =20 - .bdrv_save_vmstate =3D qcow2_save_vmstate, - .bdrv_load_vmstate =3D qcow2_load_vmstate, + .bdrv_co_save_vmstate =3D qcow2_save_vmstate, + .bdrv_co_load_vmstate =3D qcow2_load_vmstate, =20 .is_format =3D true, .supports_backing =3D true, diff --git a/block/qed.c b/block/qed.c index 9d54c8eec5..f7f0a6dd03 100644 --- a/block/qed.c +++ b/block/qed.c @@ -1653,8 +1653,8 @@ static BlockDriver bdrv_qed =3D { .bdrv_co_writev =3D bdrv_qed_co_writev, .bdrv_co_pwrite_zeroes =3D bdrv_qed_co_pwrite_zeroes, .bdrv_co_truncate =3D bdrv_qed_co_truncate, - .bdrv_getlength =3D bdrv_qed_getlength, - .bdrv_get_info =3D bdrv_qed_get_info, + .bdrv_co_getlength =3D bdrv_qed_getlength, + .bdrv_co_get_info =3D bdrv_qed_get_info, .bdrv_refresh_limits =3D bdrv_qed_refresh_limits, .bdrv_change_backing_file =3D bdrv_qed_change_backing_file, .bdrv_co_invalidate_cache =3D bdrv_qed_co_invalidate_cache, diff --git a/block/quorum.c b/block/quorum.c index f9e6539ceb..121ecdf228 100644 --- a/block/quorum.c +++ b/block/quorum.c @@ -1283,7 +1283,7 @@ static BlockDriver bdrv_quorum =3D { =20 .bdrv_co_flush =3D quorum_co_flush, =20 - .bdrv_getlength =3D quorum_getlength, + .bdrv_co_getlength =3D quorum_getlength, =20 .bdrv_co_preadv =3D quorum_co_preadv, .bdrv_co_pwritev =3D quorum_co_pwritev, diff --git a/block/raw-format.c b/block/raw-format.c index adc766bf79..ff71c5ef14 100644 --- a/block/raw-format.c +++ b/block/raw-format.c @@ -621,16 +621,16 @@ BlockDriver bdrv_raw =3D { .bdrv_co_copy_range_from =3D &raw_co_copy_range_from, .bdrv_co_copy_range_to =3D &raw_co_copy_range_to, .bdrv_co_truncate =3D &raw_co_truncate, - .bdrv_getlength =3D &raw_getlength, + .bdrv_co_getlength =3D &raw_getlength, .is_format =3D true, .has_variable_length =3D true, .bdrv_measure =3D &raw_measure, - .bdrv_get_info =3D &raw_get_info, + .bdrv_co_get_info =3D &raw_get_info, .bdrv_refresh_limits =3D &raw_refresh_limits, .bdrv_probe_blocksizes =3D &raw_probe_blocksizes, .bdrv_probe_geometry =3D &raw_probe_geometry, - .bdrv_eject =3D &raw_eject, - .bdrv_lock_medium =3D &raw_lock_medium, + .bdrv_co_eject =3D &raw_eject, + .bdrv_co_lock_medium =3D &raw_lock_medium, .bdrv_co_ioctl =3D &raw_co_ioctl, .create_opts =3D &raw_create_opts, .bdrv_has_zero_init =3D &raw_has_zero_init, diff --git a/block/rbd.c b/block/rbd.c index f826410f40..b424cd7260 100644 --- a/block/rbd.c +++ b/block/rbd.c @@ -1655,10 +1655,10 @@ static BlockDriver bdrv_rbd =3D { .bdrv_co_create =3D qemu_rbd_co_create, .bdrv_co_create_opts =3D qemu_rbd_co_create_opts, .bdrv_has_zero_init =3D bdrv_has_zero_init_1, - .bdrv_get_info =3D qemu_rbd_getinfo, + .bdrv_co_get_info =3D qemu_rbd_getinfo, .bdrv_get_specific_info =3D qemu_rbd_get_specific_info, .create_opts =3D &qemu_rbd_create_opts, - .bdrv_getlength =3D qemu_rbd_getlength, + .bdrv_co_getlength =3D qemu_rbd_getlength, .bdrv_co_truncate =3D qemu_rbd_co_truncate, .protocol_name =3D "rbd", =20 diff --git a/block/replication.c b/block/replication.c index c62f48a874..6c577959fb 100644 --- a/block/replication.c +++ b/block/replication.c @@ -758,7 +758,7 @@ static BlockDriver bdrv_replication =3D { .bdrv_close =3D replication_close, .bdrv_child_perm =3D replication_child_perm, =20 - .bdrv_getlength =3D replication_getlength, + .bdrv_co_getlength =3D replication_getlength, .bdrv_co_readv =3D replication_co_readv, .bdrv_co_writev =3D replication_co_writev, =20 diff --git a/block/ssh.c b/block/ssh.c index 04726d4ecb..97d7407ce2 100644 --- a/block/ssh.c +++ b/block/ssh.c @@ -1363,7 +1363,7 @@ static BlockDriver bdrv_ssh =3D { .bdrv_has_zero_init =3D ssh_has_zero_init, .bdrv_co_readv =3D ssh_co_readv, .bdrv_co_writev =3D ssh_co_writev, - .bdrv_getlength =3D ssh_getlength, + .bdrv_co_getlength =3D ssh_getlength, .bdrv_co_truncate =3D ssh_co_truncate, .bdrv_co_flush_to_disk =3D ssh_co_flush, .bdrv_refresh_filename =3D ssh_refresh_filename, diff --git a/block/throttle.c b/block/throttle.c index 88851c84f4..5e58c2967d 100644 --- a/block/throttle.c +++ b/block/throttle.c @@ -245,7 +245,7 @@ static BlockDriver bdrv_throttle =3D { =20 .bdrv_child_perm =3D bdrv_default_perms, =20 - .bdrv_getlength =3D throttle_getlength, + .bdrv_co_getlength =3D throttle_getlength, =20 .bdrv_co_preadv =3D throttle_co_preadv, .bdrv_co_pwritev =3D throttle_co_pwritev, diff --git a/block/vdi.c b/block/vdi.c index 479bcfe820..df101e94dd 100644 --- a/block/vdi.c +++ b/block/vdi.c @@ -1049,7 +1049,7 @@ static BlockDriver bdrv_vdi =3D { .bdrv_co_pwritev =3D vdi_co_pwritev, #endif =20 - .bdrv_get_info =3D vdi_get_info, + .bdrv_co_get_info =3D vdi_get_info, =20 .is_format =3D true, .create_opts =3D &vdi_create_opts, diff --git a/block/vhdx.c b/block/vhdx.c index 4c929800fe..d8ae91772c 100644 --- a/block/vhdx.c +++ b/block/vhdx.c @@ -2245,7 +2245,7 @@ static BlockDriver bdrv_vhdx =3D { .bdrv_co_writev =3D vhdx_co_writev, .bdrv_co_create =3D vhdx_co_create, .bdrv_co_create_opts =3D vhdx_co_create_opts, - .bdrv_get_info =3D vhdx_get_info, + .bdrv_co_get_info =3D vhdx_get_info, .bdrv_co_check =3D vhdx_co_check, .bdrv_has_zero_init =3D vhdx_has_zero_init, =20 diff --git a/block/vmdk.c b/block/vmdk.c index afd3471915..07630581f0 100644 --- a/block/vmdk.c +++ b/block/vmdk.c @@ -3130,11 +3130,11 @@ static BlockDriver bdrv_vmdk =3D { .bdrv_co_create_opts =3D vmdk_co_create_opts, .bdrv_co_create =3D vmdk_co_create, .bdrv_co_block_status =3D vmdk_co_block_status, - .bdrv_get_allocated_file_size =3D vmdk_get_allocated_file_size, + .bdrv_co_get_allocated_file_size =3D vmdk_get_allocated_file_size, .bdrv_has_zero_init =3D vmdk_has_zero_init, .bdrv_get_specific_info =3D vmdk_get_specific_info, .bdrv_refresh_limits =3D vmdk_refresh_limits, - .bdrv_get_info =3D vmdk_get_info, + .bdrv_co_get_info =3D vmdk_get_info, .bdrv_gather_child_options =3D vmdk_gather_child_options, =20 .is_format =3D true, diff --git a/block/vpc.c b/block/vpc.c index 6ee95dcb96..2d01488798 100644 --- a/block/vpc.c +++ b/block/vpc.c @@ -1240,7 +1240,7 @@ static BlockDriver bdrv_vpc =3D { .bdrv_co_pwritev =3D vpc_co_pwritev, .bdrv_co_block_status =3D vpc_co_block_status, =20 - .bdrv_get_info =3D vpc_get_info, + .bdrv_co_get_info =3D vpc_get_info, =20 .is_format =3D true, .create_opts =3D &vpc_create_opts, --=20 2.38.1