[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [Qemu-devel] [PATCH] block/raw-posix: Don't think /dev/
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-block] [Qemu-devel] [PATCH] block/raw-posix: Don't think /dev/fd/<NN> is a floppy drive. |
Date: |
Wed, 01 Jul 2015 17:59:25 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) |
"Richard W.M. Jones" <address@hidden> writes:
> In libguestfs we use /dev/fd/<NN> to pass pre-opened file descriptors
> to qemu-img. Lately I've discovered that although this works, qemu
> believes that these are floppy disk images. That in itself isn't much
> of a problem, but now qemu prints a warning about host floppy
> pass-thru being deprecated.
>
> Extend the existing test so that it ignores /dev/fd/ as well as
> /dev/fdset/
>
> A simple test of this, if you are using the bash shell, is:
>
> qemu-img info <( cat /dev/null )
>
> without this patch:
>
> $ qemu-img info <( cat /dev/null )
> qemu-img: Host floppy pass-through is deprecated
> Support for it will be removed in a future release.
> qemu-img: Could not open '/dev/fd/63': Could not refresh total sector
> count: Illegal seek
>
> with this patch:
>
> $ qemu-img info <( cat /dev/null )
> qemu-img: Could not open '/dev/fd/63': Could not refresh total sector
> count: Illegal seek
>
> Signed-off-by: Richard W.M. Jones <address@hidden>
> Fixes: https://bugs.launchpad.net/qemu/+bug/1470536
> ---
> block/raw-posix.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/block/raw-posix.c b/block/raw-posix.c
> index cbe6574..855febe 100644
> --- a/block/raw-posix.c
> +++ b/block/raw-posix.c
> @@ -2430,7 +2430,8 @@ static int floppy_probe_device(const char *filename)
> struct stat st;
>
> if (strstart(filename, "/dev/fd", NULL) &&
> - !strstart(filename, "/dev/fdset/", NULL)) {
> + !strstart(filename, "/dev/fdset/", NULL) &&
> + !strstart(filename, "/dev/fd/", NULL)) {
> prio = 50;
> }
Checking filenames is slightly less krazy than it seems, because it's
under #ifdef __linux__. Not your fault anyway.
Reviewed-by: Markus Armbruster <address@hidden>