[libvirt] [PATCH 1/3] qdev: add deprecation_reason to DeviceClass

P J P ppandit at redhat.com
Thu Oct 25 10:50:00 UTC 2018


+-- On Thu, 25 Oct 2018, Gerd Hoffmann wrote --+
| Simliar to deprecated machine types.
| Print a warning when creating a deprecated device.
| Add deprecation notice to -device help.
| 
| TODO: add to intospection.

 s/intospection/introspection ..?

| diff --git a/hw/core/qdev.c b/hw/core/qdev.c
| index 046d8f1..3b27a74 100644
| --- a/hw/core/qdev.c
| +++ b/hw/core/qdev.c
| @@ -133,11 +133,18 @@ DeviceState *qdev_create(BusState *bus, const char *name)
|  
|  DeviceState *qdev_try_create(BusState *bus, const char *type)
|  {
| +    DeviceClass *dc;
|      DeviceState *dev;
|  
| -    if (object_class_by_name(type) == NULL) {
| +    dc = DEVICE_CLASS(object_class_by_name(type));
| +    if (dc == NULL) {
|          return NULL;
|      }
| +    if (dc->deprecation_reason) {
| +        warn_report("device %s is deprecated (%s)",
| +                    type, dc->deprecation_reason);
| +    }
| +
|      dev = DEVICE(object_new(type));
|      if (!dev) {
|          return NULL;
| diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h
| index a24d0dd..a352eaa 100644
| --- a/include/hw/qdev-core.h
| +++ b/include/hw/qdev-core.h
| @@ -105,6 +105,7 @@ typedef struct DeviceClass {
|       */
|      bool user_creatable;
|      bool hotpluggable;
| +    const char *deprecation_reason;
|  
|      /* callbacks */
|      DeviceReset reset;
| diff --git a/qdev-monitor.c b/qdev-monitor.c
| index 802c18a..bbba2bc 100644
| --- a/qdev-monitor.c
| +++ b/qdev-monitor.c
| @@ -128,6 +128,9 @@ static void qdev_print_devinfo(DeviceClass *dc)
|      if (!dc->user_creatable) {
|          out_printf(", no-user");
|      }
| +    if (!dc->deprecation_reason) {
| +        out_printf(", deprecated");
| +    }
|      out_printf("\n");
|  }
|  
| @@ -579,6 +582,10 @@ DeviceState *qdev_device_add(QemuOpts *opts, Error **errp)
|      if (!dc) {
|          return NULL;
|      }
| +    if (dc->deprecation_reason) {
| +        warn_report("device %s is deprecated (%s)",
| +                    driver, dc->deprecation_reason);
| +    }
|  
|      /* find bus */
|      path = qemu_opt_get(opts, "bus");
| 

Looks good. Should 'deprecation_reason' be listed in qdev_device_help()?

Thank you.
--
Prasad J Pandit / Red Hat Product Security Team
47AF CE69 3A90 54AA 9045 1053 DD13 3D32 FE5B 041F




More information about the libvir-list mailing list