56c8665d3d
This patch refactors iSCSI connect code changing the approach to one that relies primarily on sysfs, instead of CLI tools, to retrieve all the required information: devices from the connection, multipath system device name, multipath name, the WWN for the block devices... By doing so, not only do we fix a good number of bugs, but we also improve the reliability and speed of the mechanism. A good example of improvements and benefits achieved by this patch are: - Clean all leftovers on exceptions on a connection. - Parallelize logins on multipath to increase speed on flaky network connections. - As long as there is at least one good path when working with multipath we will return a multipath device instead of a single path device, which helps with temporary flaky connections. - Don't use the rescan retry parameter as log in retry on multipath connections so both single and multipath cases are consistent. - We no longer rely on just one device to get the wwn and look for the multipath. This would be problematic with flaky connections. - No more querying iSCSI devices for their WWN (page 0x83) removing delays and issue on flaky connections. - It's no longer a problem for the mechanism the fact that a device exists but is not accessible. - We use links in `/dev/disk/by-id` to get the WWID on connect, so we make sure there are no leftovers on disconnect, but we no longer use symlinks from `/dev/disk/by-path`, `/dev/disk/by-id`, or `/dev/mapper` to find devices. - We no longer need to rely on the WWN to determine the multipath, we have the session and the LUN, so we trace the devices and from those we get if they belong to a multipath. - Stop polluting the logs with unnecessary exceptions from checking if the node or session exist. - Action retries will now only log the final exception instead of logging all the exceptions. - Warn when a multipath could not be formed and a single device is being used, as performance will be degraded. - We no longer do global rescans on single connections that could be bringing in unrelated and unwanted devices (`iscsiadm -T iqn -p portal --rescan`). - Fix scan mechanism that would not request all scans when the same iqn was shareed between portals and could send a scan request to the wrong IP if they shared the same iqn. - When doing single pathed connections we could end with a multipath because we didn't clean up unfruitful connections. It's worth mentioning that this patch does not touch the extend operation. Change-Id: Ia1c47bfaa7bc3544a5feba6a8a30faf2f132b8d7 |
||
---|---|---|
.. | ||
__init__.py | ||
rootwrap.py |