dm raid: make sure no feature flags are set in metadata
authorHeinz Mauelshagen <heinzm@redhat.com>
Fri, 29 Apr 2016 16:59:56 +0000 (18:59 +0200)
committerMike Snitzer <snitzer@redhat.com>
Fri, 13 May 2016 13:03:51 +0000 (09:03 -0400)
Given we don't yet support any feature flags in the dm-raid ondisk
metadata (see: 'features' member of 'struct dm_raid_superblock'),
add a check to ensure no flags are actually set, if any features are
set reject the activation of the RAID mapping.

This is to prevent possible data corruption in case of a kernel
downgrade when there'll potentially be feature flags set by a future
dm-raid target.

Signed-off-by: Heinz Mauelshagen <heinzm@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/dm-raid.c

index a0901214aef57de00419a14c573bc128431749c7..52532745a50f85d6eb765d8d6fcaa838301334b6 100644 (file)
@@ -1037,6 +1037,11 @@ static int super_validate(struct raid_set *rs, struct md_rdev *rdev)
        if (!mddev->events && super_init_validation(mddev, rdev))
                return -EINVAL;
 
+       if (le32_to_cpu(sb->features)) {
+               rs->ti->error = "Unable to assemble array: No feature flags supported yet";
+               return -EINVAL;
+       }
+
        /* Enable bitmap creation for RAID levels != 0 */
        mddev->bitmap_info.offset = (rs->raid_type->level) ? to_sector(4096) : 0;
        rdev->mddev->bitmap_info.default_offset = mddev->bitmap_info.offset;
@@ -1718,7 +1723,7 @@ static void raid_resume(struct dm_target *ti)
 
 static struct target_type raid_target = {
        .name = "raid",
-       .version = {1, 7, 0},
+       .version = {1, 8, 0},
        .module = THIS_MODULE,
        .ctr = raid_ctr,
        .dtr = raid_dtr,