Skip to contentSkip to conversation

Please backport 33f2c35a54df to kernels containing c84a1372df92 for raid0 compatibility

DISCUSSION Paul Gortmaker 2 participants 2 messages Jun 24, 2020 – Jun 25, 2020 Stable branch

lore
Share & tools
lore
#0 lore raw

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.

Thanks,
Paul.

maintainer
#1 lore raw
Quoted 15 lines · Paul Gortmaker

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:

Quoted 8 lines
	(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!

Signature · 2 lines
Thanks,
Sasha