qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-block] [Qemu-devel] [PATCH v2] blockdev: Print a warning for l


From: Markus Armbruster
Subject: Re: [Qemu-block] [Qemu-devel] [PATCH v2] blockdev: Print a warning for legacy drive options that belong to -device
Date: Tue, 30 May 2017 07:20:34 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)

Thomas Huth <address@hidden> writes:

> We likely do not want to carry these legacy -drive options along forever.
> Let's emit a deprecation warning for the -drive options that have a
> replacement with the -device option, so that the (hopefully few) remaining
> users are aware of this and can adapt their scripts / behaviour accordingly.
>
> Signed-off-by: Thomas Huth <address@hidden>
> ---
>  v2:
>  - Check for !qtest_enabled() since tests/hd-geo-test still uses these
>  - Added "addr" to the list, too
>  - Also mark the options as deprecated in the documentation
>
>  blockdev.c      | 14 ++++++++++++++
>  qemu-options.hx |  5 ++++-
>  2 files changed, 18 insertions(+), 1 deletion(-)
>
> diff --git a/blockdev.c b/blockdev.c
> index 0b38c3d..aef38f0 100644
> --- a/blockdev.c
> +++ b/blockdev.c
> @@ -50,6 +50,7 @@
>  #include "qmp-commands.h"
>  #include "block/trace.h"
>  #include "sysemu/arch_init.h"
> +#include "sysemu/qtest.h"
>  #include "qemu/cutils.h"
>  #include "qemu/help_option.h"
>  #include "qemu/throttle-options.h"
> @@ -797,6 +798,9 @@ DriveInfo *drive_new(QemuOpts *all_opts, 
> BlockInterfaceType block_default_type)
>      const char *filename;
>      Error *local_err = NULL;
>      int i;
> +    const char *deprecated[] = {
> +        "serial", "trans", "secs", "heads", "cyls", "addr"
> +    };

I know I worked on turning (some of?) these into qdev properties, but
I've since forgotten the details, so let me review their current state
real quick:

* "serial": Silently ignored unless the device model chooses to pick it
  up.  Device models with a serial number should pick it up as a
  compatibility fallback for their qdev property, with blkconf_serial().
  Goes back to 2010-2011:

  a8686a9 virtio-blk: Turn drive serial into a qdev property
  c3a90cb usb-storage: Turn drive serial into a qdev property usb-storage.serial
  a0fef65 scsi: Turn drive serial into a qdev property scsi-disk.serial
  6ced55a ide: Turn drive serial into a qdev property ide-drive.serial

* "trans", "secs", "heads", "cyls": Similar, with blkconf_geometry().
  Goes back to 2012.

  6e6f61a ide: qdev property for BIOS CHS translation
  ba80196 ide: qdev properties for disk geometry
  e63e7fd virtio-blk: qdev properties for disk geometry
  d252df4 scsi-hd: qdev properties for disk geometry

* "addr": Only accepted with if=virtio.  drive_new() desugars it into
  the qdev property.

Okay.

>  
>      /* Change legacy command line options into QMP ones */
>      static const struct {
> @@ -880,6 +884,16 @@ DriveInfo *drive_new(QemuOpts *all_opts, 
> BlockInterfaceType block_default_type)
       if (qemu_opt_get(legacy_opts, "boot") != NULL) {
           fprintf(stderr, "qemu-kvm: boot=on|off is deprecated and will be "
                   "ignored. Future versions will reject this parameter. Please 
"
>                  "update your scripts.\n");

Unrelated to this patch: this is ugly.  It's also almost three years
old.  Can we bury the corpse already?

>      }
>  
> +    /* Other deprecated options */
> +    if (!qtest_enabled()) {
> +        for (i = 0; i < ARRAY_SIZE(deprecated); i++) {
> +            if (qemu_opt_get(legacy_opts, deprecated[i]) != NULL) {
> +                error_report("'%s' is deprecated, please use the 
> corresponding "
> +                             "option of '-device' instead", deprecated[i]);
> +            }
> +        }
> +    }
> +
>      /* Media type */
>      value = qemu_opt_get(legacy_opts, "media");
>      if (value) {
> diff --git a/qemu-options.hx b/qemu-options.hx
> index 9d7964d..2f66f1a 100644
> --- a/qemu-options.hx
> +++ b/qemu-options.hx
> @@ -615,6 +615,8 @@ of available connectors of a given interface type.
>  This option defines the type of the media: disk or cdrom.
>  @item address@hidden,address@hidden,address@hidden,address@hidden
>  These options have the same definition as they have in @option{-hdachs}.
> +These parameters are deprecated, use the corresponding parameters
> +of @code{-device} instead.
>  @item address@hidden
>  @var{snapshot} is "on" or "off" and controls snapshot mode for the given 
> drive
>  (see @option{-snapshot}).
> @@ -631,7 +633,8 @@ an untrusted format header.
>  @item address@hidden
>  This option specifies the serial number to assign to the device.
>  @item address@hidden
> -Specify the controller's PCI address (if=virtio only).
> +Specify the controller's PCI address (if=virtio only). This parameter is
> +deprecated, use the corresponding parameter of @code{-device} instead.
>  @item address@hidden,address@hidden
>  Specify which @var{action} to take on write and read errors. Valid actions 
> are:
>  "ignore" (ignore the error and try to continue), "stop" (pause QEMU),

Reviewed-by: Markus Armbruster <address@hidden>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]