Chapter 13. Storage

/proc/diskstats no longer becomes corrupted

Partitions are protected by read-copy-update (RCU) for performance reasons and are not properly protected against race conditions in two circumstances:
  • When partitions are modified while there are in-flight requests.
  • When partitions overlap, which is possible for DOS extended and logical partitions.
As a consequence, some fields of the /proc/diskstats file could become corrupted. This update fixes the problem by caching the partition lookup in the request structure. As a result, /proc/diskstats no longer becomes corrupted in the described situations. (BZ#1273339)

multipathd no longer reports success after a failed device resizing

If the multipathd service failed to resize a device, multipathd did not reset the size back to the original value internally. As a consequence, on future attempts to resize a device, multipathd reported a success even when multipathd did not resize the device. If resizing fails, multipathd now reverts the size of the device back to the original value internally. As a result, multipathd now only reports success if a device is resized successfully. (BZ#1328077)

multipath no longer crashes due to libdevmapper version mismatches

Previously, the multipath code was not linking to the correct libraries during a part of compilation. As a consequence, if device-mapper-multipath was used with a newer version of the libdevmapper library than it was compiled with, multipath sometimes terminated unexpectedly. Now, multipath correctly links to the necessary libraries during compilation. As a result, multipath no longer crashes due to the library version mismatch. (BZ#1349376)

Failures on some devices no longer keep multipath from creating other devices

Previously, the multipath command sometimes failed to set up working devices because of failures on unrelated devices, as multipath quit early if it failed to get the information on any of the devices that multipath was trying to create. With this fix, multipath no longer quits early if it fails to get information on some of the devices and failures on some devices no longer keep multipath from creating others. (BZ#1343747)

multipath no longer modifies devices with a DM table type of multipath that were created by other programs

Previously, the multipath tools assumed that they were in charge of managing all Device Mapper (DM) devices with a multipath table. As a consequence, the multipathd service modified the tables of devices that were not created by the multipath tools. Now, multipath tools now only operate on devices with DM Universally Unique Identifiers (UUIDs) starting with mpath-, which is the UUID prefix that multipath uses on all the devices it creates. As a result, multipath no longer modifies devices with a DM table type of multipath that were created by other programs. (BZ#1364879)

Change now takes effect immediately after using lvchange --zero n against an active thin pool

Previously, when the lvchange --zero n command was used against an active thin pool, the change did not take effect until the next time the pool was deactivated. With this update, the change takes effect immediately. (BZ#1328245)

An incorrect exit status of mdadm -IRs no longer causes error messages at boot time

Previously, the load_container() function was incorrectly trying to load a container from the member array. As a consequence, the mdadm -IRs command incorrectly returned the 1 exit status, which led to error messages at boot time. The load_container() function has been modified to prevent loading a container from a member array. As a result, error messages at boot time no longer occur. (BZ#1348925)

With IMSM, migrating two RAIDs in a container no longer causes both arrays to become degraded

The Intel Matrix Storage Manager (IMSM) does not allow a change to the RAID level of arrays in a container with two arrays. Previously, IMSM performed an array count check after disks were removed. As a consequence, changing, for example, RAID 1 to RAID 0 in a container with two RAIDs returned an error message, but a degraded RAID 1 was left. With this update, the array count check happens before the disk removal, and the described problem no longer occurs. (BZ#1413615)

The IMSM array is now correctly assembled and successfully started

Previously, the Intel Matrix Storage Manager (IMSM) events field was not set with a generation number. As a consequence, the mdadm utility sometimes re-assemblied a container with outdated metadata, and a failure occurred. With this update, the IMSM events field is correctly set with the generation number. As a result, the IMSM array is correctly assembled and successfully started. (BZ#1413937)