[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 01/15] block: Fail gracefully when using a forma
From: |
Eric Blake |
Subject: |
Re: [Qemu-devel] [PATCH 01/15] block: Fail gracefully when using a format driver on protocol level |
Date: |
Fri, 12 Apr 2013 16:50:27 -0600 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130402 Thunderbird/17.0.5 |
On 04/12/2013 02:47 PM, Kevin Wolf wrote:
> Specifying the wrong driver could fail an assertion:
>
> $ qemu-system-x86_64 -drive file.driver=qcow2,file=x
> qemu-system-x86_64: block.c:721: bdrv_open_common: Assertion `file !=
> ((void *)0)' failed.
>
> Signed-off-by: Kevin Wolf <address@hidden>
> ---
> block.c | 7 +++++++
> tests/qemu-iotests/051 | 7 +++++++
> tests/qemu-iotests/051.out | 10 ++++++++++
> 3 files changed, 24 insertions(+)
>
> diff --git a/block.c b/block.c
> index 602d8a4..f23bdcc 100644
> --- a/block.c
> +++ b/block.c
> @@ -718,6 +718,13 @@ static int bdrv_open_common(BlockDriverState *bs,
> BlockDriverState *file,
> assert(drv->bdrv_parse_filename || filename != NULL);
> ret = drv->bdrv_file_open(bs, filename, options, open_flags);
> } else {
> + if (file == NULL) {
> + qerror_report(ERROR_CLASS_GENERIC_ERROR, "The '%s' block driver
> is "
> + "not suitable for the bottom level",
> + drv->format_name);
> + ret = -EINVAL;
> + goto free_and_fail;
> + }
> assert(file != NULL);
Is it really necessary to leave the assert in place, now that you have a
check for NULL followed by unconditional goto?
Just reading that error message, I'm not quite sure what you meant by
"not suitable for the bottom level". I guess the intent is that
file.driver specifies the protocol, and that both raw and qcow2 are
formats possible on the file protocol, rather than qcow2 being a file
protocol itself.
> +Testing: -drive file=TEST_DIR/t.qcow2,file.driver=qcow2
> +qemu: -drive file=TEST_DIR/t.qcow2,file.driver=qcow2: The 'qcow2' block
> driver is not suitable for the bottom level
> +qemu: -drive file=TEST_DIR/t.qcow2,file.driver=qcow2: could not open disk
> image TEST_DIR/t.qcow2: Invalid argument
Maybe a better error message would be this?
Attempt to use format driver 'qcow2' where a protocol driver was expected
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
- [Qemu-devel] [PATCH 00/15] block: Overriding the backing file with -drive, Kevin Wolf, 2013/04/12
- [Qemu-devel] [PATCH 02/15] block: Add driver-specific options for backing files, Kevin Wolf, 2013/04/12
- [Qemu-devel] [PATCH 03/15] block: Enable filename option, Kevin Wolf, 2013/04/12
- [Qemu-devel] [PATCH 04/15] raw-posix: Use bdrv_open options instead of filename, Kevin Wolf, 2013/04/12
- [Qemu-devel] [PATCH 05/15] raw-win32: Use bdrv_open options instead of filename, Kevin Wolf, 2013/04/12