[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v5 11/22] block: Allow block devices without fil
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-devel] [PATCH v5 11/22] block: Allow block devices without files |
Date: |
Fri, 13 Dec 2013 21:06:14 +0100 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
Am 13.12.2013 um 18:10 hat Max Reitz geschrieben:
> blkdebug and blkverify will, in order to retain compatibility, not
> support the field "file" implicitly through bdrv_open(). In order to be
> able to use those drivers without giving a filename anyway, it is
> necessary to be able to have block devices without files implicitly
> opened by bdrv_open(). This is the case, if there was neither a file
> name, a reference to an existing block device to use as a file nor
> options specific to the file.
>
> Signed-off-by: Max Reitz <address@hidden>
> ---
> block.c | 15 +++++++++------
> 1 file changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/block.c b/block.c
> index bef4f82..9659eb5 100644
> --- a/block.c
> +++ b/block.c
> @@ -1145,11 +1145,14 @@ int bdrv_open(BlockDriverState *bs, const char
> *filename, QDict *options,
> qdict_extract_subqdict(options, &file_options, "file.");
> file_reference = qdict_get_try_str(options, "file");
>
> - ret = bdrv_file_open(&file, filename, file_reference, file_options,
> - bdrv_open_flags(bs, flags | BDRV_O_UNMAP),
> &local_err);
> - qdict_del(options, "file");
> - if (ret < 0) {
> - goto fail;
> + if (filename || file_reference || qdict_size(file_options)) {
> + ret = bdrv_file_open(&file, filename, file_reference, file_options,
> + bdrv_open_flags(bs, flags | BDRV_O_UNMAP),
> + &local_err);
> + qdict_del(options, "file");
> + if (ret < 0) {
> + goto fail;
> + }
> }
>
> /* Find the right image format driver */
> @@ -1178,7 +1181,7 @@ int bdrv_open(BlockDriverState *bs, const char
> *filename, QDict *options,
Manually adding more context before the next hunk:
> if (!drv) {
> ret = find_image_format(file, filename, &drv, &local_err);
> }
We can get file == NULL now, which will cause a segfault in
find_image_format. (For a reproducer of the segfault, try
'x86_64-softmmu/qemu-system-x86_64 -drive foo=bar')
Kevin
- Re: [Qemu-devel] [PATCH v5 04/22] qapi: extend qdict_flatten() for QLists, (continued)
- [Qemu-devel] [PATCH v5 07/22] blkdebug: Always call read_config(), Max Reitz, 2013/12/13
- [Qemu-devel] [PATCH v5 08/22] blkdebug: Use command-line in read_config(), Max Reitz, 2013/12/13
- [Qemu-devel] [PATCH v5 09/22] block: Allow reference for bdrv_file_open(), Max Reitz, 2013/12/13
- [Qemu-devel] [PATCH v5 10/22] block: Pass reference to bdrv_file_open(), Max Reitz, 2013/12/13
- [Qemu-devel] [PATCH v5 11/22] block: Allow block devices without files, Max Reitz, 2013/12/13
- [Qemu-devel] [PATCH v5 12/22] block: Allow recursive "file"s, Max Reitz, 2013/12/13
- Re: [Qemu-devel] [PATCH v5 12/22] block: Allow recursive "file"s, Max Reitz, 2013/12/13
[Qemu-devel] [PATCH v5 13/22] qemu-iotests: Fix output of test 051, Max Reitz, 2013/12/13
[Qemu-devel] [PATCH v5 14/22] blockdev: Move "file" to legacy_opts, Max Reitz, 2013/12/13