return NULL;
 }
 
-/*
- * Conditionally change bdev capacity of @rs
- * in case of a disk add/remove reshape
- */
-static void rs_set_capacity(struct raid_set *rs)
+/* Adjust rdev sectors */
+static void rs_set_rdev_sectors(struct raid_set *rs)
 {
        struct mddev *mddev = &rs->md;
        struct md_rdev *rdev;
-       struct gendisk *gendisk = dm_disk(dm_table_get_md(rs->ti->table));
 
        /*
         * raid10 sets rdev->sector to the device size, which
        rdev_for_each(rdev, mddev)
                if (!test_bit(Journal, &rdev->flags))
                        rdev->sectors = mddev->dev_sectors;
+}
 
-       set_capacity(gendisk, mddev->array_sectors);
+/*
+ * Change bdev capacity of @rs in case of a disk add/remove reshape
+ */
+static void rs_set_capacity(struct raid_set *rs)
+{
+       struct gendisk *gendisk = dm_disk(dm_table_get_md(rs->ti->table));
+
+       set_capacity(gendisk, rs->md.array_sectors);
        revalidate_disk(gendisk);
 }
 
        struct raid_set *rs = container_of(ws, struct raid_set, md.event_work);
 
        smp_rmb(); /* Make sure we access most actual mddev properties */
-       if (!rs_is_reshaping(rs))
+       if (!rs_is_reshaping(rs)) {
+               if (rs_is_raid10(rs))
+                       rs_set_rdev_sectors(rs);
                rs_set_capacity(rs);
+       }
        dm_table_event(rs->ti->table);
 }
 
                mddev->resync_min = mddev->recovery_cp;
        }
 
-       rs_set_capacity(rs);
-
        /* Check for any reshape request unless new raid set */
        if (test_and_clear_bit(RT_FLAG_RESHAPE_RS, &rs->runtime_flags)) {
                /* Initiate a reshape. */
+               rs_set_rdev_sectors(rs);
                mddev_lock_nointr(mddev);
                r = rs_start_reshape(rs);
                mddev_unlock(mddev);
        mddev->ro = 0;
        mddev->in_sync = 0;
 
+       /* Only reduce raid set size before running a disk removing reshape. */
+       if (mddev->delta_disks < 0)
+               rs_set_capacity(rs);
+
        /*
         * Keep the RAID set frozen if reshape/rebuild flags are set.
         * The RAID set is unfrozen once the next table load/resume,