diff mbox

block/raw-posix: Don't think /dev/fd/<NN> is a floppy drive.

Message ID 1435761614-31358-1-git-send-email-rjones@redhat.com
State New
Headers show

Commit Message

Richard W.M. Jones July 1, 2015, 2:40 p.m. UTC
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 <rjones@redhat.com>
Fixes: https://bugs.launchpad.net/qemu/+bug/1470536
---
 block/raw-posix.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Markus Armbruster July 1, 2015, 3:59 p.m. UTC | #1
"Richard W.M. Jones" <rjones@redhat.com> 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 <rjones@redhat.com>
> 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 <armbru@redhat.com>
Stefan Hajnoczi July 7, 2015, 11:52 a.m. UTC | #2
On Wed, Jul 01, 2015 at 03:40:14PM +0100, Richard W.M. Jones wrote:
> 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 <rjones@redhat.com>
> Fixes: https://bugs.launchpad.net/qemu/+bug/1470536
> ---
>  block/raw-posix.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)

Thanks, applied to my block tree:
https://github.com/stefanha/qemu/commits/block

Stefan
diff mbox

Patch

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;
     }