diff options
Diffstat (limited to 'drivers/md/raid1.c')
-rw-r--r-- | drivers/md/raid1.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index 853482015d3d..a7ea954abe1d 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c | |||
@@ -925,7 +925,7 @@ static void alloc_behind_pages(struct bio *bio, struct r1bio *r1_bio) | |||
925 | if (unlikely(!bvecs)) | 925 | if (unlikely(!bvecs)) |
926 | return; | 926 | return; |
927 | 927 | ||
928 | bio_for_each_segment(bvec, bio, i) { | 928 | bio_for_each_segment_all(bvec, bio, i) { |
929 | bvecs[i] = *bvec; | 929 | bvecs[i] = *bvec; |
930 | bvecs[i].bv_page = alloc_page(GFP_NOIO); | 930 | bvecs[i].bv_page = alloc_page(GFP_NOIO); |
931 | if (unlikely(!bvecs[i].bv_page)) | 931 | if (unlikely(!bvecs[i].bv_page)) |
@@ -1284,12 +1284,8 @@ read_again: | |||
1284 | struct bio_vec *bvec; | 1284 | struct bio_vec *bvec; |
1285 | int j; | 1285 | int j; |
1286 | 1286 | ||
1287 | /* Yes, I really want the '__' version so that | 1287 | /* |
1288 | * we clear any unused pointer in the io_vec, rather | 1288 | * We trimmed the bio, so _all is legit |
1289 | * than leave them unchanged. This is important | ||
1290 | * because when we come to free the pages, we won't | ||
1291 | * know the original bi_idx, so we just free | ||
1292 | * them all | ||
1293 | */ | 1289 | */ |
1294 | bio_for_each_segment_all(bvec, mbio, j) | 1290 | bio_for_each_segment_all(bvec, mbio, j) |
1295 | bvec->bv_page = r1_bio->behind_bvecs[j].bv_page; | 1291 | bvec->bv_page = r1_bio->behind_bvecs[j].bv_page; |