scsi: Convert pvscsi HBA to hotplug handler API
Signed-off-by: Igor Mammedov <imammedo@redhat.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
parent
bddd763a4e
commit
91c8daad4b
|
@ -524,17 +524,20 @@ pvscsi_send_msg(PVSCSIState *s, SCSIDevice *dev, uint32_t msg_type)
|
|||
}
|
||||
|
||||
static void
|
||||
pvscsi_hotplug(SCSIBus *bus, SCSIDevice *dev)
|
||||
pvscsi_hotplug(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp)
|
||||
{
|
||||
PVSCSIState *s = container_of(bus, PVSCSIState, bus);
|
||||
pvscsi_send_msg(s, dev, PVSCSI_MSG_DEV_ADDED);
|
||||
PVSCSIState *s = PVSCSI(hotplug_dev);
|
||||
|
||||
pvscsi_send_msg(s, SCSI_DEVICE(dev), PVSCSI_MSG_DEV_ADDED);
|
||||
}
|
||||
|
||||
static void
|
||||
pvscsi_hot_unplug(SCSIBus *bus, SCSIDevice *dev)
|
||||
pvscsi_hot_unplug(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp)
|
||||
{
|
||||
PVSCSIState *s = container_of(bus, PVSCSIState, bus);
|
||||
pvscsi_send_msg(s, dev, PVSCSI_MSG_DEV_REMOVED);
|
||||
PVSCSIState *s = PVSCSI(hotplug_dev);
|
||||
|
||||
pvscsi_send_msg(s, SCSI_DEVICE(dev), PVSCSI_MSG_DEV_REMOVED);
|
||||
qdev_simple_device_unplug_cb(hotplug_dev, dev, errp);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1057,8 +1060,6 @@ static const struct SCSIBusInfo pvscsi_scsi_info = {
|
|||
.get_sg_list = pvscsi_get_sg_list,
|
||||
.complete = pvscsi_command_complete,
|
||||
.cancel = pvscsi_request_cancelled,
|
||||
.hotplug = pvscsi_hotplug,
|
||||
.hot_unplug = pvscsi_hot_unplug,
|
||||
};
|
||||
|
||||
static int
|
||||
|
@ -1092,6 +1093,8 @@ pvscsi_init(PCIDevice *pci_dev)
|
|||
|
||||
scsi_bus_new(&s->bus, sizeof(s->bus), DEVICE(pci_dev),
|
||||
&pvscsi_scsi_info, NULL);
|
||||
/* override default SCSI bus hotplug-handler, with pvscsi's one */
|
||||
qbus_set_hotplug_handler(BUS(&s->bus), DEVICE(s), &error_abort);
|
||||
pvscsi_reset_state(s);
|
||||
|
||||
return 0;
|
||||
|
@ -1187,6 +1190,7 @@ static void pvscsi_class_init(ObjectClass *klass, void *data)
|
|||
{
|
||||
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||
PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
|
||||
HotplugHandlerClass *hc = HOTPLUG_HANDLER_CLASS(klass);
|
||||
|
||||
k->init = pvscsi_init;
|
||||
k->exit = pvscsi_uninit;
|
||||
|
@ -1199,6 +1203,8 @@ static void pvscsi_class_init(ObjectClass *klass, void *data)
|
|||
dc->props = pvscsi_properties;
|
||||
set_bit(DEVICE_CATEGORY_STORAGE, dc->categories);
|
||||
k->config_write = pvscsi_write_config;
|
||||
hc->unplug = pvscsi_hot_unplug;
|
||||
hc->plug = pvscsi_hotplug;
|
||||
}
|
||||
|
||||
static const TypeInfo pvscsi_info = {
|
||||
|
@ -1206,6 +1212,10 @@ static const TypeInfo pvscsi_info = {
|
|||
.parent = TYPE_PCI_DEVICE,
|
||||
.instance_size = sizeof(PVSCSIState),
|
||||
.class_init = pvscsi_class_init,
|
||||
.interfaces = (InterfaceInfo[]) {
|
||||
{ TYPE_HOTPLUG_HANDLER },
|
||||
{ }
|
||||
}
|
||||
};
|
||||
|
||||
static void
|
||||
|
|
Loading…
Reference in a new issue