diff --git a/block.c b/block.c index 6a2abfabcbc0e0cc4daacf7429e0e9129325eef2..3a24507d51ef28a6526fe56f073558696a9229e3 100644 --- a/block.c +++ b/block.c @@ -695,7 +695,7 @@ out: } int coroutine_fn bdrv_co_create_file(const char *filename, QemuOpts *opts, - Error **errp) + bool allow_protocol_prefix, Error **errp) { QemuOpts *protocol_opts; BlockDriver *drv; @@ -704,7 +704,7 @@ int coroutine_fn bdrv_co_create_file(const char *filename, QemuOpts *opts, GLOBAL_STATE_CODE(); - drv = bdrv_find_protocol(filename, true, errp); + drv = bdrv_find_protocol(filename, allow_protocol_prefix, errp); if (drv == NULL) { return -ENOENT; } diff --git a/block/crypto.c b/block/crypto.c index 921933a5e5f20156aae543781ec8b0941114def8..4dc3f6b5ffaaa027235bda08c68edd148420332f 100644 --- a/block/crypto.c +++ b/block/crypto.c @@ -709,7 +709,7 @@ block_crypto_co_create_opts_luks(BlockDriver *drv, const char *filename, } /* Create protocol layer */ - ret = bdrv_co_create_file(filename, opts, errp); + ret = bdrv_co_create_file(filename, opts, true, errp); if (ret < 0) { goto fail; } diff --git a/block/parallels.c b/block/parallels.c index 8f2b58e1c9978c71a4b185d4757d636b42593cb1..5e67eb9691fa77a7605ce8e67812373817d901f5 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -1117,7 +1117,7 @@ parallels_co_create_opts(BlockDriver *drv, const char *filename, } /* Create and open the file (protocol layer) */ - ret = bdrv_co_create_file(filename, opts, errp); + ret = bdrv_co_create_file(filename, opts, true, errp); if (ret < 0) { goto done; } diff --git a/block/qcow.c b/block/qcow.c index c6d0e15f1efc8193f8f49cd24342c63138d3c8f9..cd19a1e529961fb07420435aa39c3aa6701980e0 100644 --- a/block/qcow.c +++ b/block/qcow.c @@ -978,7 +978,7 @@ qcow_co_create_opts(BlockDriver *drv, const char *filename, } /* Create and open the file (protocol layer) */ - ret = bdrv_co_create_file(filename, opts, errp); + ret = bdrv_co_create_file(filename, opts, true, errp); if (ret < 0) { goto fail; } diff --git a/block/qcow2.c b/block/qcow2.c index 7af7c0bee4cfd93987d02b6b3cb3294c86a0b1b1..f2b5ba6f1c927f062a804db3d8e12da44ffe8b45 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -3954,7 +3954,7 @@ qcow2_co_create_opts(BlockDriver *drv, const char *filename, QemuOpts *opts, } /* Create and open the file (protocol layer) */ - ret = bdrv_co_create_file(filename, opts, errp); + ret = bdrv_co_create_file(filename, opts, true, errp); if (ret < 0) { goto finish; } @@ -3969,7 +3969,7 @@ qcow2_co_create_opts(BlockDriver *drv, const char *filename, QemuOpts *opts, /* Create and open an external data file (protocol layer) */ val = qdict_get_try_str(qdict, BLOCK_OPT_DATA_FILE); if (val) { - ret = bdrv_co_create_file(val, opts, errp); + ret = bdrv_co_create_file(val, opts, true, errp); if (ret < 0) { goto finish; } diff --git a/block/qed.c b/block/qed.c index b986353979c60ed20ebcab58b115a60c4d8b80db..26793e24c8f52a061dc0bff9978b6da7aba205c8 100644 --- a/block/qed.c +++ b/block/qed.c @@ -788,7 +788,7 @@ bdrv_qed_co_create_opts(BlockDriver *drv, const char *filename, } /* Create and open the file (protocol layer) */ - ret = bdrv_co_create_file(filename, opts, errp); + ret = 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 8195ed87cc76bd03a0e633ca797105db25f9c485..14328ea64a81cdb688ad34c19951b4567deadf04 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); } static int raw_open(BlockDriverState *bs, QDict *options, int flags, diff --git a/block/vdi.c b/block/vdi.c index 3b57becb9fe0d3f3cc0d31e254d82d5fb98e2c4c..b28eeefa3dd69123ca2c8629022e508c55f87af7 100644 --- a/block/vdi.c +++ b/block/vdi.c @@ -935,7 +935,7 @@ vdi_co_create_opts(BlockDriver *drv, const char *filename, qdict = qemu_opts_to_qdict_filtered(opts, NULL, &vdi_create_opts, true); /* Create and open the file (protocol layer) */ - ret = bdrv_co_create_file(filename, opts, errp); + ret = bdrv_co_create_file(filename, opts, true, errp); if (ret < 0) { goto done; } diff --git a/block/vhdx.c b/block/vhdx.c index 5aa1a13506268c84f4a9a6cbf2dcdfae6a5d94b5..b538ff8374728ff38a77553eb2c0709043963d81 100644 --- a/block/vhdx.c +++ b/block/vhdx.c @@ -2096,7 +2096,7 @@ vhdx_co_create_opts(BlockDriver *drv, const char *filename, } /* Create and open the file (protocol layer) */ - ret = bdrv_co_create_file(filename, opts, errp); + ret = bdrv_co_create_file(filename, opts, true, errp); if (ret < 0) { goto fail; } diff --git a/block/vmdk.c b/block/vmdk.c index d6971c706750a5c18cbd71c1e38a179ab15e61bb..2c5086a5112ba9a68ca7c32e3d5e9c698f2f920c 100644 --- a/block/vmdk.c +++ b/block/vmdk.c @@ -2331,7 +2331,7 @@ vmdk_create_extent(const char *filename, int64_t filesize, bool flat, int ret; BlockBackend *blk = NULL; - ret = bdrv_co_create_file(filename, opts, errp); + ret = bdrv_co_create_file(filename, opts, true, errp); if (ret < 0) { goto exit; } diff --git a/block/vpc.c b/block/vpc.c index d95a204612b7d8982a3fe35e2097a27fb8548d4a..00006e53109cb1b3ed76f44627cad9d6374dafec 100644 --- a/block/vpc.c +++ b/block/vpc.c @@ -1113,7 +1113,7 @@ vpc_co_create_opts(BlockDriver *drv, const char *filename, } /* Create and open the file (protocol layer) */ - ret = bdrv_co_create_file(filename, opts, errp); + ret = bdrv_co_create_file(filename, opts, true, errp); if (ret < 0) { goto fail; } diff --git a/include/block/block-global-state.h b/include/block/block-global-state.h index 6b21fbc73f779003a050df88dea20f32a54e4bff..f4b0f848755c3cad3d963e58db1b688dc806ab26 100644 --- a/include/block/block-global-state.h +++ b/include/block/block-global-state.h @@ -66,7 +66,8 @@ int co_wrapper bdrv_create(BlockDriver *drv, const char *filename, QemuOpts *opts, Error **errp); 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); BlockDriverState *bdrv_new(void); int bdrv_append(BlockDriverState *bs_new, BlockDriverState *bs_top,