[libvirt] [PATCH RESEND] qdev: Make "hotplugged" property read-only

Eduardo Habkost ehabkost at redhat.com
Thu Feb 23 04:05:19 UTC 2017


On Wed, Feb 22, 2017 at 04:43:37PM -0600, Eric Blake wrote:
> On 02/22/2017 01:26 PM, Eduardo Habkost wrote:
> > The "hotplugged" property is user visible, but it was never meant
> > to be set by the user. There are probably multiple ways to break
> > or crash device code by overriding the property. For example, we
> > recently fixed a crash in rtc_set_memory() related to the
> > property (commit 26ef65beab852caf2b1ef4976e3473f2d525164d).
> > 
> > There has been some discussion about making management software
> > use "hotplugged=on" on migration, to indicate devices that were
> > hotplugged in the migration source. There were other suggestions
> > to address this, like including the "hotplugged" field in the
> > migration stream instead of requiring it to be set propertly.
> 
> s/propertly/properly/

Actually, I think I meant "requiring it to be set explicitly". I
will fix this in my branch. Thanks!

> 
> > 
> > Whatever solution we choose in the future, this patch disables
> > setting "hotplugged" explicitly in the command-line by now,
> > because the ability to set the property is unused, untested, and
> > undocumented.
> > 
> > Signed-off-by: Eduardo Habkost <ehabkost at redhat.com>
> > ---
> >  hw/core/qdev.c | 9 +--------
> >  1 file changed, 1 insertion(+), 8 deletions(-)
> 
> Reviewed-by: Eric Blake <eblake at redhat.com>

Thanks!

> 
> > 
> > diff --git a/hw/core/qdev.c b/hw/core/qdev.c
> > index 06ba02e2a3..800c9ca23f 100644
> > --- a/hw/core/qdev.c
> > +++ b/hw/core/qdev.c
> > @@ -1016,13 +1016,6 @@ static bool device_get_hotplugged(Object *obj, Error **err)
> >      return dev->hotplugged;
> >  }
> >  
> > -static void device_set_hotplugged(Object *obj, bool value, Error **err)
> > -{
> > -    DeviceState *dev = DEVICE(obj);
> > -
> > -    dev->hotplugged = value;
> > -}
> > -
> >  static void device_initfn(Object *obj)
> >  {
> >      DeviceState *dev = DEVICE(obj);
> > @@ -1042,7 +1035,7 @@ static void device_initfn(Object *obj)
> >      object_property_add_bool(obj, "hotpluggable",
> >                               device_get_hotpluggable, NULL, NULL);
> >      object_property_add_bool(obj, "hotplugged",
> > -                             device_get_hotplugged, device_set_hotplugged,
> > +                             device_get_hotplugged, NULL,
> >                               &error_abort);
> >  
> >      class = object_get_class(OBJECT(dev));
> > 
> 
> -- 
> Eric Blake   eblake redhat com    +1-919-301-3266
> Libvirt virtualization library http://libvirt.org
> 




-- 
Eduardo




More information about the libvir-list mailing list