Loading drivers/md/raid1.c +8 −8 Original line number Diff line number Diff line Loading @@ -1973,6 +1973,7 @@ static int fix_sync_read_error(struct r1bio *r1_bio) struct mddev *mddev = r1_bio->mddev; struct r1conf *conf = mddev->private; struct bio *bio = r1_bio->bios[r1_bio->read_disk]; struct page **pages = get_resync_pages(bio)->pages; sector_t sect = r1_bio->sector; int sectors = r1_bio->sectors; int idx = 0; Loading Loading @@ -2006,7 +2007,7 @@ static int fix_sync_read_error(struct r1bio *r1_bio) */ rdev = conf->mirrors[d].rdev; if (sync_page_io(rdev, sect, s<<9, bio->bi_io_vec[idx].bv_page, pages[idx], REQ_OP_READ, 0, false)) { success = 1; break; Loading Loading @@ -2061,7 +2062,7 @@ static int fix_sync_read_error(struct r1bio *r1_bio) continue; rdev = conf->mirrors[d].rdev; if (r1_sync_page_io(rdev, sect, s, bio->bi_io_vec[idx].bv_page, pages[idx], WRITE) == 0) { r1_bio->bios[d]->bi_end_io = NULL; rdev_dec_pending(rdev, mddev); Loading @@ -2076,7 +2077,7 @@ static int fix_sync_read_error(struct r1bio *r1_bio) continue; rdev = conf->mirrors[d].rdev; if (r1_sync_page_io(rdev, sect, s, bio->bi_io_vec[idx].bv_page, pages[idx], READ) != 0) atomic_add(s, &rdev->corrected_errors); } Loading Loading @@ -2152,6 +2153,8 @@ static void process_checks(struct r1bio *r1_bio) struct bio *pbio = r1_bio->bios[primary]; struct bio *sbio = r1_bio->bios[i]; int error = sbio->bi_error; struct page **ppages = get_resync_pages(pbio)->pages; struct page **spages = get_resync_pages(sbio)->pages; if (sbio->bi_end_io != end_sync_read) continue; Loading @@ -2160,11 +2163,8 @@ static void process_checks(struct r1bio *r1_bio) if (!error) { for (j = vcnt; j-- ; ) { struct page *p, *s; p = pbio->bi_io_vec[j].bv_page; s = sbio->bi_io_vec[j].bv_page; if (memcmp(page_address(p), page_address(s), if (memcmp(page_address(ppages[j]), page_address(spages[j]), sbio->bi_io_vec[j].bv_len)) break; } Loading Loading
drivers/md/raid1.c +8 −8 Original line number Diff line number Diff line Loading @@ -1973,6 +1973,7 @@ static int fix_sync_read_error(struct r1bio *r1_bio) struct mddev *mddev = r1_bio->mddev; struct r1conf *conf = mddev->private; struct bio *bio = r1_bio->bios[r1_bio->read_disk]; struct page **pages = get_resync_pages(bio)->pages; sector_t sect = r1_bio->sector; int sectors = r1_bio->sectors; int idx = 0; Loading Loading @@ -2006,7 +2007,7 @@ static int fix_sync_read_error(struct r1bio *r1_bio) */ rdev = conf->mirrors[d].rdev; if (sync_page_io(rdev, sect, s<<9, bio->bi_io_vec[idx].bv_page, pages[idx], REQ_OP_READ, 0, false)) { success = 1; break; Loading Loading @@ -2061,7 +2062,7 @@ static int fix_sync_read_error(struct r1bio *r1_bio) continue; rdev = conf->mirrors[d].rdev; if (r1_sync_page_io(rdev, sect, s, bio->bi_io_vec[idx].bv_page, pages[idx], WRITE) == 0) { r1_bio->bios[d]->bi_end_io = NULL; rdev_dec_pending(rdev, mddev); Loading @@ -2076,7 +2077,7 @@ static int fix_sync_read_error(struct r1bio *r1_bio) continue; rdev = conf->mirrors[d].rdev; if (r1_sync_page_io(rdev, sect, s, bio->bi_io_vec[idx].bv_page, pages[idx], READ) != 0) atomic_add(s, &rdev->corrected_errors); } Loading Loading @@ -2152,6 +2153,8 @@ static void process_checks(struct r1bio *r1_bio) struct bio *pbio = r1_bio->bios[primary]; struct bio *sbio = r1_bio->bios[i]; int error = sbio->bi_error; struct page **ppages = get_resync_pages(pbio)->pages; struct page **spages = get_resync_pages(sbio)->pages; if (sbio->bi_end_io != end_sync_read) continue; Loading @@ -2160,11 +2163,8 @@ static void process_checks(struct r1bio *r1_bio) if (!error) { for (j = vcnt; j-- ; ) { struct page *p, *s; p = pbio->bi_io_vec[j].bv_page; s = sbio->bi_io_vec[j].bv_page; if (memcmp(page_address(p), page_address(s), if (memcmp(page_address(ppages[j]), page_address(spages[j]), sbio->bi_io_vec[j].bv_len)) break; } Loading