From 080476b2d383b148f6fc8d202c3b0509f9bb1d66 Mon Sep 17 00:00:00 2001 From: "Walter A. Boring IV" Date: Wed, 15 May 2013 16:00:43 -0700 Subject: Fix dangling LUN issue under load with multipath This fixes an issue where not all of the LUNs are seen by the kernel at attach time, but later become available. We now rescan the list of devices seen by multipath at detach time. Also added another unit test case. Fixes Bug: #1175366 Change-Id: Id5b313b17454ec32672373b7b564b9450466b7a2 --- nova/tests/test_linuxscsi.py | 11 ++++++++++- nova/tests/virt/libvirt/test_libvirt_volume.py | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) (limited to 'nova/tests') diff --git a/nova/tests/test_linuxscsi.py b/nova/tests/test_linuxscsi.py index 0775b9d5b..8c098a846 100644 --- a/nova/tests/test_linuxscsi.py +++ b/nova/tests/test_linuxscsi.py @@ -43,11 +43,20 @@ class StorageLinuxSCSITestCase(test.TestCase): out = ("mpath6 (350002ac20398383d) dm-3 3PARdata,VV\n" "size=2.0G features='0' hwhandler='0' wp=rw\n" "`-+- policy='round-robin 0' prio=-1 status=active\n" - " |- 0:0:0:1 sde 8:64 active undef running\n" + " |- 0:0:0:1 sde 8:64 active undef running\n" " `- 2:0:0:1 sdf 8:80 active undef running\n" ) return out, None + def fake_execute2(*cmd, **kwargs): + out = ("350002ac20398383d dm-3 3PARdata,VV\n" + "size=2.0G features='0' hwhandler='0' wp=rw\n" + "`-+- policy='round-robin 0' prio=-1 status=active\n" + " |- 0:0:0:1 sde 8:64 active undef running\n" + " `- 2:0:0:1 sdf 8:80 active undef running\n" + ) + return out, None + self.stubs.Set(utils, 'execute', fake_execute) info = linuxscsi.find_multipath_device('/dev/sde') diff --git a/nova/tests/virt/libvirt/test_libvirt_volume.py b/nova/tests/virt/libvirt/test_libvirt_volume.py index c96bc8dda..07a1a7b2f 100644 --- a/nova/tests/virt/libvirt/test_libvirt_volume.py +++ b/nova/tests/virt/libvirt/test_libvirt_volume.py @@ -593,6 +593,7 @@ class LibvirtVolumeTestCase(test.TestCase): libvirt_driver = volume.LibvirtFibreChannelVolumeDriver(self.fake_conn) multipath_devname = '/dev/md-1' devices = {"device": multipath_devname, + "id": "1234567890", "devices": [{'device': '/dev/sdb', 'address': '1:0:0:1', 'host': 1, 'channel': 0, -- cgit