** Description changed: + [Impact] + iSCSI volume detach does not correctly remove the multipath device - descriptors + descriptors. + + The multipath devices are left on the compute node and multipath tools + will occaisionally send IOs to known multipath devices. + + [Test Case] tested environment: nova-compute on Ubuntu 14.04.1, iscsi_use_multipath=True and iSCSI volume backend is EMC VNX 5300. - I created 3 cinder volumes and attached them to a nova instance. Then I detach them one by one. First 2 volumes volumes detached successfully. 3rd volume also successfully detached but ended up with failed multipaths. + I created 3 cinder volumes and attached them to a nova instance. Then I detach them one by one. First 2 volumes volumes detached successfully. 3rd volume also successfully detached but ended up with failed multipaths. Here is the terminal log for last volume detach. openstack@W1DEV103:~/devstack$ cinder list +--------------------------------------+--------+------+------+-------------+----------+--------------------------------------+ | - ID - | Status | Name | Size | Volume Type | Bootable | - Attached to - | + ID + | Status | Name | Size | Volume Type | Bootable | + Attached to + | +--------------------------------------+--------+------+------+-------------+----------+--------------------------------------+ | 56a63288-5cc0-4f5c-9197-cde731172dd8 | in-use | None | 1 | - None - | false | 5bd68785-4acf-43ab-ae13-11b1edc3a62e | + None + | false | 5bd68785-4acf-43ab-ae13-11b1edc3a62e | +--------------------------------------+--------+------+------+-------------+----------+--------------------------------------+ openstack@W1CN103:/etc/iscsi$ date;sudo multipath -l Fri Sep 19 21:38:13 JST 2014 360060160cf0036002d1475f6e73fe411 dm-2 DGC,VRAID size=1.0G features='1 queue_if_no_path' hwhandler='1 emc' wp=rw |-+- policy='round-robin 0' prio=-1 status=active | |- 4:0:0:42 sdb 8:16 active undef running | |- 5:0:0:42 sdd 8:48 active undef running | |- 6:0:0:42 sdf 8:80 active undef running | `- 7:0:0:42 sdh 8:112 active undef running `-+- policy='round-robin 0' prio=-1 status=enabled |- 11:0:0:42 sdp 8:240 active undef running |- 8:0:0:42 sdj 8:144 active undef running |- 9:0:0:42 sdl 8:176 active undef running `- 10:0:0:42 sdn 8:208 active undef running openstack@W1CN103:/etc/iscsi$ date;sudo iscsiadm -m session Fri Sep 19 21:38:19 JST 2014 tcp: [10] 172.23.58.228:3260,4 iqn.1992-04.com.emc:cx.fcn00133400150.a7 tcp: [3] 172.23.58.238:3260,8 iqn.1992-04.com.emc:cx.fcn00133400150.b7 tcp: [4] 172.23.58.235:3260,20 iqn.1992-04.com.emc:cx.fcn00133400150.b4 tcp: [5] 172.23.58.236:3260,6 iqn.1992-04.com.emc:cx.fcn00133400150.b5 tcp: [6] 172.23.58.237:3260,19 iqn.1992-04.com.emc:cx.fcn00133400150.b6 tcp: [7] 172.23.58.225:3260,16 iqn.1992-04.com.emc:cx.fcn00133400150.a4 tcp: [8] 172.23.58.226:3260,2 iqn.1992-04.com.emc:cx.fcn00133400150.a5 tcp: [9] 172.23.58.227:3260,17 iqn.1992-04.com.emc:cx.fcn00133400150.a6 openstack@W1DEV103:~/devstack$ nova volume-detach 5bd68785-4acf-43ab-ae13-11b1edc3a62e 56a63288-5cc0-4f5c-9197-cde731172dd8 openstack@W1DEV103:~/devstack$ openstack@W1DEV103:~/devstack$ cinder list +--------------------------------------+-----------+------+------+-------------+----------+--------------------------------------+ | - ID - | Status | Name | Size | Volume Type | Bootable | - Attached to - | + ID + | Status | Name | Size | Volume Type | Bootable | + Attached to + | +--------------------------------------+-----------+------+------+-------------+----------+--------------------------------------+ | 56a63288-5cc0-4f5c-9197-cde731172dd8 | detaching | None | 1 | - None - | false | 5bd68785-4acf-43ab-ae13-11b1edc3a62e| + None + | false | 5bd68785-4acf-43ab-ae13-11b1edc3a62e| +--------------------------------------+-----------+------+------+-------------+----------+--------------------------------------+ openstack@W1DEV103:~/devstack$ openstack@W1DEV103:~/devstack$ cinder list +--------------------------------------+-----------+------+------+-------------+----------+-------------+ | - ID - | Status | Name | Size | Volume Type | Bootable | Attached to | + ID + | Status | Name | Size | Volume Type | Bootable | Attached to | +--------------------------------------+-----------+------+------+-------------+----------+-------------+ | 56a63288-5cc0-4f5c-9197-cde731172dd8 | available | None | 1 | - None - | false | + None + | false | +--------------------------------------+-----------+------+------+-------------+----------+-------------+ | openstack@W1CN103:/etc/iscsi$ date;sudo multipath -l Fri Sep 19 21:39:23 JST 2014 360060160cf0036002d1475f6e73fe411 dm-2 , size=1.0G features='1 queue_if_no_path' hwhandler='1 emc' wp=rw |-+- policy='round-robin 0' prio=-1 status=active | |- #:#:#:# - #:# active undef running | |- #:#:#:# - #:# active undef running | |- #:#:#:# - #:# active undef running | `- #:#:#:# - #:# active undef running `-+- policy='round-robin 0' prio=-1 status=enabled |- #:#:#:# - #:# active undef running |- #:#:#:# - #:# active undef running |- #:#:#:# - #:# active undef running `- #:#:#:# - #:# active undef running openstack@W1CN103:/etc/iscsi$ date;sudo iscsiadm -m session Fri Sep 19 21:39:27 JST 2014 iscsiadm: No active sessions. Then I manually removed the multipaths, openstack@W1CN103:/etc/iscsi$ sudo multipath -f 360060160cf0036002d1475f6e73fe411 openstack@W1CN103:/etc/iscsi$ sudo multipath -l openstack@W1CN103:/etc/iscsi$ - I think the problem is in, + I think the problem is in, virt/libvirt/volume.py:LibvirtISCSIVolumeDriver - def _disconnect_volume_multipath_iscsi(self, iscsi_properties, multipath_device): + def _disconnect_volume_multipath_iscsi(self, iscsi_properties, multipath_device): End of this method executes following code to call remove_multipath_device_descriptor for remove the multipaths by multipath -f before return. - self._remove_multipath_device_descriptor(multipath_device) - return - Therefore, first two volumes worked fine. However, when it comes to the last device (in this case 3rd one), this method return without calling _remove_multipath_device_descriptor due to following if statement. - - if not in_use: - # disconnect if no other multipath devices with same iqn - self._disconnect_mpath(iscsi_properties, ips_iqns) - return + self._remove_multipath_device_descriptor(multipath_device) + return + Therefore, first two volumes worked fine. However, when it comes to the last device (in this case 3rd one), this method return without calling _remove_multipath_device_descriptor due to following if statement. + + if not in_use: + # disconnect if no other multipath devices with same iqn + self._disconnect_mpath(iscsi_properties, ips_iqns) + return It just disconnect them but not remove them. One of the reasons why we have to remove them is, https://bugs.launchpad.net/nova/+bug/1223975 IMO, we should call _remove_multipath_device_descriptor in above if statement before return. + + [Regression Potential] + + - Low: the change is relatively minor and allows the code to also remove + the device when the last path is removed. Should a regression occur, it + should be limited to iscsi-multipath device detachment, which is a small + portion of installations.
** Patch added: "kilo cloud archive debdiff" https://bugs.launchpad.net/nova/+bug/1374999/+attachment/4623679/+files/kilo-lp1374999.debdiff -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1374999 Title: iSCSI volume detach does not correctly remove the multipath device descriptors To manage notifications about this bug go to: https://bugs.launchpad.net/cloud-archive/+bug/1374999/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs