aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/dm-raid.c
diff options
context:
space:
mode:
authorHeinz Mauelshagen <heinzm@redhat.com>2016-06-15 21:15:49 -0400
committerMike Snitzer <snitzer@redhat.com>2016-07-18 15:37:22 -0400
commit9d9d939c80eb96bb2072a5eaee51d9bf29a0910c (patch)
tree7ef1761b431c472363f311351394523647d00dfc /drivers/md/dm-raid.c
parent6ee0bae9c847086b7025494e84a2fff0dfc83bdc (diff)
dm raid: make rs_set_capacity to work on shrinking reshape
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.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/md/dm-raid.c b/drivers/md/dm-raid.c
index cc6eb7c27a7d..62e31b47400c 100644
--- a/drivers/md/dm-raid.c
+++ b/drivers/md/dm-raid.c
@@ -617,9 +617,7 @@ static void rs_set_capacity(struct raid_set *rs)
617{ 617{
618 struct mddev *mddev = &rs->md; 618 struct mddev *mddev = &rs->md;
619 619
620 /* Make sure we access most actual mddev properties */ 620 if (rs->ti->len != mddev->array_sectors) {
621 smp_rmb();
622 if (rs->ti->len != mddev->array_sectors && !rs_is_reshaping(rs)) {
623 struct gendisk *gendisk = dm_disk(dm_table_get_md(rs->ti->table)); 621 struct gendisk *gendisk = dm_disk(dm_table_get_md(rs->ti->table));
624 622
625 set_capacity(gendisk, mddev->array_sectors); 623 set_capacity(gendisk, mddev->array_sectors);
@@ -1471,7 +1469,9 @@ static void do_table_event(struct work_struct *ws)
1471{ 1469{
1472 struct raid_set *rs = container_of(ws, struct raid_set, md.event_work); 1470 struct raid_set *rs = container_of(ws, struct raid_set, md.event_work);
1473 1471
1474 rs_set_capacity(rs); 1472 smp_rmb(); /* Make sure we access most actual mddev properties */
1473 if (!rs_is_reshaping(rs))
1474 rs_set_capacity(rs);
1475 dm_table_event(rs->ti->table); 1475 dm_table_event(rs->ti->table);
1476} 1476}
1477 1477