aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/md/raid1.c24
1 files changed, 6 insertions, 18 deletions
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index 800748d585ca..bb5ec7710c00 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -1862,7 +1862,7 @@ static int process_checks(struct r1bio *r1_bio)
1862 struct bio *sbio = r1_bio->bios[i]; 1862 struct bio *sbio = r1_bio->bios[i];
1863 int size; 1863 int size;
1864 1864
1865 if (r1_bio->bios[i]->bi_end_io != end_sync_read) 1865 if (sbio->bi_end_io != end_sync_read)
1866 continue; 1866 continue;
1867 1867
1868 if (test_bit(BIO_UPTODATE, &sbio->bi_flags)) { 1868 if (test_bit(BIO_UPTODATE, &sbio->bi_flags)) {
@@ -1887,16 +1887,15 @@ static int process_checks(struct r1bio *r1_bio)
1887 continue; 1887 continue;
1888 } 1888 }
1889 /* fixup the bio for reuse */ 1889 /* fixup the bio for reuse */
1890 bio_reset(sbio);
1890 sbio->bi_vcnt = vcnt; 1891 sbio->bi_vcnt = vcnt;
1891 sbio->bi_size = r1_bio->sectors << 9; 1892 sbio->bi_size = r1_bio->sectors << 9;
1892 sbio->bi_idx = 0;
1893 sbio->bi_phys_segments = 0;
1894 sbio->bi_flags &= ~(BIO_POOL_MASK - 1);
1895 sbio->bi_flags |= 1 << BIO_UPTODATE;
1896 sbio->bi_next = NULL;
1897 sbio->bi_sector = r1_bio->sector + 1893 sbio->bi_sector = r1_bio->sector +
1898 conf->mirrors[i].rdev->data_offset; 1894 conf->mirrors[i].rdev->data_offset;
1899 sbio->bi_bdev = conf->mirrors[i].rdev->bdev; 1895 sbio->bi_bdev = conf->mirrors[i].rdev->bdev;
1896 sbio->bi_end_io = end_sync_read;
1897 sbio->bi_private = r1_bio;
1898
1900 size = sbio->bi_size; 1899 size = sbio->bi_size;
1901 for (j = 0; j < vcnt ; j++) { 1900 for (j = 0; j < vcnt ; j++) {
1902 struct bio_vec *bi; 1901 struct bio_vec *bi;
@@ -2439,18 +2438,7 @@ static sector_t sync_request(struct mddev *mddev, sector_t sector_nr, int *skipp
2439 for (i = 0; i < conf->raid_disks * 2; i++) { 2438 for (i = 0; i < conf->raid_disks * 2; i++) {
2440 struct md_rdev *rdev; 2439 struct md_rdev *rdev;
2441 bio = r1_bio->bios[i]; 2440 bio = r1_bio->bios[i];
2442 2441 bio_reset(bio);
2443 /* take from bio_init */
2444 bio->bi_next = NULL;
2445 bio->bi_flags &= ~(BIO_POOL_MASK-1);
2446 bio->bi_flags |= 1 << BIO_UPTODATE;
2447 bio->bi_rw = READ;
2448 bio->bi_vcnt = 0;
2449 bio->bi_idx = 0;
2450 bio->bi_phys_segments = 0;
2451 bio->bi_size = 0;
2452 bio->bi_end_io = NULL;
2453 bio->bi_private = NULL;
2454 2442
2455 rdev = rcu_dereference(conf->mirrors[i].rdev); 2443 rdev = rcu_dereference(conf->mirrors[i].rdev);
2456 if (rdev == NULL || 2444 if (rdev == NULL ||