summaryrefslogtreecommitdiffstats
path: root/drivers/md/dm-raid.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/md/dm-raid.c')
-rw-r--r--drivers/md/dm-raid.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/md/dm-raid.c b/drivers/md/dm-raid.c
index 7d893228c40f..67b3eb23e771 100644
--- a/drivers/md/dm-raid.c
+++ b/drivers/md/dm-raid.c
@@ -1571,7 +1571,7 @@ static sector_t __rdev_sectors(struct raid_set *rs)
1571 return rdev->sectors; 1571 return rdev->sectors;
1572 } 1572 }
1573 1573
1574 BUG(); /* Constructor ensures we got some. */ 1574 return 0;
1575} 1575}
1576 1576
1577/* Calculate the sectors per device and per array used for @rs */ 1577/* Calculate the sectors per device and per array used for @rs */
@@ -2930,7 +2930,7 @@ static int raid_ctr(struct dm_target *ti, unsigned int argc, char **argv)
2930 bool resize; 2930 bool resize;
2931 struct raid_type *rt; 2931 struct raid_type *rt;
2932 unsigned int num_raid_params, num_raid_devs; 2932 unsigned int num_raid_params, num_raid_devs;
2933 sector_t calculated_dev_sectors; 2933 sector_t calculated_dev_sectors, rdev_sectors;
2934 struct raid_set *rs = NULL; 2934 struct raid_set *rs = NULL;
2935 const char *arg; 2935 const char *arg;
2936 struct rs_layout rs_layout; 2936 struct rs_layout rs_layout;
@@ -3006,7 +3006,14 @@ static int raid_ctr(struct dm_target *ti, unsigned int argc, char **argv)
3006 if (r) 3006 if (r)
3007 goto bad; 3007 goto bad;
3008 3008
3009 resize = calculated_dev_sectors != __rdev_sectors(rs); 3009 rdev_sectors = __rdev_sectors(rs);
3010 if (!rdev_sectors) {
3011 ti->error = "Invalid rdev size";
3012 r = -EINVAL;
3013 goto bad;
3014 }
3015
3016 resize = calculated_dev_sectors != rdev_sectors;
3010 3017
3011 INIT_WORK(&rs->md.event_work, do_table_event); 3018 INIT_WORK(&rs->md.event_work, do_table_event);
3012 ti->private = rs; 3019 ti->private = rs;