From: Heinz Mauelshagen Date: Thu, 16 Jun 2016 01:15:49 +0000 (+0200) Subject: dm raid: make rs_set_capacity to work on shrinking reshape X-Git-Tag: v4.8-rc1~160^2~31 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9d9d939c80eb96bb2072a5eaee51d9bf29a0910c;p=thirdparty%2Fkernel%2Flinux.git dm raid: make rs_set_capacity to work on shrinking reshape Signed-off-by: Heinz Mauelshagen Signed-off-by: Mike Snitzer --- diff --git a/drivers/md/dm-raid.c b/drivers/md/dm-raid.c index cc6eb7c27a7da..62e31b47400c4 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) { struct mddev *mddev = &rs->md; - /* Make sure we access most actual mddev properties */ - smp_rmb(); - if (rs->ti->len != mddev->array_sectors && !rs_is_reshaping(rs)) { + if (rs->ti->len != mddev->array_sectors) { struct gendisk *gendisk = dm_disk(dm_table_get_md(rs->ti->table)); set_capacity(gendisk, mddev->array_sectors); @@ -1471,7 +1469,9 @@ static void do_table_event(struct work_struct *ws) { struct raid_set *rs = container_of(ws, struct raid_set, md.event_work); - rs_set_capacity(rs); + smp_rmb(); /* Make sure we access most actual mddev properties */ + if (!rs_is_reshaping(rs)) + rs_set_capacity(rs); dm_table_event(rs->ti->table); }