diff options
author | Heinz Mauelshagen <heinzm@redhat.com> | 2016-06-30 08:37:50 -0400 |
---|---|---|
committer | Mike Snitzer <snitzer@redhat.com> | 2016-07-18 15:37:32 -0400 |
commit | ffeeac75157e48cf135c4c8b0c8377dd312e9036 (patch) | |
tree | 40b863f7431f7f214674fb54eb989036f67e1510 /drivers/md/dm-raid.c | |
parent | 7a7c330fc26652f71a4d73986d5308dcfdcef168 (diff) |
dm raid: use rs->raid_disks to avoid memory leaks on free
Also makes code more consistent throughout.
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 | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/md/dm-raid.c b/drivers/md/dm-raid.c index 4caf51fe001e..2ea3982dace9 100644 --- a/drivers/md/dm-raid.c +++ b/drivers/md/dm-raid.c | |||
@@ -717,7 +717,7 @@ static void raid_set_free(struct raid_set *rs) | |||
717 | { | 717 | { |
718 | int i; | 718 | int i; |
719 | 719 | ||
720 | for (i = 0; i < rs->md.raid_disks; i++) { | 720 | for (i = 0; i < rs->raid_disks; i++) { |
721 | if (rs->dev[i].meta_dev) | 721 | if (rs->dev[i].meta_dev) |
722 | dm_put_device(rs->ti, rs->dev[i].meta_dev); | 722 | dm_put_device(rs->ti, rs->dev[i].meta_dev); |
723 | md_rdev_clear(&rs->dev[i].rdev); | 723 | md_rdev_clear(&rs->dev[i].rdev); |
@@ -757,7 +757,7 @@ static int parse_dev_params(struct raid_set *rs, struct dm_arg_set *as) | |||
757 | if (!arg) | 757 | if (!arg) |
758 | return -EINVAL; | 758 | return -EINVAL; |
759 | 759 | ||
760 | for (i = 0; i < rs->md.raid_disks; i++) { | 760 | for (i = 0; i < rs->raid_disks; i++) { |
761 | rs->dev[i].rdev.raid_disk = i; | 761 | rs->dev[i].rdev.raid_disk = i; |
762 | 762 | ||
763 | rs->dev[i].meta_dev = NULL; | 763 | rs->dev[i].meta_dev = NULL; |
@@ -961,7 +961,7 @@ static int validate_raid_redundancy(struct raid_set *rs) | |||
961 | * C D D E E | 961 | * C D D E E |
962 | */ | 962 | */ |
963 | if (__is_raid10_near(rs->md.new_layout)) { | 963 | if (__is_raid10_near(rs->md.new_layout)) { |
964 | for (i = 0; i < rs->raid_disks; i++) { | 964 | for (i = 0; i < rs->md.raid_disks; i++) { |
965 | if (!(i % copies)) | 965 | if (!(i % copies)) |
966 | rebuilds_per_group = 0; | 966 | rebuilds_per_group = 0; |
967 | if ((!rs->dev[i].rdev.sb_page || | 967 | if ((!rs->dev[i].rdev.sb_page || |
@@ -1085,7 +1085,7 @@ static int parse_raid_params(struct raid_set *rs, struct dm_arg_set *as, | |||
1085 | * What is found in the superblocks of the devices is always | 1085 | * What is found in the superblocks of the devices is always |
1086 | * authoritative, unless 'rebuild' or '[no]sync' was specified. | 1086 | * authoritative, unless 'rebuild' or '[no]sync' was specified. |
1087 | */ | 1087 | */ |
1088 | for (i = 0; i < rs->md.raid_disks; i++) { | 1088 | for (i = 0; i < rs->raid_disks; i++) { |
1089 | set_bit(In_sync, &rs->dev[i].rdev.flags); | 1089 | set_bit(In_sync, &rs->dev[i].rdev.flags); |
1090 | rs->dev[i].rdev.recovery_offset = MaxSector; | 1090 | rs->dev[i].rdev.recovery_offset = MaxSector; |
1091 | } | 1091 | } |
@@ -2714,7 +2714,7 @@ static void configure_discard_support(struct raid_set *rs) | |||
2714 | /* RAID level 4,5,6 require discard_zeroes_data for data integrity! */ | 2714 | /* RAID level 4,5,6 require discard_zeroes_data for data integrity! */ |
2715 | raid456 = (rs->md.level == 4 || rs->md.level == 5 || rs->md.level == 6); | 2715 | raid456 = (rs->md.level == 4 || rs->md.level == 5 || rs->md.level == 6); |
2716 | 2716 | ||
2717 | for (i = 0; i < rs->md.raid_disks; i++) { | 2717 | for (i = 0; i < rs->raid_disks; i++) { |
2718 | struct request_queue *q; | 2718 | struct request_queue *q; |
2719 | 2719 | ||
2720 | if (!rs->dev[i].rdev.bdev) | 2720 | if (!rs->dev[i].rdev.bdev) |
@@ -3186,7 +3186,6 @@ static void raid_status(struct dm_target *ti, status_type_t type, | |||
3186 | sync_action = decipher_sync_action(&rs->md); | 3186 | sync_action = decipher_sync_action(&rs->md); |
3187 | 3187 | ||
3188 | /* HM FIXME: do we want another state char for raid0? It shows 'D' or 'A' now */ | 3188 | /* HM FIXME: do we want another state char for raid0? It shows 'D' or 'A' now */ |
3189 | rdev_for_each(rdev, mddev) | ||
3190 | for (i = 0; i < rs->raid_disks; i++) | 3189 | for (i = 0; i < rs->raid_disks; i++) |
3191 | DMEMIT(__raid_dev_status(&rs->dev[i].rdev, array_in_sync)); | 3190 | DMEMIT(__raid_dev_status(&rs->dev[i].rdev, array_in_sync)); |
3192 | 3191 | ||