- The mdadm utility incorrectly detected an IMSM (Intel Matrix Storage Manager) RAID device that was in the
resyncstatus, as being in the
reshapestatus. As a consequence, mdadm rejected to assemble the IMSM RAID device as an external data file is needed to reassemble a device in the
reshapestatus. If booting from the IMSM RAID device, the boot process could fail under these circumstances. With this update, mdadm detects that an IMSM RAID device is in the
resyncmode, assembles the device correctly, and launches its synchronization.
- When an array was changing the RAID level from redundant to non-redundant, the mdmon monitoring tool failed to close. As a consequence, mdmon applied the initial structure to the new array and mdadm could terminate with a segmentation fault. With this update, the underlying code has been modified and mdmon closes under these circumstances.
- The resync progress of an array, which was already partially resynchronized, was reset to zero and the resync process was restarted. This occurred if a newly-assembled array requested resync and reset the progress of another array from the container which was already partially resynchronized. With this update, the underlying code has been modified and a degraded RAID continues its resync from the point it had reached on previous resynchronizing.
- The mdadm utility handled the udev incremental rules incorrectly. As a consequence, it failed to handle incremental assembly of RAID devices built on top of logical multipath devices and a RAID device configured on top of a multipath device did not assemble during the boot process. With this update, mdadm handles the udev incremental rules file correctly and such devices are assembled as expected.
- Due to unexpected attributes in RAID metadata, the assembly of a RAID device could fail and the device was not available to the system. With this update, the metadata attributes are ignored and the RAID device is assembled as expected during boot.
- The mdadm utility calculated the data disks number during a reshape restart incorrectly and due to this miscalculation could attempt to divide by 0. As a result, reassembly of a migrated array could cause a floating point exception. With this update, the underlying code has been modified and the number of data disks is calculated correctly.
- Buffer size used on double-degraded RAID6 devices was insufficient. As a result, the RAID recovery failed and mdadm terminated unexpectedly. This happened because the buffer could not write data back to a stripe size if the recovered stripe was larger than the original stripe and the buffer overran. With this update, mdadm checks the size of the requested buffer and allocates a larger buffer for the stripe under these circumstances, and the recovery of double-degraded RAID6 completes successfully.
- If an array was created using the
--sizeoption with no chunk size specified, the mdadm utility rounded the default chunk size incorrectly. With this update, the rounding process has been modified and arrays are created with the correct size alignment.
- When expansion or reshape of RAID0 volume was restarted, mdadm failed to assemble the array because it failed to restore a critical section of the backup file and exited with the following message:
mdadm: Failed to restore critical section for reshape - sorryThis happened because during the process, the RAID level for RAID0 devices is temporarily changed to RAID4; however, the Grow_restart() function called on restart did not allow any RAID level changes. With this update, the level change has been allowed and the problem no longer occurs.
- BZ#609122, BZ#6674703
- The udev scripts did not add encrypted devices to a RAID device because encrypted devices were ready only after they had been unlocked. As a consequence, a RAID device created on top of one or more encrypted block devices failed to assemble. With this update, the underlying code has been changed and the script unlocks encrypted devices and add them to the respective RAID device as expected.
- Due to incorrect internal accounting of disks, the mdadm utility failed to re-add a disk, which was previously marked as faulty and removed. With this update, the underlying code has been modified and such disk is re-added as expected.
- The output of the
mdstat --examinecommand contained incorrect status information. This happened because the DELAYED/PENDING status of a RAID device during resync was translated to an incorrect status. An upstream patch that fixes this bug has been applied and the
mdstat --examinecommand now returns correct status information.
- Version 0.90 arrays have the metadata_version value set to NULL while newer versions set the metadata to the respective version. When the mdmonitor utility was restarted, it attempted to dereference the metadata value and terminated with a segmentation fault when the value was NULL. As a consequence, the RAID device became inaccessible. With this update, the NULL pointer dereference for metadata_version has been fixed.
- The mdadm tool did not handle expansion of arrays which were not chunk size aligned. This happened because mdadm left the array prepared for reshape when the array expansion returned a message that the new chunk size was not divisible by the component size, which could prevent the array from being reassembled again later on. This update applies an upstream patch, which checks the alignment before preparing the array for expansion. The mdadm tool now rejects expansion of an array with incorrect chunk size alignment and the array can be reassembled later.