diff options
author | Heinz Mauelshagen <heinzm@redhat.com> | 2016-04-29 12:59:56 -0400 |
---|---|---|
committer | Mike Snitzer <snitzer@redhat.com> | 2016-05-13 09:03:51 -0400 |
commit | 4c9971ca6a172e70f52a7f9b6796e843c3f70293 (patch) | |
tree | 67beaa03c6bad723dcc555d507cdb9d4ccb9f902 /drivers/md/dm-raid.c | |
parent | 72f6d8d8c9b3592da7109cad3415559864ee9f2d (diff) |
dm raid: make sure no feature flags are set in metadata
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>
Diffstat (limited to 'drivers/md/dm-raid.c')
-rw-r--r-- | drivers/md/dm-raid.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/md/dm-raid.c b/drivers/md/dm-raid.c index a0901214aef5..52532745a50f 100644 --- a/drivers/md/dm-raid.c +++ b/drivers/md/dm-raid.c | |||
@@ -1037,6 +1037,11 @@ static int super_validate(struct raid_set *rs, struct md_rdev *rdev) | |||
1037 | if (!mddev->events && super_init_validation(mddev, rdev)) | 1037 | if (!mddev->events && super_init_validation(mddev, rdev)) |
1038 | return -EINVAL; | 1038 | return -EINVAL; |
1039 | 1039 | ||
1040 | if (le32_to_cpu(sb->features)) { | ||
1041 | rs->ti->error = "Unable to assemble array: No feature flags supported yet"; | ||
1042 | return -EINVAL; | ||
1043 | } | ||
1044 | |||
1040 | /* Enable bitmap creation for RAID levels != 0 */ | 1045 | /* Enable bitmap creation for RAID levels != 0 */ |
1041 | mddev->bitmap_info.offset = (rs->raid_type->level) ? to_sector(4096) : 0; | 1046 | mddev->bitmap_info.offset = (rs->raid_type->level) ? to_sector(4096) : 0; |
1042 | rdev->mddev->bitmap_info.default_offset = mddev->bitmap_info.offset; | 1047 | rdev->mddev->bitmap_info.default_offset = mddev->bitmap_info.offset; |
@@ -1718,7 +1723,7 @@ static void raid_resume(struct dm_target *ti) | |||
1718 | 1723 | ||
1719 | static struct target_type raid_target = { | 1724 | static struct target_type raid_target = { |
1720 | .name = "raid", | 1725 | .name = "raid", |
1721 | .version = {1, 7, 0}, | 1726 | .version = {1, 8, 0}, |
1722 | .module = THIS_MODULE, | 1727 | .module = THIS_MODULE, |
1723 | .ctr = raid_ctr, | 1728 | .ctr = raid_ctr, |
1724 | .dtr = raid_dtr, | 1729 | .dtr = raid_dtr, |