From nobody Sun Apr 13 09:52:16 2025 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=1674217857; cv=none; d=zohomail.com; s=zohoarc; b=ckYsQk4J1ssayH6hn1HnCFXu6gaNtd3am4m/7bQcjzu8Omm4srGt4/Ei4xt/6Ncns+PqnU1jLjlbJyRBv+21ulrpeRjlsVlmCLBpOFIfNaB/kn6i+GVn6PrmT3K34N2OY9duchUJw2w6csnjfv9NoFjklXwMNknU+x/A6ERxNnI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1674217857; 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=pzuaqtB8NF7q0QfoEnjr+7n/Cgn/wfNsuwn6xh+LnbI=; b=h6WyFPERwq6WsOnpD2YF/K1h2dEEqo9aSnvJQzt+lNPiZGqpYDjn2ombPqDYjy8lVtoOSnqKUHNhtHqO3M7GzkVQnnEj2GwndSZ6ZvlotwZW5tZFEePFrw2yFre4XZ0R6W26yXvmX9FJcD07aTNTQS0YyYR5nLAQtbQ1XprubDA= 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 167421785782094.11294195012567; Fri, 20 Jan 2023 04:30:57 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pIqUE-0003BL-Br; Fri, 20 Jan 2023 07:27:14 -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 1pIqU8-0002vL-PI for qemu-devel@nongnu.org; Fri, 20 Jan 2023 07:27:11 -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 1pIqU4-0000OH-DQ for qemu-devel@nongnu.org; Fri, 20 Jan 2023 07:27:08 -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-643-ciW7MSfDNcaJnf73N8DvAA-1; Fri, 20 Jan 2023 07:27:00 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 0CDC61C189A7; Fri, 20 Jan 2023 12:27:00 +0000 (UTC) Received: from merkur.fritz.box (unknown [10.39.193.74]) by smtp.corp.redhat.com (Postfix) with ESMTP id 420EA40C6EC4; Fri, 20 Jan 2023 12:26:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1674217623; 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=pzuaqtB8NF7q0QfoEnjr+7n/Cgn/wfNsuwn6xh+LnbI=; b=FZPPFim9W3vXvztdZx6+Cckn/SbzFrRO94PBdbHGRJGg8w66K2PyfsBo4M/jSDjw5YVBUG BnvZWPR3yALZ7gwr0LJGCFP8m3J5CJHfijYYbUQjSV7iGl4WL3Ocz3CBzcgU/TcdIEeuCu 3Vm6QVlC8tkFKZgn3MaVxvmombwrJWo= X-MC-Unique: ciW7MSfDNcaJnf73N8DvAA-1 From: Kevin Wolf To: qemu-block@nongnu.org Cc: kwolf@redhat.com, peter.maydell@linaro.org, qemu-devel@nongnu.org Subject: [PULL 21/38] block: Convert bdrv_get_info() to co_wrapper_mixed Date: Fri, 20 Jan 2023 13:26:16 +0100 Message-Id: <20230120122633.84983-22-kwolf@redhat.com> In-Reply-To: <20230120122633.84983-1-kwolf@redhat.com> References: <20230120122633.84983-1-kwolf@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.2 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: 1674217859658100003 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 Message-Id: <20230113204212.359076-11-kwolf@redhat.com> Reviewed-by: Emanuele Giuseppe Esposito Signed-off-by: Kevin Wolf --- include/block/block-io.h | 5 ++++- include/block/block_int-common.h | 3 ++- block.c | 8 ++++---- block/blkio.c | 5 +++-- block/crypto.c | 8 ++++---- block/file-posix.c | 7 ++++--- block/io.c | 8 ++++---- block/iscsi.c | 7 ++++--- block/mirror.c | 2 +- block/qcow.c | 5 +++-- block/qcow2.c | 5 +++-- block/qed.c | 5 +++-- block/raw-format.c | 7 ++++--- block/rbd.c | 5 +++-- block/vdi.c | 7 ++++--- block/vhdx.c | 5 +++-- block/vmdk.c | 5 +++-- block/vpc.c | 5 +++-- 18 files changed, 59 insertions(+), 43 deletions(-) diff --git a/include/block/block-io.h b/include/block/block-io.h index 5b89b2d958..3a01923a0b 100644 --- a/include/block/block-io.h +++ b/include/block/block-io.h @@ -151,7 +151,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 cc03c599e7..a6ac8afd5b 100644 --- a/include/block/block_int-common.h +++ b/include/block/block_int-common.h @@ -697,7 +697,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_co_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 ed7e15f4d4..907239c267 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; @@ -6309,15 +6309,15 @@ int bdrv_get_info(BlockDriverState *bs, BlockDriver= Info *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_get_info(filtered, bdi); + return bdrv_co_get_info(filtered, 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; } diff --git a/block/blkio.c b/block/blkio.c index 2a3ab5a570..fc83e0fe13 100644 --- a/block/blkio.c +++ b/block/blkio.c @@ -878,7 +878,8 @@ static int coroutine_fn blkio_truncate(BlockDriverState= *bs, int64_t offset, return 0; } =20 -static int blkio_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) +static int coroutine_fn +blkio_co_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) { return 0; } @@ -998,7 +999,7 @@ static void blkio_refresh_limits(BlockDriverState *bs, = Error **errp) .bdrv_close =3D blkio_close, \ .bdrv_co_getlength =3D blkio_co_getlength, \ .bdrv_co_truncate =3D blkio_truncate, \ - .bdrv_get_info =3D blkio_get_info, \ + .bdrv_co_get_info =3D blkio_co_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, \ diff --git a/block/crypto.c b/block/crypto.c index 6d6c006887..b70cec97c7 100644 --- a/block/crypto.c +++ b/block/crypto.c @@ -737,13 +737,13 @@ fail: return ret; } =20 -static int block_crypto_get_info_luks(BlockDriverState *bs, - BlockDriverInfo *bdi) +static int coroutine_fn +block_crypto_co_get_info_luks(BlockDriverState *bs, BlockDriverInfo *bdi) { 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; } @@ -955,7 +955,7 @@ static BlockDriver bdrv_crypto_luks =3D { .bdrv_co_pwritev =3D block_crypto_co_pwritev, .bdrv_co_getlength =3D block_crypto_co_getlength, .bdrv_measure =3D block_crypto_measure, - .bdrv_get_info =3D block_crypto_get_info_luks, + .bdrv_co_get_info =3D block_crypto_co_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/file-posix.c b/block/file-posix.c index dd6427a281..2d7c2cbdd7 100644 --- a/block/file-posix.c +++ b/block/file-posix.c @@ -3085,7 +3085,8 @@ static int coroutine_fn raw_co_pwrite_zeroes( return raw_do_pwrite_zeroes(bs, offset, bytes, flags, false); } =20 -static int raw_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) +static int coroutine_fn +raw_co_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) { return 0; } @@ -3322,7 +3323,7 @@ BlockDriver bdrv_file =3D { =20 .bdrv_co_truncate =3D raw_co_truncate, .bdrv_co_getlength =3D raw_co_getlength, - .bdrv_get_info =3D raw_get_info, + .bdrv_co_get_info =3D raw_co_get_info, .bdrv_co_get_allocated_file_size =3D raw_co_get_allocated_file_size, .bdrv_get_specific_stats =3D raw_get_specific_stats, .bdrv_check_perm =3D raw_check_perm, @@ -3693,7 +3694,7 @@ static BlockDriver bdrv_host_device =3D { =20 .bdrv_co_truncate =3D raw_co_truncate, .bdrv_co_getlength =3D raw_co_getlength, - .bdrv_get_info =3D raw_get_info, + .bdrv_co_get_info =3D raw_co_get_info, .bdrv_co_get_allocated_file_size =3D raw_co_get_allocated_file_size, .bdrv_get_specific_stats =3D hdev_get_specific_stats, .bdrv_check_perm =3D raw_check_perm, diff --git a/block/io.c b/block/io.c index fdc5ba9fb6..c43637f5c1 100644 --- a/block/io.c +++ b/block/io.c @@ -721,14 +721,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 { @@ -738,12 +738,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/iscsi.c b/block/iscsi.c index df110dd1d2..b17b86cffd 100644 --- a/block/iscsi.c +++ b/block/iscsi.c @@ -2170,7 +2170,8 @@ static int coroutine_fn iscsi_co_truncate(BlockDriver= State *bs, int64_t offset, return 0; } =20 -static int iscsi_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) +static int coroutine_fn +iscsi_co_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) { IscsiLun *iscsilun =3D bs->opaque; bdi->cluster_size =3D iscsilun->cluster_size; @@ -2434,7 +2435,7 @@ static BlockDriver bdrv_iscsi =3D { .bdrv_co_invalidate_cache =3D iscsi_co_invalidate_cache, =20 .bdrv_co_getlength =3D iscsi_co_getlength, - .bdrv_get_info =3D iscsi_get_info, + .bdrv_co_get_info =3D iscsi_co_get_info, .bdrv_co_truncate =3D iscsi_co_truncate, .bdrv_refresh_limits =3D iscsi_refresh_limits, =20 @@ -2473,7 +2474,7 @@ static BlockDriver bdrv_iser =3D { .bdrv_co_invalidate_cache =3D iscsi_co_invalidate_cache, =20 .bdrv_co_getlength =3D iscsi_co_getlength, - .bdrv_get_info =3D iscsi_get_info, + .bdrv_co_get_info =3D iscsi_co_get_info, .bdrv_co_truncate =3D iscsi_co_truncate, .bdrv_refresh_limits =3D iscsi_refresh_limits, =20 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/qcow.c b/block/qcow.c index 5d99f00411..5f0801f545 100644 --- a/block/qcow.c +++ b/block/qcow.c @@ -1129,7 +1129,8 @@ fail: return ret; } =20 -static int qcow_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) +static int coroutine_fn +qcow_co_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) { BDRVQcowState *s =3D bs->opaque; bdi->cluster_size =3D s->cluster_size; @@ -1198,7 +1199,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_co_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 bafbd077b9..460579b70a 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -5142,7 +5142,8 @@ err: return NULL; } =20 -static int qcow2_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) +static int coroutine_fn +qcow2_co_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) { BDRVQcow2State *s =3D bs->opaque; bdi->cluster_size =3D s->cluster_size; @@ -6076,7 +6077,7 @@ 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_co_get_info, .bdrv_get_specific_info =3D qcow2_get_specific_info, =20 .bdrv_save_vmstate =3D qcow2_save_vmstate, diff --git a/block/qed.c b/block/qed.c index 16bf0cb080..4473465bba 100644 --- a/block/qed.c +++ b/block/qed.c @@ -1486,7 +1486,8 @@ static int64_t coroutine_fn bdrv_qed_co_getlength(Blo= ckDriverState *bs) return s->header.image_size; } =20 -static int bdrv_qed_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) +static int coroutine_fn +bdrv_qed_co_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) { BDRVQEDState *s =3D bs->opaque; =20 @@ -1654,7 +1655,7 @@ static BlockDriver bdrv_qed =3D { .bdrv_co_pwrite_zeroes =3D bdrv_qed_co_pwrite_zeroes, .bdrv_co_truncate =3D bdrv_qed_co_truncate, .bdrv_co_getlength =3D bdrv_qed_co_getlength, - .bdrv_get_info =3D bdrv_qed_get_info, + .bdrv_co_get_info =3D bdrv_qed_co_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/raw-format.c b/block/raw-format.c index ccf23fe0b2..08f5c74838 100644 --- a/block/raw-format.c +++ b/block/raw-format.c @@ -367,9 +367,10 @@ static BlockMeasureInfo *raw_measure(QemuOpts *opts, B= lockDriverState *in_bs, return info; } =20 -static int raw_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) +static int coroutine_fn +raw_co_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) @@ -625,7 +626,7 @@ BlockDriver bdrv_raw =3D { .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_co_get_info, .bdrv_refresh_limits =3D &raw_refresh_limits, .bdrv_probe_blocksizes =3D &raw_probe_blocksizes, .bdrv_probe_geometry =3D &raw_probe_geometry, diff --git a/block/rbd.c b/block/rbd.c index c67d30160a..2c03ab8408 100644 --- a/block/rbd.c +++ b/block/rbd.c @@ -1239,7 +1239,8 @@ coroutine_fn qemu_rbd_co_pwrite_zeroes(BlockDriverSta= te *bs, int64_t offset, } #endif =20 -static int qemu_rbd_getinfo(BlockDriverState *bs, BlockDriverInfo *bdi) +static int coroutine_fn +qemu_rbd_co_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) { BDRVRBDState *s =3D bs->opaque; bdi->cluster_size =3D s->object_size; @@ -1650,7 +1651,7 @@ 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_co_get_info, .bdrv_get_specific_info =3D qemu_rbd_get_specific_info, .create_opts =3D &qemu_rbd_create_opts, .bdrv_co_getlength =3D qemu_rbd_co_getlength, diff --git a/block/vdi.c b/block/vdi.c index 479bcfe820..9c8736b26f 100644 --- a/block/vdi.c +++ b/block/vdi.c @@ -327,9 +327,10 @@ static int coroutine_fn vdi_co_check(BlockDriverState = *bs, BdrvCheckResult *res, return 0; } =20 -static int vdi_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) +static int coroutine_fn +vdi_co_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) { - /* TODO: vdi_get_info would be needed for machine snapshots. + /* TODO: vdi_co_get_info would be needed for machine snapshots. vm_state_offset is still missing. */ BDRVVdiState *s =3D (BDRVVdiState *)bs->opaque; logout("\n"); @@ -1049,7 +1050,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_co_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..ef1f65d917 100644 --- a/block/vhdx.c +++ b/block/vhdx.c @@ -1161,7 +1161,8 @@ static void vhdx_block_translate(BDRVVHDXState *s, in= t64_t sector_num, } =20 =20 -static int vhdx_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) +static int coroutine_fn +vhdx_co_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) { BDRVVHDXState *s =3D bs->opaque; =20 @@ -2245,7 +2246,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_co_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 04f50d2e49..1bba61ad7d 100644 --- a/block/vmdk.c +++ b/block/vmdk.c @@ -3012,7 +3012,8 @@ static bool vmdk_extents_type_eq(const VmdkExtent *a,= const VmdkExtent *b) (a->flat || a->cluster_sectors =3D=3D b->cluster_sectors); } =20 -static int vmdk_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) +static int coroutine_fn +vmdk_co_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) { int i; BDRVVmdkState *s =3D bs->opaque; @@ -3129,7 +3130,7 @@ static BlockDriver bdrv_vmdk =3D { .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_co_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..cfdea7db80 100644 --- a/block/vpc.c +++ b/block/vpc.c @@ -598,7 +598,8 @@ fail: return ret; } =20 -static int vpc_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) +static int coroutine_fn +vpc_co_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) { BDRVVPCState *s =3D (BDRVVPCState *)bs->opaque; =20 @@ -1240,7 +1241,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_co_get_info, =20 .is_format =3D true, .create_opts =3D &vpc_create_opts, --=20 2.38.1