From nobody Fri Nov 14 16:56:48 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1762279379; cv=none; d=zohomail.com; s=zohoarc; b=V0fYdvE/kRvWYYTIEbModdvkZu9hMhL0JyqbNRrXUGEg0at068PFJb1obWrsEvMtTBPztaOzRvvnmVlAylRCQC4QC91BCN4l8PkyPb3hpvlb8ofzIstfvbeNIypUKansw4d+y4v3eFKrqb4H96+9k0tPU9a4jGw+nCAPTr+FB1g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1762279379; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=fDFRarAf5ZaB6K/52baQUM68FuJ2NxkUnuHxok7x0jE=; b=edQ2NBZxIwW/DspsXrhtolygCvwpqm6B7i67s8lKhHkLzcttUHieyar2gpTk9OrN8jjVALTjpVD8sRw/IV8s2C2pBG11I5S1AP6L8qBX9NtaxpNOrS9elJrM0BWMLXjKwLkr2wPH7FqqFvu7miDluJrJ9Gkv5e/ct9u3Uu0dNRg= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1762279379403614.7113387171586; Tue, 4 Nov 2025 10:02:59 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vGLLA-0006yL-WC; Tue, 04 Nov 2025 13:01:12 -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 1vGLFa-0001UT-Ve for qemu-devel@nongnu.org; Tue, 04 Nov 2025 12:55:38 -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 1vGLFX-00075n-4A for qemu-devel@nongnu.org; Tue, 04 Nov 2025 12:55:21 -0500 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-611-WJYgmD02P4CznJlCEZh7hg-1; Tue, 04 Nov 2025 12:55:13 -0500 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 331521956048; Tue, 4 Nov 2025 17:55:11 +0000 (UTC) Received: from merkur.fritz.box (unknown [10.45.226.47]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id E54311800577; Tue, 4 Nov 2025 17:55:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1762278918; 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=fDFRarAf5ZaB6K/52baQUM68FuJ2NxkUnuHxok7x0jE=; b=QRKtsvU2yjK/pDuDTBZcjO91V7M6FJE9Z+yKSSPHWQzlPkl2QBxoVs6GVL86D/7EGHKQdq PPgQb6b1ibFd86sfNvM/a664Mf/LgwwrgQYxoJwNRwiXu1ahB3APQFoWGUjKODZu6WxWPl /AeNImnPoGfppiIs0azVpoZEk00sAJw= X-MC-Unique: WJYgmD02P4CznJlCEZh7hg-1 X-Mimecast-MFC-AGG-ID: WJYgmD02P4CznJlCEZh7hg_1762278911 From: Kevin Wolf To: qemu-block@nongnu.org Cc: kwolf@redhat.com, qemu-devel@nongnu.org Subject: [PULL 26/27] block: Allow drivers to control protocol prefix at creation Date: Tue, 4 Nov 2025 18:54:14 +0100 Message-ID: <20251104175415.525388-27-kwolf@redhat.com> In-Reply-To: <20251104175415.525388-1-kwolf@redhat.com> References: <20251104175415.525388-1-kwolf@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 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: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.788, 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_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.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: 1762279382209154100 Content-Type: text/plain; charset="utf-8" From: Eric Blake This patch is pure refactoring: instead of hard-coding permission to use a protocol prefix when creating an image, the drivers can now pass in a parameter, comparable to what they could already do for opening a pre-existing image. This patch is purely mechanical (all drivers pass in true for now), but it will enable the next patch to cater to drivers that want to differ in behavior for the primary image vs. any secondary images that are opened at the same time as creating the primary image. Signed-off-by: Eric Blake Message-ID: <20250915213919.3121401-5-eblake@redhat.com> Reviewed-by: Kevin Wolf Signed-off-by: Kevin Wolf --- include/block/block-global-state.h | 3 ++- block.c | 4 ++-- block/crypto.c | 2 +- block/parallels.c | 2 +- block/qcow.c | 2 +- block/qcow2.c | 4 ++-- block/qed.c | 2 +- block/raw-format.c | 2 +- block/vdi.c | 2 +- block/vhdx.c | 2 +- block/vmdk.c | 2 +- block/vpc.c | 2 +- 12 files changed, 15 insertions(+), 14 deletions(-) diff --git a/include/block/block-global-state.h b/include/block/block-globa= l-state.h index 62da83c616..479ca2858e 100644 --- a/include/block/block-global-state.h +++ b/include/block/block-global-state.h @@ -65,7 +65,8 @@ int co_wrapper bdrv_create(BlockDriver *drv, const char *= filename, QemuOpts *opts, Error **errp); =20 int coroutine_fn GRAPH_UNLOCKED -bdrv_co_create_file(const char *filename, QemuOpts *opts, Error **errp); +bdrv_co_create_file(const char *filename, QemuOpts *opts, + bool allow_protocol_prefix, Error **errp); =20 BlockDriverState *bdrv_new(void); int bdrv_append(BlockDriverState *bs_new, BlockDriverState *bs_top, diff --git a/block.c b/block.c index 0fe0152a7c..4f1581cedf 100644 --- a/block.c +++ b/block.c @@ -693,7 +693,7 @@ out: } =20 int coroutine_fn bdrv_co_create_file(const char *filename, QemuOpts *opts, - Error **errp) + bool allow_protocol_prefix, Error **e= rrp) { QemuOpts *protocol_opts; BlockDriver *drv; @@ -702,7 +702,7 @@ int coroutine_fn bdrv_co_create_file(const char *filena= me, QemuOpts *opts, =20 GLOBAL_STATE_CODE(); =20 - drv =3D bdrv_find_protocol(filename, true, errp); + drv =3D bdrv_find_protocol(filename, allow_protocol_prefix, errp); if (drv =3D=3D NULL) { return -ENOENT; } diff --git a/block/crypto.c b/block/crypto.c index 7c37b23e36..b97d027444 100644 --- a/block/crypto.c +++ b/block/crypto.c @@ -835,7 +835,7 @@ block_crypto_co_create_opts_luks(BlockDriver *drv, cons= t char *filename, } =20 /* Create protocol layer */ - ret =3D bdrv_co_create_file(filename, opts, errp); + ret =3D bdrv_co_create_file(filename, opts, true, errp); if (ret < 0) { goto fail; } diff --git a/block/parallels.c b/block/parallels.c index 3a375e2a8a..7a90fb5220 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -1117,7 +1117,7 @@ parallels_co_create_opts(BlockDriver *drv, const char= *filename, } =20 /* Create and open the file (protocol layer) */ - ret =3D bdrv_co_create_file(filename, opts, errp); + ret =3D bdrv_co_create_file(filename, opts, true, errp); if (ret < 0) { goto done; } diff --git a/block/qcow.c b/block/qcow.c index b442bfe835..3d37d26ee8 100644 --- a/block/qcow.c +++ b/block/qcow.c @@ -978,7 +978,7 @@ qcow_co_create_opts(BlockDriver *drv, const char *filen= ame, } =20 /* Create and open the file (protocol layer) */ - ret =3D bdrv_co_create_file(filename, opts, errp); + ret =3D bdrv_co_create_file(filename, opts, true, errp); if (ret < 0) { goto fail; } diff --git a/block/qcow2.c b/block/qcow2.c index 4aa9f9e068..ec72e27214 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -3956,7 +3956,7 @@ qcow2_co_create_opts(BlockDriver *drv, const char *fi= lename, QemuOpts *opts, } =20 /* Create and open the file (protocol layer) */ - ret =3D bdrv_co_create_file(filename, opts, errp); + ret =3D bdrv_co_create_file(filename, opts, true, errp); if (ret < 0) { goto finish; } @@ -3971,7 +3971,7 @@ qcow2_co_create_opts(BlockDriver *drv, const char *fi= lename, QemuOpts *opts, /* Create and open an external data file (protocol layer) */ val =3D qdict_get_try_str(qdict, BLOCK_OPT_DATA_FILE); if (val) { - ret =3D bdrv_co_create_file(val, opts, errp); + ret =3D bdrv_co_create_file(val, opts, true, errp); if (ret < 0) { goto finish; } diff --git a/block/qed.c b/block/qed.c index 4a36fb3929..da23a83d62 100644 --- a/block/qed.c +++ b/block/qed.c @@ -788,7 +788,7 @@ bdrv_qed_co_create_opts(BlockDriver *drv, const char *f= ilename, } =20 /* Create and open the file (protocol layer) */ - ret =3D bdrv_co_create_file(filename, opts, errp); + ret =3D bdrv_co_create_file(filename, opts, true, errp); if (ret < 0) { goto fail; } diff --git a/block/raw-format.c b/block/raw-format.c index df16ac1ea2..a57c2922d5 100644 --- a/block/raw-format.c +++ b/block/raw-format.c @@ -463,7 +463,7 @@ static int coroutine_fn GRAPH_UNLOCKED raw_co_create_opts(BlockDriver *drv, const char *filename, QemuOpts *opts, Error **errp) { - return bdrv_co_create_file(filename, opts, errp); + return bdrv_co_create_file(filename, opts, true, errp); } =20 static int raw_open(BlockDriverState *bs, QDict *options, int flags, diff --git a/block/vdi.c b/block/vdi.c index 3ddc62a569..87b874a7ef 100644 --- a/block/vdi.c +++ b/block/vdi.c @@ -938,7 +938,7 @@ vdi_co_create_opts(BlockDriver *drv, const char *filena= me, qdict =3D qemu_opts_to_qdict_filtered(opts, NULL, &vdi_create_opts, tr= ue); =20 /* Create and open the file (protocol layer) */ - ret =3D bdrv_co_create_file(filename, opts, errp); + ret =3D bdrv_co_create_file(filename, opts, true, errp); if (ret < 0) { goto done; } diff --git a/block/vhdx.c b/block/vhdx.c index b2a4b813a0..c16e4a00c8 100644 --- a/block/vhdx.c +++ b/block/vhdx.c @@ -2096,7 +2096,7 @@ vhdx_co_create_opts(BlockDriver *drv, const char *fil= ename, } =20 /* Create and open the file (protocol layer) */ - ret =3D bdrv_co_create_file(filename, opts, errp); + ret =3D bdrv_co_create_file(filename, opts, true, errp); if (ret < 0) { goto fail; } diff --git a/block/vmdk.c b/block/vmdk.c index 7b98debc2b..eb3c174eca 100644 --- a/block/vmdk.c +++ b/block/vmdk.c @@ -2334,7 +2334,7 @@ vmdk_create_extent(const char *filename, int64_t file= size, bool flat, int ret; BlockBackend *blk =3D NULL; =20 - ret =3D bdrv_co_create_file(filename, opts, errp); + ret =3D bdrv_co_create_file(filename, opts, true, errp); if (ret < 0) { goto exit; } diff --git a/block/vpc.c b/block/vpc.c index 801ff5793f..07e8ae0309 100644 --- a/block/vpc.c +++ b/block/vpc.c @@ -1118,7 +1118,7 @@ vpc_co_create_opts(BlockDriver *drv, const char *file= name, } =20 /* Create and open the file (protocol layer) */ - ret =3D bdrv_co_create_file(filename, opts, errp); + ret =3D bdrv_co_create_file(filename, opts, true, errp); if (ret < 0) { goto fail; } --=20 2.51.1