Am 09.11.2015 um 23:39 hat Max Reitz geschrieben: > Make use of the BDS-BB removal and insertion notifiers to remove or set > up, respectively, virtio-scsi's op blockers. > > Signed-off-by: Max Reitz <mre...@redhat.com>
> @@ -797,6 +830,29 @@ static void virtio_scsi_hotunplug(HotplugHandler > *hotplug_dev, DeviceState *dev, > if (s->ctx) { > blk_op_unblock_all(sd->conf.blk, s->blocker); > } > + > + QTAILQ_FOREACH(insert_notifier, &s->insert_notifiers, next) { > + if (insert_notifier->sd == sd) { > + break; > + } > + } > + if (insert_notifier) { > + notifier_remove(&insert_notifier->n); > + QTAILQ_REMOVE(&s->insert_notifiers, insert_notifier, next); > + g_free(insert_notifier); > + } Why a separate if block instead of just doing that inside the loop? > + QTAILQ_FOREACH(remove_notifier, &s->remove_notifiers, next) { > + if (remove_notifier->sd == sd) { > + break; > + } > + } > + if (remove_notifier) { > + notifier_remove(&remove_notifier->n); > + QTAILQ_REMOVE(&s->remove_notifiers, remove_notifier, next); > + g_free(remove_notifier); > + } > + > qdev_simple_device_unplug_cb(hotplug_dev, dev, errp); > } Kevin