Add an error_report when failing to open due to block-drv-whitelist
PATCH 1/1 Add an error_report when failing to open due to block-drv-whitelist
When configure qemu with --block-drv-whitelist we don't report when we are blocked by the white list and the resulting error message is misleading:
./configure --target-list=x86_64-softmmu \
--block-drv-whitelist=qcow2,raw,host_device,host_cdrom
x86_64-softmmu/qemu-system-x86_64 -L pc-bios -m 512 -drive \
file=fedora9_32_20G.qcow2,if=ide -monitor stdioqemu: could not open disk image fedora9_32_20G.qcow2: Inappropriate ioctl for device
Which might lead one to look at the bdrv probe functions for floppy/cdrom because we indeed will get an ioctl failure stored in errno and we report this in vl.c when we get a non-zero return value from bdrv_open().
This patch adds an error report when we fail the whitelist and changes the errno value to ENOPROTOOPT which was the closest thing I could think of that matched the actual error.
Now we get the following output on whitelist failure:
x86_64-softmmu/qemu-system-x86_64 -L pc-bios -m 512 -drive \
file=fedora9_32_20G.qcow2,if=ide -monitor stdioqemu-system-x86_64: -drive file=fedora9_32_20G.qcow2,if=ide: block-drv-whitelist prevents using format 'file'
qemu: could not open disk image fedora9_32_20G.qcow2: Protocol not supported
--- block.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)
block.c +3 -0
@@ -403,6 +403,9 @@ static int bdrv_open_common(BlockDriverState *bs, const char *filename,pstrcpy (bs->filename,sizeof (bs->filename), filename);if (use_bdrv_whitelist && !bdrv_is_whitelisted (drv)) { +error_report ("block-drv-whitelist prevents using format '%s'" , drv->format_name); +/* reset errno since we're failing because of whitelist restrictions */ + errno =EPROTONOSUPPORT ;return -ENOTSUP ; }
Signature · 9 lines
1.6.3.3 -- Ryan Harper Software Engineer; Linux Technology Center IBM Corp., Austin, Tx [email protected]
Quoted 18 lines · Ryan Harper
When configure qemu with --block-drv-whitelist we don't report when we are blocked by the white list and the resulting error message is misleading:
./configure --target-list=x86_64-softmmu \
--block-drv-whitelist=qcow2,raw,host_device,host_cdromx86_64-softmmu/qemu-system-x86_64 -L pc-bios -m 512 -drive \ file=fedora9_32_20G.qcow2,if=ide -monitor stdioqemu: could not open disk image fedora9_32_20G.qcow2: Inappropriate ioctl for device
Which might lead one to look at the bdrv probe functions for floppy/cdrom because we indeed will get an ioctl failure stored in errno and we report this in
vl.cwhen we get a non-zero return value frombdrv_open().This patch adds an error report when we fail the whitelist and changes the errno value to ENOPROTOOPT which was the closest thing I could think of that matched the actual error.
Quoted 7 lines
Now we get the following output on whitelist failure:
x86_64-softmmu/qemu-system-x86_64 -L pc-bios -m 512 -drive \ file=fedora9_32_20G.qcow2,if=ide -monitor stdioqemu-system-x86_64: -drive file=fedora9_32_20G.qcow2,if=ide: block-drv-whitelist prevents using format 'file'
qemu: could not open disk image fedora9_32_20G.qcow2: Protocol not supported
Do you really have to say raw and file in the whitelist? Is that what the source of the problem is?
Regards,
Anthony Liguori
Quoted 20 lines
Signed-off-by Ryan Harper<[email protected]>--- block.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)block.c +3
-0@@ -403,6 +403,9 @@ static int bdrv_open_common(BlockDriverState *bs, const char *filename,pstrcpy (bs->filename,sizeof (bs->filename), filename);if (use_bdrv_whitelist&& !bdrv_is_whitelisted (drv)) { +error_report ("block-drv-whitelist prevents using format '%s'" , drv->format_name); +/* reset errno since we're failing because of whitelist restrictions */ + errno =EPROTONOSUPPORT ;return -ENOTSUP ; }
Quoted 33 lines · Anthony Liguori
Quoted 22 lines · Ryan Harper
When configure qemu with --block-drv-whitelist we don't report when we are blocked by the white list and the resulting error message is misleading:
./configure --target-list=x86_64-softmmu \
--block-drv-whitelist=qcow2,raw,host_device,host_cdromx86_64-softmmu/qemu-system-x86_64 -L pc-bios -m 512 -drive \ file=fedora9_32_20G.qcow2,if=ide -monitor stdioqemu: could not open disk image fedora9_32_20G.qcow2: Inappropriate ioctl for device
Which might lead one to look at the bdrv probe functions for floppy/cdrom because we indeed will get an ioctl failure stored in errno and we report this
invl.cwhen we get a non-zero return value frombdrv_open().This patch adds an error report when we fail the whitelist and changes the errno
value to ENOPROTOOPT which was the closest thing I could think of that matched
the actual error.Quoted 9 lines
Now we get the following output on whitelist failure:
x86_64-softmmu/qemu-system-x86_64 -L pc-bios -m 512 -drive \ file=fedora9_32_20G.qcow2,if=ide -monitor stdioqemu-system-x86_64: -drive file=fedora9_32_20G.qcow2,if=ide:
block-drv-whitelist prevents using format 'file'
qemu: could not open disk image fedora9_32_20G.qcow2: Protocol not supported
Quoted 2 lines
Do you really have to say raw and file in the whitelist? Is that what the source of the problem is?
I have to add 'file' to the whitelist string to get the above command line to work.
Quoted 28 lines
Regards,
Anthony Liguori
Quoted 23 lines
Signed-off-by Ryan Harper<[email protected]>--- block.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)block.c +2
-0@@ -403,6 +403,9 @@ static int bdrv_open_common(BlockDriverState *bs,const char *filename, pstrcpy(bs->filename, sizeof(bs->filename), filename);if (use_bdrv_whitelist&& !bdrv_is_whitelisted (drv)) { +error_report ("block-drv-whitelist prevents using format '%s'" , drv->format_name); +/* reset errno since we're failing because of whitelist restrictions */
+ errno = EPROTONOSUPPORT; return -ENOTSUP; }
Signature · 4 lines
Ryan Harper Software Engineer; Linux Technology Center IBM Corp., Austin, Tx [email protected]
Am 09.06.2010 21:28, schrieb Ryan Harper:
Quoted 35 lines
When configure qemu with --block-drv-whitelist we don't report when we are blocked by the white list and the resulting error message is misleading:
./configure --target-list=x86_64-softmmu \
--block-drv-whitelist=qcow2,raw,host_device,host_cdromx86_64-softmmu/qemu-system-x86_64 -L pc-bios -m 512 -drive \ file=fedora9_32_20G.qcow2,if=ide -monitor stdioqemu: could not open disk image fedora9_32_20G.qcow2: Inappropriate ioctl for device
Which might lead one to look at the bdrv probe functions for floppy/cdrom because we indeed will get an ioctl failure stored in errno and we report this in
vl.cwhen we get a non-zero return value frombdrv_open().This patch adds an error report when we fail the whitelist and changes the errno value to ENOPROTOOPT which was the closest thing I could think of that matched the actual error.
Now we get the following output on whitelist failure:
x86_64-softmmu/qemu-system-x86_64 -L pc-bios -m 512 -drive \ file=fedora9_32_20G.qcow2,if=ide -monitor stdioqemu-system-x86_64: -drive file=fedora9_32_20G.qcow2,if=ide: block-drv-whitelist prevents using format 'file'
qemu: could not open disk image fedora9_32_20G.qcow2: Protocol not supportedSigned-off-by Ryan Harper <[email protected]>--- block.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)block.c +0
-0
block.c static int bdrv_open_common(BlockDriverState *bs, const char *filename, · line 408
Quoted 6 lines
block.c +3
-0@@ -403,6 +403,9 @@ static int bdrv_open_common(BlockDriverState *bs, const char *filename,pstrcpy (bs->filename,sizeof (bs->filename), filename);if (use_bdrv_whitelist && !bdrv_is_whitelisted (drv)) { +error_report ("block-drv-whitelist prevents using format '%s'" , drv->format_name); +/* reset errno since we're failing because of whitelist restrictions */ + errno =EPROTONOSUPPORT ;
Any code that relies on this errno is broken. errno isn't part of the bdrv_open interface. In fact, last week I have sent a patch to fix the error message to use the return value instead, Anthony just needs to pull.
The error_report may be a good idea, though.
Kevin