From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=35191 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OMe0k-0004xp-9j for qemu-devel@nongnu.org; Thu, 10 Jun 2010 05:25:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OMe0j-0007Mo-3N for qemu-devel@nongnu.org; Thu, 10 Jun 2010 05:25:18 -0400 Received: from mx1.redhat.com ([209.132.183.28]:24333) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OMe0i-0007Mi-Q5 for qemu-devel@nongnu.org; Thu, 10 Jun 2010 05:25:17 -0400 Message-ID: <4C10AF6C.10202@redhat.com> Date: Thu, 10 Jun 2010 11:25:00 +0200 From: Kevin Wolf MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH] Add an error_report when failing to open due to block-drv-whitelist References: <20100609192809.GX5280@us.ibm.com> In-Reply-To: <20100609192809.GX5280@us.ibm.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Ryan Harper Cc: qemu-devel@nongnu.org Am 09.06.2010 21:28, schrieb 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_cdrom > > x86_64-softmmu/qemu-system-x86_64 -L pc-bios -m 512 -drive \ > file=fedora9_32_20G.qcow2,if=ide -monitor stdio > qemu: 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 stdio > qemu-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 > > Signed-off-by: Ryan Harper > --- > block.c | 3 +++ > 1 files changed, 3 insertions(+), 0 deletions(-) > > diff --git a/block.c b/block.c > index 39724c1..ffcf7f2 100644 > --- a/block.c > +++ b/block.c > @@ -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