]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
dm raid: move _get_reshape_sectors() as prerequisite to fixing reshape size issues
authorHeinz Mauelshagen <heinzm@redhat.com>
Tue, 9 Jul 2024 11:56:12 +0000 (13:56 +0200)
committerMikulas Patocka <mpatocka@redhat.com>
Wed, 10 Jul 2024 11:10:06 +0000 (13:10 +0200)
rs_set_dev_and_array_sectors() needs this function to
calculate device and array size properly in case leg data
devices have out-of-place reshape space allocated.

Signed-off-by: Heinz Mauelshagen <heinzm@redhat.com>
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
drivers/md/dm-raid.c

index 46559f5d21e87c28d982b68681cc98d37a603fc3..871e278de662a81851e31527c5431990724048ab 100644 (file)
@@ -1626,6 +1626,23 @@ static int _check_data_dev_sectors(struct raid_set *rs)
        return 0;
 }
 
+/* Get reshape sectors from data_offsets or raid set */
+static sector_t _get_reshape_sectors(struct raid_set *rs)
+{
+       struct md_rdev *rdev;
+       sector_t reshape_sectors = 0;
+
+       rdev_for_each(rdev, &rs->md)
+               if (!test_bit(Journal, &rdev->flags)) {
+                       reshape_sectors = (rdev->data_offset > rdev->new_data_offset) ?
+                                       rdev->data_offset - rdev->new_data_offset :
+                                       rdev->new_data_offset - rdev->data_offset;
+                       break;
+               }
+
+       return max(reshape_sectors, (sector_t) rs->data_offset);
+}
+
 /* Calculate the sectors per device and per array used for @rs */
 static int rs_set_dev_and_array_sectors(struct raid_set *rs, sector_t sectors, bool use_mddev)
 {
@@ -2811,23 +2828,6 @@ static int rs_prepare_reshape(struct raid_set *rs)
        return 0;
 }
 
-/* Get reshape sectors from data_offsets or raid set */
-static sector_t _get_reshape_sectors(struct raid_set *rs)
-{
-       struct md_rdev *rdev;
-       sector_t reshape_sectors = 0;
-
-       rdev_for_each(rdev, &rs->md)
-               if (!test_bit(Journal, &rdev->flags)) {
-                       reshape_sectors = (rdev->data_offset > rdev->new_data_offset) ?
-                                       rdev->data_offset - rdev->new_data_offset :
-                                       rdev->new_data_offset - rdev->data_offset;
-                       break;
-               }
-
-       return max(reshape_sectors, (sector_t) rs->data_offset);
-}
-
 /*
  * Reshape:
  * - change raid layout