diff mbox

raw-posix: Deprecate host floppy passthrough

Message ID 1426608140-20592-1-git-send-email-armbru@redhat.com
State New
Headers show

Commit Message

Markus Armbruster March 17, 2015, 4:02 p.m. UTC
Raise your hand if you have a physical floppy drive in a computer
you've powered on in 2015.  Okay, I see we got a few weirdos in the
audience.  That's okay, weirdos are welcome here.

Kidding aside, media change detection doesn't fully work, isn't going
to be fixed, and floppy passthrough just isn't earning its keep
anymore.

Deprecate block driver host_floppy now, so we can drop it after a
grace period.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 block/raw-posix.c    | 2 ++
 qapi/block-core.json | 2 ++
 qemu-doc.texi        | 5 +++--
 qemu-options.hx      | 3 +--
 qmp-commands.hx      | 2 +-
 5 files changed, 9 insertions(+), 5 deletions(-)

Comments

Max Reitz March 17, 2015, 4:08 p.m. UTC | #1
On 2015-03-17 at 12:02, Markus Armbruster wrote:
> Raise your hand if you have a physical floppy drive in a computer
> you've powered on in 2015.  Okay, I see we got a few weirdos in the
> audience.  That's okay, weirdos are welcome here.

I do have a USB floppy drive. If I stuff that into my case, does it count?

> Kidding aside, media change detection doesn't fully work, isn't going
> to be fixed, and floppy passthrough just isn't earning its keep
> anymore.
>
> Deprecate block driver host_floppy now, so we can drop it after a
> grace period.
>
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
>   block/raw-posix.c    | 2 ++
>   qapi/block-core.json | 2 ++
>   qemu-doc.texi        | 5 +++--
>   qemu-options.hx      | 3 +--
>   qmp-commands.hx      | 2 +-
>   5 files changed, 9 insertions(+), 5 deletions(-)

Reviewed-by: Max Reitz <mreitz@redhat.com>
Markus Armbruster March 17, 2015, 4:08 p.m. UTC | #2
Forgot to mention:

1. For 2.3!

2. Testing without a physical floppy:

    # > /dev/fd0
    # chown armbru /dev/fd0

    $ qemu-system-x86_64 -nodefaults -fda /dev/fd0
    qemu-system-x86_64: -fda /dev/fd0: Host floppy pass-through is deprecated
    Support for it will be removed in a future release.
    WARNING: Image format was not specified for '/dev/fd0' and probing guessed raw.
             Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
             Specify the 'raw' format explicitly to remove the restrictions.

   The long lines are ugly, but not this patch's fault :)
Max Reitz March 17, 2015, 4:10 p.m. UTC | #3
On 2015-03-17 at 12:08, Markus Armbruster wrote:
> Forgot to mention:
>
> 1. For 2.3!
>
> 2. Testing without a physical floppy:
>
>      # > /dev/fd0
>      # chown armbru /dev/fd0
>
>      $ qemu-system-x86_64 -nodefaults -fda /dev/fd0
>      qemu-system-x86_64: -fda /dev/fd0: Host floppy pass-through is deprecated
>      Support for it will be removed in a future release.
>      WARNING: Image format was not specified for '/dev/fd0' and probing guessed raw.
>               Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
>               Specify the 'raw' format explicitly to remove the restrictions.

Or just

$ qemu-img create -f qcow2 floppy.qcow2 1440K
$ qemu-system-x86_64 -fda host_floppy:floppy.qcow2
qemu-system-x86_64: -fda host_floppy:floppy.qcow2: Host floppy 
pass-through is deprecated
Support for it will be removed in a future release.

Max

>
>     The long lines are ugly, but not this patch's fault :)
Eric Blake March 17, 2015, 4:25 p.m. UTC | #4
On 03/17/2015 10:02 AM, Markus Armbruster wrote:
> Raise your hand if you have a physical floppy drive in a computer
> you've powered on in 2015.  Okay, I see we got a few weirdos in the
> audience.  That's okay, weirdos are welcome here.
> 
> Kidding aside, media change detection doesn't fully work, isn't going
> to be fixed, and floppy passthrough just isn't earning its keep
> anymore.
> 
> Deprecate block driver host_floppy now, so we can drop it after a
> grace period.
> 
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---

> +++ b/qapi/block-core.json
> @@ -218,6 +218,7 @@
>  #       'host_floppy', 'http', 'https', 'nbd', 'parallels', 'qcow',
>  #       'qcow2', 'raw', 'tftp', 'vdi', 'vmdk', 'vpc', 'vvfat'
>  #       2.2: 'archipelago' added, 'cow' dropped
> +#       2.3: 'host_floppy' deprecated

We dropped 'cow' without any deprecation period, but I don't mind giving
a few more months reprieve to host_floppy users.  At any rate, I won't
be sad to see it gone :)

Reviewed-by: Eric Blake <eblake@redhat.com>
John Snow March 17, 2015, 4:38 p.m. UTC | #5
On 03/17/2015 12:02 PM, Markus Armbruster wrote:
> Raise your hand if you have a physical floppy drive in a computer
> you've powered on in 2015.  Okay, I see we got a few weirdos in the
> audience.  That's okay, weirdos are welcome here.
>

May I introduce to you my reference Q35 machine:
http://i.imgur.com/4gCnetj.jpg

> Kidding aside, media change detection doesn't fully work, isn't going
> to be fixed, and floppy passthrough just isn't earning its keep
> anymore.
>
> Deprecate block driver host_floppy now, so we can drop it after a
> grace period.
>
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
>   block/raw-posix.c    | 2 ++
>   qapi/block-core.json | 2 ++
>   qemu-doc.texi        | 5 +++--
>   qemu-options.hx      | 3 +--
>   qmp-commands.hx      | 2 +-
>   5 files changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/block/raw-posix.c b/block/raw-posix.c
> index f0b4488..844ac21 100644
> --- a/block/raw-posix.c
> +++ b/block/raw-posix.c
> @@ -2387,6 +2387,8 @@ static int floppy_open(BlockDriverState *bs, QDict *options, int flags,
>       s->fd = -1;
>       s->fd_media_changed = 1;
>
> +    error_report("Host floppy pass-through is deprecated");
> +    error_printf("Support for it will be removed in a future release.\n");
>       return 0;
>   }
>
> diff --git a/qapi/block-core.json b/qapi/block-core.json
> index 42c8850..ac839af 100644
> --- a/qapi/block-core.json
> +++ b/qapi/block-core.json
> @@ -218,6 +218,7 @@
>   #       'host_floppy', 'http', 'https', 'nbd', 'parallels', 'qcow',
>   #       'qcow2', 'raw', 'tftp', 'vdi', 'vmdk', 'vpc', 'vvfat'
>   #       2.2: 'archipelago' added, 'cow' dropped
> +#       2.3: 'host_floppy' deprecated
>   #
>   # @backing_file: #optional the name of the backing file (for copy-on-write)
>   #
> @@ -1245,6 +1246,7 @@
>   # Drivers that are supported in block device operations.
>   #
>   # @host_device, @host_cdrom, @host_floppy: Since 2.1
> +# @host_floppy: deprecated since 2.3
>   #
>   # Since: 2.0
>   ##
> diff --git a/qemu-doc.texi b/qemu-doc.texi
> index 8aa6dbf..0125bc7 100644
> --- a/qemu-doc.texi
> +++ b/qemu-doc.texi
> @@ -736,8 +736,7 @@ devices. We describe here the usage for QEMU version >= 0.8.3.
>
>   On Linux, you can directly use the host device filename instead of a
>   disk image filename provided you have enough privileges to access
> -it. For example, use @file{/dev/cdrom} to access to the CDROM or
> -@file{/dev/fd0} for the floppy.
> +it. For example, use @file{/dev/cdrom} to access to the CDROM.
>
>   @table @code
>   @item CD
> @@ -749,6 +748,8 @@ You can specify a floppy device even if no floppy is loaded. Floppy
>   removal is currently not detected accurately (if you change floppy
>   without doing floppy access while the floppy is not loaded, the guest
>   OS will think that the same floppy is loaded).
> +Use of the host's floppy device is deprecated, and support for it will
> +be removed in a future release.
>   @item Hard disks
>   Hard disks can be used. Normally you must specify the whole disk
>   (@file{/dev/hdb} instead of @file{/dev/hdb1}) so that the guest OS can
> diff --git a/qemu-options.hx b/qemu-options.hx
> index c513352..ffaf327 100644
> --- a/qemu-options.hx
> +++ b/qemu-options.hx
> @@ -419,8 +419,7 @@ STEXI
>   @item -fdb @var{file}
>   @findex -fda
>   @findex -fdb
> -Use @var{file} as floppy disk 0/1 image (@pxref{disk_images}). You can
> -use the host floppy by using @file{/dev/fd0} as filename (@pxref{host_drives}).
> +Use @var{file} as floppy disk 0/1 image (@pxref{disk_images}).
>   ETEXI
>
>   DEF("hda", HAS_ARG, QEMU_OPTION_hda,
> diff --git a/qmp-commands.hx b/qmp-commands.hx
> index 0663924..faf75da 100644
> --- a/qmp-commands.hx
> +++ b/qmp-commands.hx
> @@ -2154,7 +2154,7 @@ Each json-object contain the following:
>            - "drv": driver format name (json-string)
>                - Possible values: "blkdebug", "bochs", "cloop", "dmg",
>                                   "file", "file", "ftp", "ftps", "host_cdrom",
> -                                "host_device", "host_floppy", "http", "https",
> +                                "host_device", "http", "https",
>                                   "nbd", "parallels", "qcow", "qcow2", "raw",
>                                   "tftp", "vdi", "vmdk", "vpc", "vvfat"
>            - "backing_file": backing file name (json-string, optional)
>
Markus Armbruster March 18, 2015, 7:38 a.m. UTC | #6
John Snow <jsnow@redhat.com> writes:

> On 03/17/2015 12:02 PM, Markus Armbruster wrote:
>> Raise your hand if you have a physical floppy drive in a computer
>> you've powered on in 2015.  Okay, I see we got a few weirdos in the
>> audience.  That's okay, weirdos are welcome here.
>>
>
> May I introduce to you my reference Q35 machine:
> http://i.imgur.com/4gCnetj.jpg

Take good care of it, so it doesn't die on us before pc-q35 is done!
Gerd Hoffmann March 18, 2015, 7:41 a.m. UTC | #7
On Di, 2015-03-17 at 17:02 +0100, Markus Armbruster wrote:
> Raise your hand if you have a physical floppy drive in a computer
> you've powered on in 2015.

/me raises the hand, my amd test box has one.

I was surprised when I got the machine a few years back.
And I never ever actually used the floppy drive in all those years.

> Kidding aside, media change detection doesn't fully work, isn't going
> to be fixed, and floppy passthrough just isn't earning its keep
> anymore.

If you really need floppies there is the option to go for usb.  Recent
machines don't have floppy connectors any more, so that is the only kind
of floppy device you can use anyway.  And you can usb passthrough it to
the guest.  Case closed.

Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>

cheers,
  Gerd
Kevin Wolf March 19, 2015, 10:42 a.m. UTC | #8
Am 17.03.2015 um 17:02 hat Markus Armbruster geschrieben:
> Raise your hand if you have a physical floppy drive in a computer
> you've powered on in 2015.  Okay, I see we got a few weirdos in the
> audience.  That's okay, weirdos are welcome here.
> 
> Kidding aside, media change detection doesn't fully work, isn't going
> to be fixed, and floppy passthrough just isn't earning its keep
> anymore.
> 
> Deprecate block driver host_floppy now, so we can drop it after a
> grace period.
> 
> Signed-off-by: Markus Armbruster <armbru@redhat.com>

Thanks, applied to the block branch.

Kevin
diff mbox

Patch

diff --git a/block/raw-posix.c b/block/raw-posix.c
index f0b4488..844ac21 100644
--- a/block/raw-posix.c
+++ b/block/raw-posix.c
@@ -2387,6 +2387,8 @@  static int floppy_open(BlockDriverState *bs, QDict *options, int flags,
     s->fd = -1;
     s->fd_media_changed = 1;
 
+    error_report("Host floppy pass-through is deprecated");
+    error_printf("Support for it will be removed in a future release.\n");
     return 0;
 }
 
diff --git a/qapi/block-core.json b/qapi/block-core.json
index 42c8850..ac839af 100644
--- a/qapi/block-core.json
+++ b/qapi/block-core.json
@@ -218,6 +218,7 @@ 
 #       'host_floppy', 'http', 'https', 'nbd', 'parallels', 'qcow',
 #       'qcow2', 'raw', 'tftp', 'vdi', 'vmdk', 'vpc', 'vvfat'
 #       2.2: 'archipelago' added, 'cow' dropped
+#       2.3: 'host_floppy' deprecated
 #
 # @backing_file: #optional the name of the backing file (for copy-on-write)
 #
@@ -1245,6 +1246,7 @@ 
 # Drivers that are supported in block device operations.
 #
 # @host_device, @host_cdrom, @host_floppy: Since 2.1
+# @host_floppy: deprecated since 2.3
 #
 # Since: 2.0
 ##
diff --git a/qemu-doc.texi b/qemu-doc.texi
index 8aa6dbf..0125bc7 100644
--- a/qemu-doc.texi
+++ b/qemu-doc.texi
@@ -736,8 +736,7 @@  devices. We describe here the usage for QEMU version >= 0.8.3.
 
 On Linux, you can directly use the host device filename instead of a
 disk image filename provided you have enough privileges to access
-it. For example, use @file{/dev/cdrom} to access to the CDROM or
-@file{/dev/fd0} for the floppy.
+it. For example, use @file{/dev/cdrom} to access to the CDROM.
 
 @table @code
 @item CD
@@ -749,6 +748,8 @@  You can specify a floppy device even if no floppy is loaded. Floppy
 removal is currently not detected accurately (if you change floppy
 without doing floppy access while the floppy is not loaded, the guest
 OS will think that the same floppy is loaded).
+Use of the host's floppy device is deprecated, and support for it will
+be removed in a future release.
 @item Hard disks
 Hard disks can be used. Normally you must specify the whole disk
 (@file{/dev/hdb} instead of @file{/dev/hdb1}) so that the guest OS can
diff --git a/qemu-options.hx b/qemu-options.hx
index c513352..ffaf327 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -419,8 +419,7 @@  STEXI
 @item -fdb @var{file}
 @findex -fda
 @findex -fdb
-Use @var{file} as floppy disk 0/1 image (@pxref{disk_images}). You can
-use the host floppy by using @file{/dev/fd0} as filename (@pxref{host_drives}).
+Use @var{file} as floppy disk 0/1 image (@pxref{disk_images}).
 ETEXI
 
 DEF("hda", HAS_ARG, QEMU_OPTION_hda,
diff --git a/qmp-commands.hx b/qmp-commands.hx
index 0663924..faf75da 100644
--- a/qmp-commands.hx
+++ b/qmp-commands.hx
@@ -2154,7 +2154,7 @@  Each json-object contain the following:
          - "drv": driver format name (json-string)
              - Possible values: "blkdebug", "bochs", "cloop", "dmg",
                                 "file", "file", "ftp", "ftps", "host_cdrom",
-                                "host_device", "host_floppy", "http", "https",
+                                "host_device", "http", "https",
                                 "nbd", "parallels", "qcow", "qcow2", "raw",
                                 "tftp", "vdi", "vmdk", "vpc", "vvfat"
          - "backing_file": backing file name (json-string, optional)