]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
md: teach sync_page_io about new_data_offset.
authorNeilBrown <neilb@suse.de>
Thu, 12 Apr 2012 06:12:20 +0000 (16:12 +1000)
committerNeilBrown <neilb@suse.de>
Thu, 12 Apr 2012 06:12:20 +0000 (16:12 +1000)
Some code in raid1 and raid10 use sync_page_io to
read/write pages when responding to read errors.
As we will shortly support changing data_offset for
raid10, this function must understand new_data_offset.

So add that understanding.

Signed-off-by: NeilBrown <neilb@suse.de>
drivers/md/md.c

index 5f06cf2f062b9490e9de6e76f1285036358eb7d7..9e466e8f5865834e7f9bbba788346be5b2a6e226 100644 (file)
@@ -886,6 +886,10 @@ int sync_page_io(struct md_rdev *rdev, sector_t sector, int size,
                rdev->meta_bdev : rdev->bdev;
        if (metadata_op)
                bio->bi_sector = sector + rdev->sb_start;
+       else if (rdev->mddev->reshape_position != MaxSector &&
+                (rdev->mddev->reshape_backwards ==
+                 (sector >= rdev->mddev->reshape_position)))
+               bio->bi_sector = sector + rdev->new_data_offset;
        else
                bio->bi_sector = sector + rdev->data_offset;
        bio_add_page(bio, page, size, 0);