Lines Matching refs:r1_bio

59 static int check_and_add_serial(struct md_rdev *rdev, struct r1bio *r1_bio,  in check_and_add_serial()  argument
64 sector_t lo = r1_bio->sector; in check_and_add_serial()
65 sector_t hi = lo + r1_bio->sectors; in check_and_add_serial()
82 static void wait_for_serialization(struct md_rdev *rdev, struct r1bio *r1_bio) in wait_for_serialization() argument
86 int idx = sector_to_idx(r1_bio->sector); in wait_for_serialization()
93 check_and_add_serial(rdev, r1_bio, si, idx) == 0); in wait_for_serialization()
149 struct r1bio *r1_bio; in r1buf_pool_alloc() local
155 r1_bio = r1bio_pool_alloc(gfp_flags, pi); in r1buf_pool_alloc()
156 if (!r1_bio) in r1buf_pool_alloc()
171 r1_bio->bios[j] = bio; in r1buf_pool_alloc()
186 bio = r1_bio->bios[j]; in r1buf_pool_alloc()
196 rp->raid_bio = r1_bio; in r1buf_pool_alloc()
200 r1_bio->master_bio = NULL; in r1buf_pool_alloc()
202 return r1_bio; in r1buf_pool_alloc()
210 bio_put(r1_bio->bios[j]); in r1buf_pool_alloc()
214 rbio_pool_free(r1_bio, data); in r1buf_pool_alloc()
237 static void put_all_bios(struct r1conf *conf, struct r1bio *r1_bio) in put_all_bios() argument
242 struct bio **bio = r1_bio->bios + i; in put_all_bios()
249 static void free_r1bio(struct r1bio *r1_bio) in free_r1bio() argument
251 struct r1conf *conf = r1_bio->mddev->private; in free_r1bio()
253 put_all_bios(conf, r1_bio); in free_r1bio()
254 mempool_free(r1_bio, &conf->r1bio_pool); in free_r1bio()
257 static void put_buf(struct r1bio *r1_bio) in put_buf() argument
259 struct r1conf *conf = r1_bio->mddev->private; in put_buf()
260 sector_t sect = r1_bio->sector; in put_buf()
264 struct bio *bio = r1_bio->bios[i]; in put_buf()
266 rdev_dec_pending(conf->mirrors[i].rdev, r1_bio->mddev); in put_buf()
269 mempool_free(r1_bio, &conf->r1buf_pool); in put_buf()
274 static void reschedule_retry(struct r1bio *r1_bio) in reschedule_retry() argument
277 struct mddev *mddev = r1_bio->mddev; in reschedule_retry()
281 idx = sector_to_idx(r1_bio->sector); in reschedule_retry()
283 list_add(&r1_bio->retry_list, &conf->retry_list); in reschedule_retry()
296 static void call_bio_endio(struct r1bio *r1_bio) in call_bio_endio() argument
298 struct bio *bio = r1_bio->master_bio; in call_bio_endio()
300 if (!test_bit(R1BIO_Uptodate, &r1_bio->state)) in call_bio_endio()
304 bio_end_io_acct(bio, r1_bio->start_time); in call_bio_endio()
308 static void raid_end_bio_io(struct r1bio *r1_bio) in raid_end_bio_io() argument
310 struct bio *bio = r1_bio->master_bio; in raid_end_bio_io()
311 struct r1conf *conf = r1_bio->mddev->private; in raid_end_bio_io()
314 if (!test_and_set_bit(R1BIO_Returned, &r1_bio->state)) { in raid_end_bio_io()
320 call_bio_endio(r1_bio); in raid_end_bio_io()
326 allow_barrier(conf, r1_bio->sector); in raid_end_bio_io()
328 free_r1bio(r1_bio); in raid_end_bio_io()
334 static inline void update_head_pos(int disk, struct r1bio *r1_bio) in update_head_pos() argument
336 struct r1conf *conf = r1_bio->mddev->private; in update_head_pos()
339 r1_bio->sector + (r1_bio->sectors); in update_head_pos()
345 static int find_bio_disk(struct r1bio *r1_bio, struct bio *bio) in find_bio_disk() argument
348 struct r1conf *conf = r1_bio->mddev->private; in find_bio_disk()
352 if (r1_bio->bios[mirror] == bio) in find_bio_disk()
356 update_head_pos(mirror, r1_bio); in find_bio_disk()
364 struct r1bio *r1_bio = bio->bi_private; in raid1_end_read_request() local
365 struct r1conf *conf = r1_bio->mddev->private; in raid1_end_read_request()
366 struct md_rdev *rdev = conf->mirrors[r1_bio->read_disk].rdev; in raid1_end_read_request()
371 update_head_pos(r1_bio->read_disk, r1_bio); in raid1_end_read_request()
374 set_bit(R1BIO_Uptodate, &r1_bio->state); in raid1_end_read_request()
376 test_bit(R1BIO_FailFast, &r1_bio->state)) in raid1_end_read_request()
387 if (r1_bio->mddev->degraded == conf->raid_disks || in raid1_end_read_request()
388 (r1_bio->mddev->degraded == conf->raid_disks-1 && in raid1_end_read_request()
395 raid_end_bio_io(r1_bio); in raid1_end_read_request()
405 (unsigned long long)r1_bio->sector); in raid1_end_read_request()
406 set_bit(R1BIO_ReadError, &r1_bio->state); in raid1_end_read_request()
407 reschedule_retry(r1_bio); in raid1_end_read_request()
412 static void close_write(struct r1bio *r1_bio) in close_write() argument
415 if (test_bit(R1BIO_BehindIO, &r1_bio->state)) { in close_write()
416 bio_free_pages(r1_bio->behind_master_bio); in close_write()
417 bio_put(r1_bio->behind_master_bio); in close_write()
418 r1_bio->behind_master_bio = NULL; in close_write()
421 md_bitmap_endwrite(r1_bio->mddev->bitmap, r1_bio->sector, in close_write()
422 r1_bio->sectors, in close_write()
423 !test_bit(R1BIO_Degraded, &r1_bio->state), in close_write()
424 test_bit(R1BIO_BehindIO, &r1_bio->state)); in close_write()
425 md_write_end(r1_bio->mddev); in close_write()
428 static void r1_bio_write_done(struct r1bio *r1_bio) in r1_bio_write_done() argument
430 if (!atomic_dec_and_test(&r1_bio->remaining)) in r1_bio_write_done()
433 if (test_bit(R1BIO_WriteError, &r1_bio->state)) in r1_bio_write_done()
434 reschedule_retry(r1_bio); in r1_bio_write_done()
436 close_write(r1_bio); in r1_bio_write_done()
437 if (test_bit(R1BIO_MadeGood, &r1_bio->state)) in r1_bio_write_done()
438 reschedule_retry(r1_bio); in r1_bio_write_done()
440 raid_end_bio_io(r1_bio); in r1_bio_write_done()
446 struct r1bio *r1_bio = bio->bi_private; in raid1_end_write_request() local
447 int behind = test_bit(R1BIO_BehindIO, &r1_bio->state); in raid1_end_write_request()
448 struct r1conf *conf = r1_bio->mddev->private; in raid1_end_write_request()
450 int mirror = find_bio_disk(r1_bio, bio); in raid1_end_write_request()
453 sector_t lo = r1_bio->sector; in raid1_end_write_request()
454 sector_t hi = r1_bio->sector + r1_bio->sectors; in raid1_end_write_request()
471 md_error(r1_bio->mddev, rdev); in raid1_end_write_request()
479 set_bit(R1BIO_WriteError, &r1_bio->state); in raid1_end_write_request()
482 set_bit(R1BIO_Degraded, &r1_bio->state); in raid1_end_write_request()
484 r1_bio->bios[mirror] = NULL; in raid1_end_write_request()
501 r1_bio->bios[mirror] = NULL; in raid1_end_write_request()
513 set_bit(R1BIO_Uptodate, &r1_bio->state); in raid1_end_write_request()
516 if (is_badblock(rdev, r1_bio->sector, r1_bio->sectors, in raid1_end_write_request()
518 r1_bio->bios[mirror] = IO_MADE_GOOD; in raid1_end_write_request()
519 set_bit(R1BIO_MadeGood, &r1_bio->state); in raid1_end_write_request()
527 atomic_dec(&r1_bio->behind_remaining); in raid1_end_write_request()
536 if (atomic_read(&r1_bio->behind_remaining) >= (atomic_read(&r1_bio->remaining)-1) && in raid1_end_write_request()
537 test_bit(R1BIO_Uptodate, &r1_bio->state)) { in raid1_end_write_request()
539 if (!test_and_set_bit(R1BIO_Returned, &r1_bio->state)) { in raid1_end_write_request()
540 struct bio *mbio = r1_bio->master_bio; in raid1_end_write_request()
545 call_bio_endio(r1_bio); in raid1_end_write_request()
550 if (r1_bio->bios[mirror] == NULL) in raid1_end_write_request()
557 r1_bio_write_done(r1_bio); in raid1_end_write_request()
596 static int read_balance(struct r1conf *conf, struct r1bio *r1_bio, int *max_sectors) in read_balance() argument
598 const sector_t this_sector = r1_bio->sector; in read_balance()
617 sectors = r1_bio->sectors; in read_balance()
626 clear_bit(R1BIO_FailFast, &r1_bio->state); in read_balance()
644 if (r1_bio->bios[disk] == IO_BLOCKED in read_balance()
705 set_bit(R1BIO_FailFast, &r1_bio->state); in read_balance()
1101 static void alloc_behind_master_bio(struct r1bio *r1_bio, in alloc_behind_master_bio() argument
1109 behind_bio = bio_alloc_bioset(GFP_NOIO, vcnt, &r1_bio->mddev->bio_set); in alloc_behind_master_bio()
1137 r1_bio->behind_master_bio = behind_bio; in alloc_behind_master_bio()
1138 set_bit(R1BIO_BehindIO, &r1_bio->state); in alloc_behind_master_bio()
1180 static void init_r1bio(struct r1bio *r1_bio, struct mddev *mddev, struct bio *bio) in init_r1bio() argument
1182 r1_bio->master_bio = bio; in init_r1bio()
1183 r1_bio->sectors = bio_sectors(bio); in init_r1bio()
1184 r1_bio->state = 0; in init_r1bio()
1185 r1_bio->mddev = mddev; in init_r1bio()
1186 r1_bio->sector = bio->bi_iter.bi_sector; in init_r1bio()
1193 struct r1bio *r1_bio; in alloc_r1bio() local
1195 r1_bio = mempool_alloc(&conf->r1bio_pool, GFP_NOIO); in alloc_r1bio()
1197 memset(r1_bio->bios, 0, conf->raid_disks * sizeof(r1_bio->bios[0])); in alloc_r1bio()
1198 init_r1bio(r1_bio, mddev, bio); in alloc_r1bio()
1199 return r1_bio; in alloc_r1bio()
1203 int max_read_sectors, struct r1bio *r1_bio) in raid1_read_request() argument
1213 bool r1bio_existed = !!r1_bio; in raid1_read_request()
1221 gfp_t gfp = r1_bio ? (GFP_NOIO | __GFP_HIGH) : GFP_NOIO; in raid1_read_request()
1227 rdev = rcu_dereference(conf->mirrors[r1_bio->read_disk].rdev); in raid1_read_request()
1241 if (!r1_bio) in raid1_read_request()
1242 r1_bio = alloc_r1bio(mddev, bio); in raid1_read_request()
1244 init_r1bio(r1_bio, mddev, bio); in raid1_read_request()
1245 r1_bio->sectors = max_read_sectors; in raid1_read_request()
1251 rdisk = read_balance(conf, r1_bio, &max_sectors); in raid1_read_request()
1259 (unsigned long long)r1_bio->sector); in raid1_read_request()
1261 raid_end_bio_io(r1_bio); in raid1_read_request()
1269 (unsigned long long)r1_bio->sector, in raid1_read_request()
1289 r1_bio->master_bio = bio; in raid1_read_request()
1290 r1_bio->sectors = max_sectors; in raid1_read_request()
1293 r1_bio->read_disk = rdisk; in raid1_read_request()
1296 r1_bio->start_time = bio_start_io_acct(bio); in raid1_read_request()
1300 r1_bio->bios[rdisk] = read_bio; in raid1_read_request()
1302 read_bio->bi_iter.bi_sector = r1_bio->sector + in raid1_read_request()
1308 test_bit(R1BIO_FailFast, &r1_bio->state)) in raid1_read_request()
1310 read_bio->bi_private = r1_bio; in raid1_read_request()
1314 r1_bio->sector); in raid1_read_request()
1323 struct r1bio *r1_bio; in raid1_write_request() local
1358 r1_bio = alloc_r1bio(mddev, bio); in raid1_write_request()
1359 r1_bio->sectors = max_write_sectors; in raid1_write_request()
1382 max_sectors = r1_bio->sectors; in raid1_write_request()
1399 r1_bio->bios[i] = NULL; in raid1_write_request()
1402 set_bit(R1BIO_Degraded, &r1_bio->state); in raid1_write_request()
1412 is_bad = is_badblock(rdev, r1_bio->sector, max_sectors, in raid1_write_request()
1421 if (is_bad && first_bad <= r1_bio->sector) { in raid1_write_request()
1423 bad_sectors -= (r1_bio->sector - first_bad); in raid1_write_request()
1443 int good_sectors = first_bad - r1_bio->sector; in raid1_write_request()
1448 r1_bio->bios[i] = bio; in raid1_write_request()
1457 if (r1_bio->bios[j]) in raid1_write_request()
1459 r1_bio->state = 0; in raid1_write_request()
1482 r1_bio->master_bio = bio; in raid1_write_request()
1483 r1_bio->sectors = max_sectors; in raid1_write_request()
1487 r1_bio->start_time = bio_start_io_acct(bio); in raid1_write_request()
1488 atomic_set(&r1_bio->remaining, 1); in raid1_write_request()
1489 atomic_set(&r1_bio->behind_remaining, 0); in raid1_write_request()
1496 if (!r1_bio->bios[i]) in raid1_write_request()
1508 alloc_behind_master_bio(r1_bio, bio); in raid1_write_request()
1511 md_bitmap_startwrite(bitmap, r1_bio->sector, r1_bio->sectors, in raid1_write_request()
1512 test_bit(R1BIO_BehindIO, &r1_bio->state)); in raid1_write_request()
1516 if (r1_bio->behind_master_bio) in raid1_write_request()
1517 mbio = bio_clone_fast(r1_bio->behind_master_bio, in raid1_write_request()
1522 if (r1_bio->behind_master_bio) { in raid1_write_request()
1524 wait_for_serialization(rdev, r1_bio); in raid1_write_request()
1526 atomic_inc(&r1_bio->behind_remaining); in raid1_write_request()
1528 wait_for_serialization(rdev, r1_bio); in raid1_write_request()
1530 r1_bio->bios[i] = mbio; in raid1_write_request()
1532 mbio->bi_iter.bi_sector = (r1_bio->sector + in raid1_write_request()
1541 mbio->bi_private = r1_bio; in raid1_write_request()
1543 atomic_inc(&r1_bio->remaining); in raid1_write_request()
1547 r1_bio->sector); in raid1_write_request()
1568 r1_bio_write_done(r1_bio); in raid1_write_request()
1886 struct r1bio *r1_bio = get_resync_r1bio(bio); in end_sync_read() local
1888 update_head_pos(r1_bio->read_disk, r1_bio); in end_sync_read()
1896 set_bit(R1BIO_Uptodate, &r1_bio->state); in end_sync_read()
1898 if (atomic_dec_and_test(&r1_bio->remaining)) in end_sync_read()
1899 reschedule_retry(r1_bio); in end_sync_read()
1902 static void abort_sync_write(struct mddev *mddev, struct r1bio *r1_bio) in abort_sync_write() argument
1905 sector_t s = r1_bio->sector; in abort_sync_write()
1906 long sectors_to_go = r1_bio->sectors; in abort_sync_write()
1916 static void put_sync_write_buf(struct r1bio *r1_bio, int uptodate) in put_sync_write_buf() argument
1918 if (atomic_dec_and_test(&r1_bio->remaining)) { in put_sync_write_buf()
1919 struct mddev *mddev = r1_bio->mddev; in put_sync_write_buf()
1920 int s = r1_bio->sectors; in put_sync_write_buf()
1922 if (test_bit(R1BIO_MadeGood, &r1_bio->state) || in put_sync_write_buf()
1923 test_bit(R1BIO_WriteError, &r1_bio->state)) in put_sync_write_buf()
1924 reschedule_retry(r1_bio); in put_sync_write_buf()
1926 put_buf(r1_bio); in put_sync_write_buf()
1935 struct r1bio *r1_bio = get_resync_r1bio(bio); in end_sync_write() local
1936 struct mddev *mddev = r1_bio->mddev; in end_sync_write()
1940 struct md_rdev *rdev = conf->mirrors[find_bio_disk(r1_bio, bio)].rdev; in end_sync_write()
1943 abort_sync_write(mddev, r1_bio); in end_sync_write()
1948 set_bit(R1BIO_WriteError, &r1_bio->state); in end_sync_write()
1949 } else if (is_badblock(rdev, r1_bio->sector, r1_bio->sectors, in end_sync_write()
1951 !is_badblock(conf->mirrors[r1_bio->read_disk].rdev, in end_sync_write()
1952 r1_bio->sector, in end_sync_write()
1953 r1_bio->sectors, in end_sync_write()
1956 set_bit(R1BIO_MadeGood, &r1_bio->state); in end_sync_write()
1958 put_sync_write_buf(r1_bio, uptodate); in end_sync_write()
1980 static int fix_sync_read_error(struct r1bio *r1_bio) in fix_sync_read_error() argument
1993 struct mddev *mddev = r1_bio->mddev; in fix_sync_read_error()
1995 struct bio *bio = r1_bio->bios[r1_bio->read_disk]; in fix_sync_read_error()
1997 sector_t sect = r1_bio->sector; in fix_sync_read_error()
1998 int sectors = r1_bio->sectors; in fix_sync_read_error()
2002 rdev = conf->mirrors[r1_bio->read_disk].rdev; in fix_sync_read_error()
2016 int d = r1_bio->read_disk; in fix_sync_read_error()
2023 if (r1_bio->bios[d]->bi_end_io == end_sync_read) { in fix_sync_read_error()
2039 } while (!success && d != r1_bio->read_disk); in fix_sync_read_error()
2051 (unsigned long long)r1_bio->sector); in fix_sync_read_error()
2063 md_done_sync(mddev, r1_bio->sectors, 0); in fix_sync_read_error()
2064 put_buf(r1_bio); in fix_sync_read_error()
2076 while (d != r1_bio->read_disk) { in fix_sync_read_error()
2080 if (r1_bio->bios[d]->bi_end_io != end_sync_read) in fix_sync_read_error()
2086 r1_bio->bios[d]->bi_end_io = NULL; in fix_sync_read_error()
2091 while (d != r1_bio->read_disk) { in fix_sync_read_error()
2095 if (r1_bio->bios[d]->bi_end_io != end_sync_read) in fix_sync_read_error()
2107 set_bit(R1BIO_Uptodate, &r1_bio->state); in fix_sync_read_error()
2112 static void process_checks(struct r1bio *r1_bio) in process_checks() argument
2121 struct mddev *mddev = r1_bio->mddev; in process_checks()
2128 vcnt = (r1_bio->sectors + PAGE_SIZE / 512 - 1) >> (PAGE_SHIFT - 9); in process_checks()
2131 struct bio *b = r1_bio->bios[i]; in process_checks()
2139 b->bi_iter.bi_sector = r1_bio->sector + in process_checks()
2143 rp->raid_bio = r1_bio; in process_checks()
2147 md_bio_reset_resync_pages(b, rp, r1_bio->sectors << 9); in process_checks()
2150 if (r1_bio->bios[primary]->bi_end_io == end_sync_read && in process_checks()
2151 !r1_bio->bios[primary]->bi_status) { in process_checks()
2152 r1_bio->bios[primary]->bi_end_io = NULL; in process_checks()
2156 r1_bio->read_disk = primary; in process_checks()
2159 struct bio *pbio = r1_bio->bios[primary]; in process_checks()
2160 struct bio *sbio = r1_bio->bios[i]; in process_checks()
2186 atomic64_add(r1_bio->sectors, &mddev->resync_mismatches); in process_checks()
2199 static void sync_request_write(struct mddev *mddev, struct r1bio *r1_bio) in sync_request_write() argument
2206 if (!test_bit(R1BIO_Uptodate, &r1_bio->state)) in sync_request_write()
2208 if (!fix_sync_read_error(r1_bio)) in sync_request_write()
2212 process_checks(r1_bio); in sync_request_write()
2217 atomic_set(&r1_bio->remaining, 1); in sync_request_write()
2219 wbio = r1_bio->bios[i]; in sync_request_write()
2222 (i == r1_bio->read_disk || in sync_request_write()
2226 abort_sync_write(mddev, r1_bio); in sync_request_write()
2235 atomic_inc(&r1_bio->remaining); in sync_request_write()
2241 put_sync_write_buf(r1_bio, 1); in sync_request_write()
2348 static int narrow_write_error(struct r1bio *r1_bio, int i) in narrow_write_error() argument
2350 struct mddev *mddev = r1_bio->mddev; in narrow_write_error()
2368 int sect_to_write = r1_bio->sectors; in narrow_write_error()
2376 sector = r1_bio->sector; in narrow_write_error()
2387 if (test_bit(R1BIO_BehindIO, &r1_bio->state)) { in narrow_write_error()
2388 wbio = bio_clone_fast(r1_bio->behind_master_bio, in narrow_write_error()
2392 wbio = bio_clone_fast(r1_bio->master_bio, GFP_NOIO, in narrow_write_error()
2397 wbio->bi_iter.bi_sector = r1_bio->sector; in narrow_write_error()
2398 wbio->bi_iter.bi_size = r1_bio->sectors << 9; in narrow_write_error()
2400 bio_trim(wbio, sector - r1_bio->sector, sectors); in narrow_write_error()
2418 static void handle_sync_write_finished(struct r1conf *conf, struct r1bio *r1_bio) in handle_sync_write_finished() argument
2421 int s = r1_bio->sectors; in handle_sync_write_finished()
2424 struct bio *bio = r1_bio->bios[m]; in handle_sync_write_finished()
2428 test_bit(R1BIO_MadeGood, &r1_bio->state)) { in handle_sync_write_finished()
2429 rdev_clear_badblocks(rdev, r1_bio->sector, s, 0); in handle_sync_write_finished()
2432 test_bit(R1BIO_WriteError, &r1_bio->state)) { in handle_sync_write_finished()
2433 if (!rdev_set_badblocks(rdev, r1_bio->sector, s, 0)) in handle_sync_write_finished()
2437 put_buf(r1_bio); in handle_sync_write_finished()
2441 static void handle_write_finished(struct r1conf *conf, struct r1bio *r1_bio) in handle_write_finished() argument
2447 if (r1_bio->bios[m] == IO_MADE_GOOD) { in handle_write_finished()
2450 r1_bio->sector, in handle_write_finished()
2451 r1_bio->sectors, 0); in handle_write_finished()
2453 } else if (r1_bio->bios[m] != NULL) { in handle_write_finished()
2459 if (!narrow_write_error(r1_bio, m)) { in handle_write_finished()
2463 set_bit(R1BIO_Degraded, &r1_bio->state); in handle_write_finished()
2470 list_add(&r1_bio->retry_list, &conf->bio_end_io_list); in handle_write_finished()
2471 idx = sector_to_idx(r1_bio->sector); in handle_write_finished()
2481 if (test_bit(R1BIO_WriteError, &r1_bio->state)) in handle_write_finished()
2482 close_write(r1_bio); in handle_write_finished()
2483 raid_end_bio_io(r1_bio); in handle_write_finished()
2487 static void handle_read_error(struct r1conf *conf, struct r1bio *r1_bio) in handle_read_error() argument
2493 clear_bit(R1BIO_ReadError, &r1_bio->state); in handle_read_error()
2503 bio = r1_bio->bios[r1_bio->read_disk]; in handle_read_error()
2505 r1_bio->bios[r1_bio->read_disk] = NULL; in handle_read_error()
2507 rdev = conf->mirrors[r1_bio->read_disk].rdev; in handle_read_error()
2511 fix_read_error(conf, r1_bio->read_disk, in handle_read_error()
2512 r1_bio->sector, r1_bio->sectors); in handle_read_error()
2517 r1_bio->bios[r1_bio->read_disk] = IO_BLOCKED; in handle_read_error()
2521 allow_barrier(conf, r1_bio->sector); in handle_read_error()
2522 bio = r1_bio->master_bio; in handle_read_error()
2525 r1_bio->state = 0; in handle_read_error()
2526 raid1_read_request(mddev, bio, r1_bio->sectors, r1_bio); in handle_read_error()
2532 struct r1bio *r1_bio; in raid1d() local
2549 r1_bio = list_first_entry(&tmp, struct r1bio, in raid1d()
2551 list_del(&r1_bio->retry_list); in raid1d()
2552 idx = sector_to_idx(r1_bio->sector); in raid1d()
2555 set_bit(R1BIO_Degraded, &r1_bio->state); in raid1d()
2556 if (test_bit(R1BIO_WriteError, &r1_bio->state)) in raid1d()
2557 close_write(r1_bio); in raid1d()
2558 raid_end_bio_io(r1_bio); in raid1d()
2572 r1_bio = list_entry(head->prev, struct r1bio, retry_list); in raid1d()
2574 idx = sector_to_idx(r1_bio->sector); in raid1d()
2578 mddev = r1_bio->mddev; in raid1d()
2580 if (test_bit(R1BIO_IsSync, &r1_bio->state)) { in raid1d()
2581 if (test_bit(R1BIO_MadeGood, &r1_bio->state) || in raid1d()
2582 test_bit(R1BIO_WriteError, &r1_bio->state)) in raid1d()
2583 handle_sync_write_finished(conf, r1_bio); in raid1d()
2585 sync_request_write(mddev, r1_bio); in raid1d()
2586 } else if (test_bit(R1BIO_MadeGood, &r1_bio->state) || in raid1d()
2587 test_bit(R1BIO_WriteError, &r1_bio->state)) in raid1d()
2588 handle_write_finished(conf, r1_bio); in raid1d()
2589 else if (test_bit(R1BIO_ReadError, &r1_bio->state)) in raid1d()
2590 handle_read_error(conf, r1_bio); in raid1d()
2643 struct r1bio *r1_bio; in raid1_sync_request() local
2719 r1_bio = raid1_alloc_init_r1buf(conf); in raid1_sync_request()
2731 r1_bio->mddev = mddev; in raid1_sync_request()
2732 r1_bio->sector = sector_nr; in raid1_sync_request()
2733 r1_bio->state = 0; in raid1_sync_request()
2734 set_bit(R1BIO_IsSync, &r1_bio->state); in raid1_sync_request()
2740 bio = r1_bio->bios[i]; in raid1_sync_request()
2803 r1_bio->read_disk = disk; in raid1_sync_request()
2811 if (r1_bio->bios[i]->bi_end_io == end_sync_write) { in raid1_sync_request()
2819 put_buf(r1_bio); in raid1_sync_request()
2853 put_buf(r1_bio); in raid1_sync_request()
2883 bio = r1_bio->bios[i]; in raid1_sync_request()
2900 r1_bio->sectors = nr_sectors; in raid1_sync_request()
2916 atomic_set(&r1_bio->remaining, read_targets); in raid1_sync_request()
2918 bio = r1_bio->bios[i]; in raid1_sync_request()
2928 atomic_set(&r1_bio->remaining, 1); in raid1_sync_request()
2929 bio = r1_bio->bios[r1_bio->read_disk]; in raid1_sync_request()