From nobody Fri May 3 10:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1499250255495287.2831957513715; Wed, 5 Jul 2017 03:24:15 -0700 (PDT) Received: from localhost ([::1]:45300 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dShTf-0000uR-Pj for importer@patchew.org; Wed, 05 Jul 2017 06:24:11 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60432) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dShSP-00006m-Ec for qemu-devel@nongnu.org; Wed, 05 Jul 2017 06:22:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dShSM-0002h8-3g for qemu-devel@nongnu.org; Wed, 05 Jul 2017 06:22:53 -0400 Received: from mx1.redhat.com ([209.132.183.28]:36548) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dShSG-0002f2-M9; Wed, 05 Jul 2017 06:22:44 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id AF450C0587E4; Wed, 5 Jul 2017 10:22:43 +0000 (UTC) Received: from localhost (ovpn-117-111.ams2.redhat.com [10.36.117.111]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8054C6FB9D; Wed, 5 Jul 2017 10:22:38 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com AF450C0587E4 Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=stefanha@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com AF450C0587E4 From: Stefan Hajnoczi To: Date: Wed, 5 Jul 2017 11:22:30 +0100 Message-Id: <20170705102231.20711-2-stefanha@redhat.com> In-Reply-To: <20170705102231.20711-1-stefanha@redhat.com> References: <20170705102231.20711-1-stefanha@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Wed, 05 Jul 2017 10:22:43 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH 1/2] block: rename .bdrv_create() to .bdrv_co_create() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Stefan Hajnoczi , qemu-block@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" BlockDriver->bdrv_create() has been called from coroutine context since commit 5b7e1542cfa41a281af9629d31cef03704d976e6 ("block: make bdrv_create adopt coroutine"). Make this explicit by renaming to .bdrv_co_create() and add the coroutine_fn annotation. This makes it obvious to block driver authors that they may yield, use CoMutex, or other coroutine_fn APIs. Signed-off-by: Stefan Hajnoczi Reviewed-by: Marc-Andr=C3=A9 Lureau --- include/block/block_int.h | 3 ++- block.c | 4 ++-- block/crypto.c | 8 ++++---- block/file-posix.c | 15 ++++++++------- block/file-win32.c | 3 ++- block/gluster.c | 12 ++++++------ block/iscsi.c | 7 ++++--- block/nfs.c | 5 +++-- block/parallels.c | 6 ++++-- block/qcow.c | 5 +++-- block/qcow2.c | 5 +++-- block/qed.c | 6 ++++-- block/raw-format.c | 5 +++-- block/rbd.c | 6 ++++-- block/sheepdog.c | 10 +++++----- block/ssh.c | 5 +++-- block/vdi.c | 5 +++-- block/vhdx.c | 5 +++-- block/vmdk.c | 5 +++-- block/vpc.c | 5 +++-- 20 files changed, 72 insertions(+), 53 deletions(-) diff --git a/include/block/block_int.h b/include/block/block_int.h index 15fa602..3f32c61 100644 --- a/include/block/block_int.h +++ b/include/block/block_int.h @@ -126,7 +126,8 @@ struct BlockDriver { int (*bdrv_file_open)(BlockDriverState *bs, QDict *options, int flags, Error **errp); void (*bdrv_close)(BlockDriverState *bs); - int (*bdrv_create)(const char *filename, QemuOpts *opts, Error **errp); + int coroutine_fn (*bdrv_co_create)(const char *filename, QemuOpts *opt= s, + Error **errp); int (*bdrv_set_key)(BlockDriverState *bs, const char *key); int (*bdrv_make_empty)(BlockDriverState *bs); =20 diff --git a/block.c b/block.c index 6943962..223ca3f 100644 --- a/block.c +++ b/block.c @@ -416,7 +416,7 @@ static void coroutine_fn bdrv_create_co_entry(void *opa= que) CreateCo *cco =3D opaque; assert(cco->drv); =20 - ret =3D cco->drv->bdrv_create(cco->filename, cco->opts, &local_err); + ret =3D cco->drv->bdrv_co_create(cco->filename, cco->opts, &local_err); error_propagate(&cco->err, local_err); cco->ret =3D ret; } @@ -435,7 +435,7 @@ int bdrv_create(BlockDriver *drv, const char* filename, .err =3D NULL, }; =20 - if (!drv->bdrv_create) { + if (!drv->bdrv_co_create) { error_setg(errp, "Driver '%s' does not support image creation", dr= v->format_name); ret =3D -ENOTSUP; goto out; diff --git a/block/crypto.c b/block/crypto.c index 10e5ddc..8d2f403 100644 --- a/block/crypto.c +++ b/block/crypto.c @@ -568,9 +568,9 @@ static int block_crypto_open_luks(BlockDriverState *bs, bs, options, flags, errp); } =20 -static int block_crypto_create_luks(const char *filename, - QemuOpts *opts, - Error **errp) +static int coroutine_fn block_crypto_co_create_luks(const char *filename, + QemuOpts *opts, + Error **errp) { return block_crypto_create_generic(Q_CRYPTO_BLOCK_FORMAT_LUKS, filename, opts, errp); @@ -630,7 +630,7 @@ BlockDriver bdrv_crypto_luks =3D { .bdrv_open =3D block_crypto_open_luks, .bdrv_close =3D block_crypto_close, .bdrv_child_perm =3D bdrv_format_default_perms, - .bdrv_create =3D block_crypto_create_luks, + .bdrv_co_create =3D block_crypto_co_create_luks, .bdrv_truncate =3D block_crypto_truncate, .create_opts =3D &block_crypto_create_opts_luks, =20 diff --git a/block/file-posix.c b/block/file-posix.c index 3927fab..aefcae0 100644 --- a/block/file-posix.c +++ b/block/file-posix.c @@ -1835,7 +1835,8 @@ static int64_t raw_get_allocated_file_size(BlockDrive= rState *bs) return (int64_t)st.st_blocks * 512; } =20 -static int raw_create(const char *filename, QemuOpts *opts, Error **errp) +static int coroutine_fn raw_co_create(const char *filename, QemuOpts *opts, + Error **errp) { int fd; int result =3D 0; @@ -2197,7 +2198,7 @@ BlockDriver bdrv_file =3D { .bdrv_reopen_commit =3D raw_reopen_commit, .bdrv_reopen_abort =3D raw_reopen_abort, .bdrv_close =3D raw_close, - .bdrv_create =3D raw_create, + .bdrv_co_create =3D raw_co_create, .bdrv_has_zero_init =3D bdrv_has_zero_init_1, .bdrv_co_get_block_status =3D raw_co_get_block_status, .bdrv_co_pwrite_zeroes =3D raw_co_pwrite_zeroes, @@ -2592,8 +2593,8 @@ static coroutine_fn int hdev_co_pwrite_zeroes(BlockDr= iverState *bs, return -ENOTSUP; } =20 -static int hdev_create(const char *filename, QemuOpts *opts, - Error **errp) +static int coroutine_fn hdev_co_create(const char *filename, QemuOpts *opt= s, + Error **errp) { int fd; int ret =3D 0; @@ -2656,7 +2657,7 @@ static BlockDriver bdrv_host_device =3D { .bdrv_reopen_prepare =3D raw_reopen_prepare, .bdrv_reopen_commit =3D raw_reopen_commit, .bdrv_reopen_abort =3D raw_reopen_abort, - .bdrv_create =3D hdev_create, + .bdrv_co_create =3D hdev_co_create, .create_opts =3D &raw_create_opts, .bdrv_co_pwrite_zeroes =3D hdev_co_pwrite_zeroes, =20 @@ -2778,7 +2779,7 @@ static BlockDriver bdrv_host_cdrom =3D { .bdrv_reopen_prepare =3D raw_reopen_prepare, .bdrv_reopen_commit =3D raw_reopen_commit, .bdrv_reopen_abort =3D raw_reopen_abort, - .bdrv_create =3D hdev_create, + .bdrv_co_create =3D hdev_co_create, .create_opts =3D &raw_create_opts, =20 =20 @@ -2909,7 +2910,7 @@ static BlockDriver bdrv_host_cdrom =3D { .bdrv_reopen_prepare =3D raw_reopen_prepare, .bdrv_reopen_commit =3D raw_reopen_commit, .bdrv_reopen_abort =3D raw_reopen_abort, - .bdrv_create =3D hdev_create, + .bdrv_co_create =3D hdev_co_create, .create_opts =3D &raw_create_opts, =20 .bdrv_co_preadv =3D raw_co_preadv, diff --git a/block/file-win32.c b/block/file-win32.c index ef2910b..424f862 100644 --- a/block/file-win32.c +++ b/block/file-win32.c @@ -544,7 +544,8 @@ static int64_t raw_get_allocated_file_size(BlockDriverS= tate *bs) return st.st_size; } =20 -static int raw_create(const char *filename, QemuOpts *opts, Error **errp) +static int coroutine_fn raw_create(const char *filename, QemuOpts *opts, + Error **errp) { int fd; int64_t total_size =3D 0; diff --git a/block/gluster.c b/block/gluster.c index addceed..0b5f192 100644 --- a/block/gluster.c +++ b/block/gluster.c @@ -965,8 +965,8 @@ static coroutine_fn int qemu_gluster_co_pwrite_zeroes(B= lockDriverState *bs, } #endif =20 -static int qemu_gluster_create(const char *filename, - QemuOpts *opts, Error **errp) +static int coroutine_fn qemu_gluster_co_create(const char *filename, + QemuOpts *opts, Error **err= p) { BlockdevOptionsGluster *gconf; struct glfs *glfs; @@ -1422,7 +1422,7 @@ static BlockDriver bdrv_gluster =3D { .bdrv_reopen_commit =3D qemu_gluster_reopen_commit, .bdrv_reopen_abort =3D qemu_gluster_reopen_abort, .bdrv_close =3D qemu_gluster_close, - .bdrv_create =3D qemu_gluster_create, + .bdrv_co_create =3D qemu_gluster_co_create, .bdrv_getlength =3D qemu_gluster_getlength, .bdrv_get_allocated_file_size =3D qemu_gluster_allocated_file_size, .bdrv_truncate =3D qemu_gluster_truncate, @@ -1450,7 +1450,7 @@ static BlockDriver bdrv_gluster_tcp =3D { .bdrv_reopen_commit =3D qemu_gluster_reopen_commit, .bdrv_reopen_abort =3D qemu_gluster_reopen_abort, .bdrv_close =3D qemu_gluster_close, - .bdrv_create =3D qemu_gluster_create, + .bdrv_co_create =3D qemu_gluster_co_create, .bdrv_getlength =3D qemu_gluster_getlength, .bdrv_get_allocated_file_size =3D qemu_gluster_allocated_file_size, .bdrv_truncate =3D qemu_gluster_truncate, @@ -1478,7 +1478,7 @@ static BlockDriver bdrv_gluster_unix =3D { .bdrv_reopen_commit =3D qemu_gluster_reopen_commit, .bdrv_reopen_abort =3D qemu_gluster_reopen_abort, .bdrv_close =3D qemu_gluster_close, - .bdrv_create =3D qemu_gluster_create, + .bdrv_co_create =3D qemu_gluster_co_create, .bdrv_getlength =3D qemu_gluster_getlength, .bdrv_get_allocated_file_size =3D qemu_gluster_allocated_file_size, .bdrv_truncate =3D qemu_gluster_truncate, @@ -1512,7 +1512,7 @@ static BlockDriver bdrv_gluster_rdma =3D { .bdrv_reopen_commit =3D qemu_gluster_reopen_commit, .bdrv_reopen_abort =3D qemu_gluster_reopen_abort, .bdrv_close =3D qemu_gluster_close, - .bdrv_create =3D qemu_gluster_create, + .bdrv_co_create =3D qemu_gluster_co_create, .bdrv_getlength =3D qemu_gluster_getlength, .bdrv_get_allocated_file_size =3D qemu_gluster_allocated_file_size, .bdrv_truncate =3D qemu_gluster_truncate, diff --git a/block/iscsi.c b/block/iscsi.c index 54067e2..7aab379 100644 --- a/block/iscsi.c +++ b/block/iscsi.c @@ -2107,7 +2107,8 @@ static int iscsi_truncate(BlockDriverState *bs, int64= _t offset, Error **errp) return 0; } =20 -static int iscsi_create(const char *filename, QemuOpts *opts, Error **errp) +static int coroutine_fn iscsi_co_create(const char *filename, QemuOpts *op= ts, + Error **errp) { int ret =3D 0; int64_t total_size =3D 0; @@ -2195,7 +2196,7 @@ static BlockDriver bdrv_iscsi =3D { .bdrv_parse_filename =3D iscsi_parse_filename, .bdrv_file_open =3D iscsi_open, .bdrv_close =3D iscsi_close, - .bdrv_create =3D iscsi_create, + .bdrv_co_create =3D iscsi_co_create, .create_opts =3D &iscsi_create_opts, .bdrv_reopen_prepare =3D iscsi_reopen_prepare, .bdrv_reopen_commit =3D iscsi_reopen_commit, @@ -2230,7 +2231,7 @@ static BlockDriver bdrv_iser =3D { .bdrv_parse_filename =3D iscsi_parse_filename, .bdrv_file_open =3D iscsi_open, .bdrv_close =3D iscsi_close, - .bdrv_create =3D iscsi_create, + .bdrv_co_create =3D iscsi_co_create, .create_opts =3D &iscsi_create_opts, .bdrv_reopen_prepare =3D iscsi_reopen_prepare, .bdrv_reopen_commit =3D iscsi_reopen_commit, diff --git a/block/nfs.c b/block/nfs.c index c3c5de0..06e0c6f 100644 --- a/block/nfs.c +++ b/block/nfs.c @@ -679,7 +679,8 @@ static QemuOptsList nfs_create_opts =3D { } }; =20 -static int nfs_file_create(const char *url, QemuOpts *opts, Error **errp) +static int coroutine_fn nfs_file_co_create(const char *url, QemuOpts *opts, + Error **errp) { int ret =3D 0; int64_t total_size =3D 0; @@ -886,7 +887,7 @@ static BlockDriver bdrv_nfs =3D { =20 .bdrv_file_open =3D nfs_file_open, .bdrv_close =3D nfs_file_close, - .bdrv_create =3D nfs_file_create, + .bdrv_co_create =3D nfs_file_co_create, .bdrv_reopen_prepare =3D nfs_reopen_prepare, =20 .bdrv_co_preadv =3D nfs_co_preadv, diff --git a/block/parallels.c b/block/parallels.c index 8be46a7..82c6dd9 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -472,7 +472,9 @@ static int parallels_check(BlockDriverState *bs, BdrvCh= eckResult *res, } =20 =20 -static int parallels_create(const char *filename, QemuOpts *opts, Error **= errp) +static int coroutine_fn parallels_co_create(const char *filename, + QemuOpts *opts, + Error **errp) { int64_t total_size, cl_size; uint8_t tmp[BDRV_SECTOR_SIZE]; @@ -781,7 +783,7 @@ static BlockDriver bdrv_parallels =3D { .bdrv_co_readv =3D parallels_co_readv, .bdrv_co_writev =3D parallels_co_writev, =20 - .bdrv_create =3D parallels_create, + .bdrv_co_create =3D parallels_co_create, .bdrv_check =3D parallels_check, .create_opts =3D ¶llels_create_opts, }; diff --git a/block/qcow.c b/block/qcow.c index 7bd94dc..e765cf1 100644 --- a/block/qcow.c +++ b/block/qcow.c @@ -796,7 +796,8 @@ static void qcow_close(BlockDriverState *bs) error_free(s->migration_blocker); } =20 -static int qcow_create(const char *filename, QemuOpts *opts, Error **errp) +static int coroutine_fn qcow_co_create(const char *filename, QemuOpts *opt= s, + Error **errp) { int header_size, backing_filename_len, l1_size, shift, i; QCowHeader header; @@ -1056,7 +1057,7 @@ static BlockDriver bdrv_qcow =3D { .bdrv_close =3D qcow_close, .bdrv_child_perm =3D bdrv_format_default_perms, .bdrv_reopen_prepare =3D qcow_reopen_prepare, - .bdrv_create =3D qcow_create, + .bdrv_co_create =3D qcow_co_create, .bdrv_has_zero_init =3D bdrv_has_zero_init_1, .supports_backing =3D true, =20 diff --git a/block/qcow2.c b/block/qcow2.c index 2f94f03..5279839 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -2390,7 +2390,8 @@ out: return ret; } =20 -static int qcow2_create(const char *filename, QemuOpts *opts, Error **errp) +static int coroutine_fn qcow2_co_create(const char *filename, QemuOpts *op= ts, + Error **errp) { char *backing_file =3D NULL; char *backing_fmt =3D NULL; @@ -3473,7 +3474,7 @@ BlockDriver bdrv_qcow2 =3D { .bdrv_reopen_abort =3D qcow2_reopen_abort, .bdrv_join_options =3D qcow2_join_options, .bdrv_child_perm =3D bdrv_format_default_perms, - .bdrv_create =3D qcow2_create, + .bdrv_co_create =3D qcow2_co_create, .bdrv_has_zero_init =3D bdrv_has_zero_init_1, .bdrv_co_get_block_status =3D qcow2_co_get_block_status, .bdrv_set_key =3D qcow2_set_key, diff --git a/block/qed.c b/block/qed.c index 385381a..69027be 100644 --- a/block/qed.c +++ b/block/qed.c @@ -622,7 +622,9 @@ out: return ret; } =20 -static int bdrv_qed_create(const char *filename, QemuOpts *opts, Error **e= rrp) +static int coroutine_fn bdrv_qed_co_create(const char *filename, + QemuOpts *opts, + Error **errp) { uint64_t image_size =3D 0; uint32_t cluster_size =3D QED_DEFAULT_CLUSTER_SIZE; @@ -1532,7 +1534,7 @@ static BlockDriver bdrv_qed =3D { .bdrv_close =3D bdrv_qed_close, .bdrv_reopen_prepare =3D bdrv_qed_reopen_prepare, .bdrv_child_perm =3D bdrv_format_default_perms, - .bdrv_create =3D bdrv_qed_create, + .bdrv_co_create =3D bdrv_qed_co_create, .bdrv_has_zero_init =3D bdrv_has_zero_init_1, .bdrv_co_get_block_status =3D bdrv_qed_co_get_block_status, .bdrv_co_readv =3D bdrv_qed_co_readv, diff --git a/block/raw-format.c b/block/raw-format.c index 0d185fe..0cace4f 100644 --- a/block/raw-format.c +++ b/block/raw-format.c @@ -375,7 +375,8 @@ static int raw_has_zero_init(BlockDriverState *bs) return bdrv_has_zero_init(bs->file->bs); } =20 -static int raw_create(const char *filename, QemuOpts *opts, Error **errp) +static int coroutine_fn raw_co_create(const char *filename, QemuOpts *opts, + Error **errp) { return bdrv_create_file(filename, opts, errp); } @@ -470,7 +471,7 @@ BlockDriver bdrv_raw =3D { .bdrv_open =3D &raw_open, .bdrv_close =3D &raw_close, .bdrv_child_perm =3D bdrv_filter_default_perms, - .bdrv_create =3D &raw_create, + .bdrv_co_create =3D &raw_co_create, .bdrv_co_preadv =3D &raw_co_preadv, .bdrv_co_pwritev =3D &raw_co_pwritev, .bdrv_co_pwrite_zeroes =3D &raw_co_pwrite_zeroes, diff --git a/block/rbd.c b/block/rbd.c index 9da02cd..68c04a0 100644 --- a/block/rbd.c +++ b/block/rbd.c @@ -348,7 +348,9 @@ static QemuOptsList runtime_opts =3D { }, }; =20 -static int qemu_rbd_create(const char *filename, QemuOpts *opts, Error **e= rrp) +static int coroutine_fn qemu_rbd_co_create(const char *filename, + QemuOpts *opts, + Error **errp) { Error *local_err =3D NULL; int64_t bytes =3D 0; @@ -1116,7 +1118,7 @@ static BlockDriver bdrv_rbd =3D { .bdrv_file_open =3D qemu_rbd_open, .bdrv_close =3D qemu_rbd_close, .bdrv_reopen_prepare =3D qemu_rbd_reopen_prepare, - .bdrv_create =3D qemu_rbd_create, + .bdrv_co_create =3D qemu_rbd_co_create, .bdrv_has_zero_init =3D bdrv_has_zero_init_1, .bdrv_get_info =3D qemu_rbd_getinfo, .create_opts =3D &qemu_rbd_create_opts, diff --git a/block/sheepdog.c b/block/sheepdog.c index 08d7b11..32a4ee9 100644 --- a/block/sheepdog.c +++ b/block/sheepdog.c @@ -1952,8 +1952,8 @@ static int parse_block_size_shift(BDRVSheepdogState *= s, QemuOpts *opt) return 0; } =20 -static int sd_create(const char *filename, QemuOpts *opts, - Error **errp) +static int coroutine_fn sd_co_create(const char *filename, QemuOpts *opts, + Error **errp) { Error *err =3D NULL; int ret =3D 0; @@ -3063,7 +3063,7 @@ static BlockDriver bdrv_sheepdog =3D { .bdrv_reopen_commit =3D sd_reopen_commit, .bdrv_reopen_abort =3D sd_reopen_abort, .bdrv_close =3D sd_close, - .bdrv_create =3D sd_create, + .bdrv_co_create =3D sd_co_create, .bdrv_has_zero_init =3D bdrv_has_zero_init_1, .bdrv_getlength =3D sd_getlength, .bdrv_get_allocated_file_size =3D sd_get_allocated_file_size, @@ -3099,7 +3099,7 @@ static BlockDriver bdrv_sheepdog_tcp =3D { .bdrv_reopen_commit =3D sd_reopen_commit, .bdrv_reopen_abort =3D sd_reopen_abort, .bdrv_close =3D sd_close, - .bdrv_create =3D sd_create, + .bdrv_co_create =3D sd_co_create, .bdrv_has_zero_init =3D bdrv_has_zero_init_1, .bdrv_getlength =3D sd_getlength, .bdrv_get_allocated_file_size =3D sd_get_allocated_file_size, @@ -3135,7 +3135,7 @@ static BlockDriver bdrv_sheepdog_unix =3D { .bdrv_reopen_commit =3D sd_reopen_commit, .bdrv_reopen_abort =3D sd_reopen_abort, .bdrv_close =3D sd_close, - .bdrv_create =3D sd_create, + .bdrv_co_create =3D sd_co_create, .bdrv_has_zero_init =3D bdrv_has_zero_init_1, .bdrv_getlength =3D sd_getlength, .bdrv_get_allocated_file_size =3D sd_get_allocated_file_size, diff --git a/block/ssh.c b/block/ssh.c index 5296441..17755a9 100644 --- a/block/ssh.c +++ b/block/ssh.c @@ -813,7 +813,8 @@ static QemuOptsList ssh_create_opts =3D { } }; =20 -static int ssh_create(const char *filename, QemuOpts *opts, Error **errp) +static int coroutine_fn ssh_co_create(const char *filename, QemuOpts *opts, + Error **errp) { int r, ret; int64_t total_size =3D 0; @@ -1191,7 +1192,7 @@ static BlockDriver bdrv_ssh =3D { .instance_size =3D sizeof(BDRVSSHState), .bdrv_parse_filename =3D ssh_parse_filename, .bdrv_file_open =3D ssh_file_open, - .bdrv_create =3D ssh_create, + .bdrv_co_create =3D ssh_co_create, .bdrv_close =3D ssh_close, .bdrv_has_zero_init =3D ssh_has_zero_init, .bdrv_co_readv =3D ssh_co_readv, diff --git a/block/vdi.c b/block/vdi.c index 79af477..1d6e779 100644 --- a/block/vdi.c +++ b/block/vdi.c @@ -716,7 +716,8 @@ vdi_co_pwritev(BlockDriverState *bs, uint64_t offset, u= int64_t bytes, return ret; } =20 -static int vdi_create(const char *filename, QemuOpts *opts, Error **errp) +static int coroutine_fn vdi_co_create(const char *filename, QemuOpts *opts, + Error **errp) { int ret =3D 0; uint64_t bytes =3D 0; @@ -893,7 +894,7 @@ static BlockDriver bdrv_vdi =3D { .bdrv_close =3D vdi_close, .bdrv_reopen_prepare =3D vdi_reopen_prepare, .bdrv_child_perm =3D bdrv_format_default_perms, - .bdrv_create =3D vdi_create, + .bdrv_co_create =3D vdi_co_create, .bdrv_has_zero_init =3D bdrv_has_zero_init_1, .bdrv_co_get_block_status =3D vdi_co_get_block_status, .bdrv_make_empty =3D vdi_make_empty, diff --git a/block/vhdx.c b/block/vhdx.c index 8b270b5..e42a417 100644 --- a/block/vhdx.c +++ b/block/vhdx.c @@ -1787,7 +1787,8 @@ exit: * .---- ~ ----------- ~ ------------ ~ ---------------- ~ -----------. * 1MB */ -static int vhdx_create(const char *filename, QemuOpts *opts, Error **errp) +static int coroutine_fn vhdx_co_create(const char *filename, QemuOpts *opt= s, + Error **errp) { int ret =3D 0; uint64_t image_size =3D (uint64_t) 2 * GiB; @@ -1998,7 +1999,7 @@ static BlockDriver bdrv_vhdx =3D { .bdrv_child_perm =3D bdrv_format_default_perms, .bdrv_co_readv =3D vhdx_co_readv, .bdrv_co_writev =3D vhdx_co_writev, - .bdrv_create =3D vhdx_create, + .bdrv_co_create =3D vhdx_co_create, .bdrv_get_info =3D vhdx_get_info, .bdrv_check =3D vhdx_check, .bdrv_has_zero_init =3D bdrv_has_zero_init_1, diff --git a/block/vmdk.c b/block/vmdk.c index 55581b0..2579cfb 100644 --- a/block/vmdk.c +++ b/block/vmdk.c @@ -1857,7 +1857,8 @@ static int filename_decompose(const char *filename, c= har *path, char *prefix, return VMDK_OK; } =20 -static int vmdk_create(const char *filename, QemuOpts *opts, Error **errp) +static int coroutine_fn vmdk_co_create(const char *filename, QemuOpts *opt= s, + Error **errp) { int idx =3D 0; BlockBackend *new_blk =3D NULL; @@ -2360,7 +2361,7 @@ static BlockDriver bdrv_vmdk =3D { .bdrv_co_pwritev_compressed =3D vmdk_co_pwritev_compressed, .bdrv_co_pwrite_zeroes =3D vmdk_co_pwrite_zeroes, .bdrv_close =3D vmdk_close, - .bdrv_create =3D vmdk_create, + .bdrv_co_create =3D vmdk_co_create, .bdrv_co_flush_to_disk =3D vmdk_co_flush, .bdrv_co_get_block_status =3D vmdk_co_get_block_status, .bdrv_get_allocated_file_size =3D vmdk_get_allocated_file_size, diff --git a/block/vpc.c b/block/vpc.c index 4240ba9..eed03a3 100644 --- a/block/vpc.c +++ b/block/vpc.c @@ -872,7 +872,8 @@ static int create_fixed_disk(BlockBackend *blk, uint8_t= *buf, return ret; } =20 -static int vpc_create(const char *filename, QemuOpts *opts, Error **errp) +static int coroutine_fn vpc_co_create(const char *filename, QemuOpts *opts, + Error **errp) { uint8_t buf[1024]; VHDFooter *footer =3D (VHDFooter *) buf; @@ -1070,7 +1071,7 @@ static BlockDriver bdrv_vpc =3D { .bdrv_close =3D vpc_close, .bdrv_reopen_prepare =3D vpc_reopen_prepare, .bdrv_child_perm =3D bdrv_format_default_perms, - .bdrv_create =3D vpc_create, + .bdrv_co_create =3D vpc_co_create, =20 .bdrv_co_preadv =3D vpc_co_preadv, .bdrv_co_pwritev =3D vpc_co_pwritev, --=20 2.9.4 From nobody Fri May 3 10:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1499250321817768.6013795065903; Wed, 5 Jul 2017 03:25:21 -0700 (PDT) Received: from localhost ([::1]:45309 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dShUl-00026n-Kl for importer@patchew.org; Wed, 05 Jul 2017 06:25:19 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60419) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dShSL-0008VP-DU for qemu-devel@nongnu.org; Wed, 05 Jul 2017 06:22:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dShSK-0002gT-JL for qemu-devel@nongnu.org; Wed, 05 Jul 2017 06:22:49 -0400 Received: from mx1.redhat.com ([209.132.183.28]:42960) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dShSI-0002fV-Cz; Wed, 05 Jul 2017 06:22:46 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 58C21120EA; Wed, 5 Jul 2017 10:22:45 +0000 (UTC) Received: from localhost (ovpn-117-111.ams2.redhat.com [10.36.117.111]) by smtp.corp.redhat.com (Postfix) with ESMTP id DF38F6FE5E; Wed, 5 Jul 2017 10:22:44 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 58C21120EA Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=stefanha@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 58C21120EA From: Stefan Hajnoczi To: Date: Wed, 5 Jul 2017 11:22:31 +0100 Message-Id: <20170705102231.20711-3-stefanha@redhat.com> In-Reply-To: <20170705102231.20711-1-stefanha@redhat.com> References: <20170705102231.20711-1-stefanha@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Wed, 05 Jul 2017 10:22:45 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH 2/2] qcow2: make qcow2_co_create2() a coroutine_fn X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Stefan Hajnoczi , qemu-block@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" qcow2_create2() calls qemu_co_mutex_lock(). Only a coroutine_fn may call another coroutine_fn. Rename the function (the block layer API is now called .bdrv_co_create()) and add coroutine_fn. It is always called from coroutine context. Reported-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Stefan Hajnoczi Reviewed-by: Kevin Wolf Reviewed-by: Marc-Andr=C3=A9 Lureau --- block/qcow2.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/block/qcow2.c b/block/qcow2.c index 5279839..b0ae612 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -2140,11 +2140,12 @@ static int preallocate(BlockDriverState *bs) return 0; } =20 -static int qcow2_create2(const char *filename, int64_t total_size, - const char *backing_file, const char *backing_for= mat, - int flags, size_t cluster_size, PreallocMode prea= lloc, - QemuOpts *opts, int version, int refcount_order, - Error **errp) +static int coroutine_fn +qcow2_co_create2(const char *filename, int64_t total_size, + const char *backing_file, const char *backing_format, + int flags, size_t cluster_size, PreallocMode prealloc, + QemuOpts *opts, int version, int refcount_order, + Error **errp) { int cluster_bits; QDict *options; @@ -2476,9 +2477,9 @@ static int coroutine_fn qcow2_co_create(const char *f= ilename, QemuOpts *opts, =20 refcount_order =3D ctz32(refcount_bits); =20 - ret =3D qcow2_create2(filename, size, backing_file, backing_fmt, flags, - cluster_size, prealloc, opts, version, refcount_or= der, - &local_err); + ret =3D qcow2_co_create2(filename, size, backing_file, backing_fmt, fl= ags, + cluster_size, prealloc, opts, version, + refcount_order, &local_err); error_propagate(errp, local_err); =20 finish: --=20 2.9.4