}
 
 /* Calculate the sectors per device and per array used for @rs */
-static int rs_set_dev_and_array_sectors(struct raid_set *rs, bool use_mddev)
+static int rs_set_dev_and_array_sectors(struct raid_set *rs, sector_t sectors, bool use_mddev)
 {
        int delta_disks;
        unsigned int data_stripes;
+       sector_t array_sectors = sectors, dev_sectors = sectors;
        struct mddev *mddev = &rs->md;
-       struct md_rdev *rdev;
-       sector_t array_sectors = rs->ti->len, dev_sectors = rs->ti->len;
 
        if (use_mddev) {
                delta_disks = mddev->delta_disks;
                /* Striped layouts */
                array_sectors = (data_stripes + delta_disks) * dev_sectors;
 
-       rdev_for_each(rdev, mddev)
-               if (!test_bit(Journal, &rdev->flags))
-                       rdev->sectors = dev_sectors;
-
        mddev->array_sectors = array_sectors;
        mddev->dev_sectors = dev_sectors;
+       rs_set_rdev_sectors(rs);
 
        return _check_data_dev_sectors(rs);
 bad:
 
        /* Remove disk(s) */
        } else if (rs->delta_disks < 0) {
-               r = rs_set_dev_and_array_sectors(rs, true);
+               r = rs_set_dev_and_array_sectors(rs, rs->ti->len, true);
                mddev->reshape_backwards = 1; /* removing disk(s) -> backward reshape */
 
        /* Change layout and/or chunk size */
         *
         * Any existing superblock will overwrite the array and device sizes
         */
-       r = rs_set_dev_and_array_sectors(rs, false);
+       r = rs_set_dev_and_array_sectors(rs, rs->ti->len, false);
        if (r)
                goto bad;