On Wed, Jun 24, 2020 at 12:49:31PM -0400, Paul Gortmaker wrote:
Hi all, I'm recommending backporting commit 33f2c35a54dfd75ad0e7e86918dcbe4de799a56c ("md: add feature flag MD_FEATURE_RAID0_LAYOUT") to any stable kernels with commit c84a1372df929033cb1a0441fb57bd3932f39ac9 ("md/raid0: avoid RAID0 data corruption due to layout confusion.") Here is why. As part of the various recommended mitigation pages out there, we'll see instructions indicating that using a newer mdadm can allow one to avoid using the raid0.layout= boot argument. However, if one does that on a kernel that does *not* contain 33f2c, then such an older kernel will be "locked out" from mounting the volume because this test will fail: (le32_to_cpu(sb->feature_map) & ~MD_FEATURE_ALL) != 0) ...since the on-disk sb now has MD_FEATURE_RAID0_LAYOUT but the older kernel knows nothing about it and you get EINVAL (-22) during mount. I ran into the above situation on a v5.2 kernel, and backporting the 33f2c resolved the locked out issue, and then the bootarg was no longer required, as documented by the updated mdadm man page.
33f2c35a54df ("md: add feature flag MD_FEATURE_RAID0_LAYOUT") was queued for the 4.19 and 4.14 branches, thank you! -- Thanks, Sasha