Comment 4 for bug 1767363

Revision history for this message
Lee Yarwood (lyarwood) wrote :

This is actually super awkward as locking _disconnect_volume and/or _should_disconnect_target isn't enough here as we are reliant on the compute manager / block device actually deleting the attachments. Anyway here's the current list of places where we call _disconnect_volume in the libvirt virt driver:

# egrep '(def\ | self._disconnect_volume)' nova/virt/libvirt/driver.py | grep -B1 self._disconnect_volume
    def _cleanup(self, context, instance, network_info, block_device_info=None,
                self._disconnect_volume(context, connection_info, instance)
--
    def attach_volume(self, context, connection_info, instance, mountpoint,
                self._disconnect_volume(context, connection_info, instance,
--
    def swap_volume(self, context, old_connection_info,
            self._disconnect_volume(context, new_connection_info, instance)
                self._disconnect_volume(context, new_connection_info, instance)
        self._disconnect_volume(context, old_connection_info, instance)
--
    def detach_volume(self, context, connection_info, instance, mountpoint,
        self._disconnect_volume(context, connection_info, instance,
--
    def post_live_migration(self, context, instance, block_device_info,
                self._disconnect_volume(context, connection_info, instance)
--
    def migrate_disk_and_power_off(self, context, instance, dest,
            self._disconnect_volume(context, connection_info, instance)