- When a multipath vector (a dynamically allocated array) was resized to a smaller size, device-mapper-multipath did not reassign the pointer to the array. If the array location was changed by reducing its size, device-mapper-multipath corrupted its memory. With this update, device-mapper-multipath correctly reassigns the pointer in this scenario, and memory corruption no longer occurs.
multipathddaemon was not correctly stopping waiter threads during shutdown. The waiter threads could access freed memory and cause the daemon to terminate unexpectedly during shutdown. With this update, the
mutlipathddaemon now correctly stops the waiter threads before they can access any freed memory and no longer crashes during shutdown.
- When Device Mapper Multipath was stopped,
multipathddid not disable the
queue_if_no_pathoption on multipath devices by default. When
multipathdwas stopped during shutdown, I/O of the device was added to the queue if all paths to a device were lost, and the shutdown process became unresponsive. With this update, multipathd now sets the
noby default. As a result, all multipath devices stop queueing when
multipathdis stopped and multipath now shuts down as expected.
- Device Mapper Multipath uses regular expressions in built-in device configurations to determine a multipath device so as to apply the correct configuration to the device. Previously, some regular expressions for resolving the device vendor name and product ID were not specific enough. As a consequence, some devices could be matched with incorrect device configurations. With this update, the product and vendor regular expressions have been modified so that all multipath devices are now configured properly.
- After renaming a device, there was a race condition between
multipathdand udev to rename the new multipath device nodes. If udev renamed the device node first,
multipathdremoved the device created by udev and failed to create the new device node. With this update,
multipathdimmediately creates the new device nodes, and the race condition no longer occurs. As a result, the renamed device is now available as expected.
- Previously, the
flush_on_last_devhandling code did not implement handling of the queue feature properly. Consequently, even though the
flush_on_last_delfeature was activated,
multipathdre-enabled queueing on multipath devices that could not be removed immediately after the last path device was deleted. With this update, the code has been fixed and when the user sets
flush_on_last_del, their multipath devices correctly disable queueing, even if the devices cannot be closed immediately.
- Previously, Device Mapper Multipath used a fixed-size buffer to read the Virtual Device Identification page [0x83]. The buffer size was sometimes insufficient to accommodate the data sent by devices and the ALUA (Asymmetric Logical Unit Access) prioritizer failed. Device Mapper Multipath now dynamically allocates a buffer large enough for the Virtual Device Identification page and the ALUA prioritizer no longer fails in the scenario described.
multipathddid not set the
max_fdsoption by default, which sets the maximum number of file descriptors that
multipathdcan open. Also, the
user_friendly_namessetting could only be configured in the
/etc/multipath.conf. The user had to set
max_fdsmanually and override the
default user_friendly_namesvalue in their device-specific configurations. With this update, multipath now sets
max_fdsto the system maximum by default, and
user_friendly_namescan be configured in the
multipath.conf. Users no longer need to set max_fds for large setups, and they are able to select user_friendly_names per device type.
- Previously, to modify a built-in configuration, the vendor and product strings of the user's configuration had to be identical to the vendor and product strings of the built-in configuration. The vendor and product strings are regular expressions, and the user did not always know the correct vendor and product strings needed to modify a built-in configuration. With this update, the
hwtable_regex_matchoption was added to the defaults section of
multipath.conf. If it is set to
yes, Multipath uses regular-expression matching to determine if the user's vendor and product strings match the built-in device configuration strings: the user can use the actual vendor and product information from their hardware in their device configuration, and it will modify the default configuration for that device. The option is set to
multipathdwas using a deprecated Out-of-Memory (OOM) adjustment interface. Consequently, the daemon was not protected from the OOM killer properly; the OOM killer could kill the daemon when memory was low and the user was unable to restore failed paths. With this update,
multipathdnow uses the new Out-of-Memory adjustment interface and can no longer be killed by the Out-of-Memory killer.
multipath.conffile now contains a comment which informs the user that the configuration must be reloaded for any changes to take effect.
multipathddaemon incorrectly exited with code
multipath -h(print usage) was run. With this update, the underlying code has been modified and
multipathdnow returns code
0as expected in the scenario described.
multipathdthreads did not check if
multipathdwas shutting down before they started their execution. Consequently, the
multipathddaemon could terminate unexpectedly with a segmentation fault on shutdown. With this update, the
multipathdthreads now check if
multipathdis shutting down before triggering their execution, and
multipathdno longer terminates with a segmentation fault on shutdown.
multipathddaemon did not have a failover method to handle switching of path groups when multiple nodes were using the same storage. Consequently, if one node lost access to the preferred paths to a logical unit, while the preferred path of the other node was preserved,
multipathdcould end up switching back and forth between path groups. This update adds the
followoverfailback method to device-mapper-multipath. If the
followoverfailback method is set,
multipathddoes not fail back to the preferred path group, unless it just came back online. When multiple nodes are using the same storage, a path failing on one machine now no longer causes the path groups to continually switch back and forth.
- The NetApp brand name has been added to the documentation about the RDAC (Redundant Disk Array Controller) checker and prioritizer.
- The built-in device configuration for Fujitsu ETERNUS has been added.
- If the multipath checker configuration was set to
tur, the checks were not performed asynchronously. If a device failed and the checker was waiting for the SCSI layer to fail back, the checks on other paths were kept waiting. The checker has been rewritten so as to check the paths asynchronously, and the path checking on other paths continues as expected.
- A built-in configuration for IBM XIV Storage System has been added.
- The NetApp LUN built-in configuration now uses the
turpath checker by default. Also flush_on_last_del has been enabled, dev_loss_tmo has been set to
infinity, fast_io_fail_tmo has been set to
5, and pg_init_retries has been set to