dm raid: constructor fails on non-zero incompat_features
authorHeinz Mauelshagen <[email protected]>
Wed, 3 Aug 2016 15:47:04 +0000 (17:47 +0200)
committerMike Snitzer <[email protected]>
Wed, 3 Aug 2016 16:36:54 +0000 (12:36 -0400)
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 <[email protected]>
Signed-off-by: Mike Snitzer <[email protected]>
drivers/md/dm-raid.c

index 5ef6b5af3fb468fe6ecf794b951fbccd9536828c..7b403ab41bd3885c66e9e6dae736632038bd7596 100644 (file)
@@ -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));