From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48383) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XWn8S-0001S5-LQ for qemu-devel@nongnu.org; Wed, 24 Sep 2014 10:01:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XWn8L-00005a-3I for qemu-devel@nongnu.org; Wed, 24 Sep 2014 10:01:36 -0400 Received: from mx1.redhat.com ([209.132.183.28]:58877) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XWn8K-0008Vt-Rh for qemu-devel@nongnu.org; Wed, 24 Sep 2014 10:01:29 -0400 Date: Wed, 24 Sep 2014 16:01:13 +0200 From: Igor Mammedov Message-ID: <20140924160113.42c20728@nial.usersys.redhat.com> In-Reply-To: <5422B6BA.1050802@redhat.com> References: <1411559299-19042-1-git-send-email-imammedo@redhat.com> <1411559299-19042-14-git-send-email-imammedo@redhat.com> <5422B6BA.1050802@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 13/30] qdev: hotplug: set handler only if HOTPLUG_HANDLER interface is supported List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: dmitry@daynix.com, mst@redhat.com, agraf@suse.de, qemu-devel@nongnu.org, cornelia.huck@de.ibm.com, kraxel@redhat.com, amit.shah@redhat.com, borntraeger@de.ibm.com, rth@twiddle.net On Wed, 24 Sep 2014 14:19:06 +0200 Paolo Bonzini wrote: > Il 24/09/2014 13:48, Igor Mammedov ha scritto: > > Check if 'handler' implements HOTPLUG_HANDLER interface > > before setting it, if it's not then do nothing and leave > > bus not hotpluggable. > > > > That would allow to reuse the same code for creating bus > > for example 'scsi_bus_new()' for both hotpluggable and not > > hotpluggable controllers. > > > > Signed-off-by: Igor Mammedov > > --- > > PS: > > Keep allow_hotplug = 1 before check to preserve legacy > > behaviour for incremental conversion without breaking > > bisect-ability. I will be removed later in series. > > --- > > include/hw/qdev-core.h | 7 ++++++- > > 1 file changed, 6 insertions(+), 1 deletion(-) > > > > diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h > > index ba812c5..653ff4a 100644 > > --- a/include/hw/qdev-core.h > > +++ b/include/hw/qdev-core.h > > @@ -366,9 +366,14 @@ char *qdev_get_dev_path(DeviceState *dev); > > static inline void qbus_set_hotplug_handler(BusState *bus, DeviceState *handler, > > Error **errp) > > { > > + bus->allow_hotplug = 1; > > + > > + if (!object_dynamic_cast(OBJECT(handler), TYPE_HOTPLUG_HANDLER)) { > > + return; > > + } > > + > > object_property_set_link(OBJECT(bus), OBJECT(handler), > > QDEV_HOTPLUG_HANDLER_PROPERTY, errp); > > - bus->allow_hotplug = 1; > > } > > > > static inline bool qbus_is_hotpluggable(BusState *bus) > > > > Ok, so scsi won't error_abort, but you are actually breaking > hotplug/unplug on HBAs other than virtio-scsi and pvscsi. On those HBAs > you can actually do surprise removal and hotplug, but you have to > manually rescan the bus in the virtual machine. I was hesitant what do with other HBAs without explicit hotplug notification. I'll add dropped patches that convert them as well. > > Reviewed-by: Paolo Bonzini >