From: Heinz Mauelshagen Date: Wed, 3 Aug 2016 15:47:04 +0000 (+0200) Subject: dm raid: constructor fails on non-zero incompat_features X-Git-Tag: v5.15~13083^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b2a4872a45280217149324e3bbef228cd5a0a270;p=platform%2Fkernel%2Flinux-starfive.git dm raid: constructor fails on non-zero incompat_features When lvm2 userspace requests a RaidLV repair, it sets the rebuild constructor flag on the new replacement DataLVs but does not clear the respective MetaLVs. Hence the superblock that is loaded from such new MetaLVs may have a non-zero incompat_features member and the constructor will fail with false-positive on incompat_features. Solve by initializing the incompat_features member properly. Signed-off-by: Heinz Mauelshagen Signed-off-by: Mike Snitzer --- diff --git a/drivers/md/dm-raid.c b/drivers/md/dm-raid.c index 5ef6b5a..7b403ab 100644 --- a/drivers/md/dm-raid.c +++ b/drivers/md/dm-raid.c @@ -1960,6 +1960,7 @@ static void super_sync(struct mddev *mddev, struct md_rdev *rdev) sb->data_offset = cpu_to_le64(rdev->data_offset); sb->new_data_offset = cpu_to_le64(rdev->new_data_offset); sb->sectors = cpu_to_le64(rdev->sectors); + sb->incompat_features = cpu_to_le32(0); /* Zero out the rest of the payload after the size of the superblock */ memset(sb + 1, 0, rdev->sb_size - sizeof(*sb));