Index: nova-2014.1.2/nova/virt/libvirt/volume.py =================================================================== --- nova-2014.1.2.orig/nova/virt/libvirt/volume.py +++ nova-2014.1.2/nova/virt/libvirt/volume.py @@ -414,7 +414,21 @@ class LibvirtISCSIVolumeDriver(LibvirtBa check_exit_code=[0, 255])[0] \ or "" - ips_iqns = self._get_target_portals_from_iscsiadm_output(out) + # Extract targets for the current multipath device. + ips_iqns = [] + entries = self._get_iscsi_devices() + for ip, iqn in self._get_target_portals_from_iscsiadm_output(out): + for entry in entries: + iscsi_ip = entry.split("ip-")[1].split("-")[0] + iscsi_iqn = entry.split("-lun")[0] + if ip.split(",")[0] != iscsi_ip or not iscsi_iqn.endswith(iqn): + continue + entry_real_path = os.path.realpath("/dev/disk/by-path/%s" % + entry) + entry_mpdev = self._get_multipath_device_name(entry_real_path) + if entry_mpdev == multipath_device: + ips_iqns.append([ip, iqn]) + break if not devices: # disconnect if no other multipath devices