Lines Matching refs:rdev

367 	struct md_rdev *rdev;  in raid10_end_read_request()  local
372 rdev = r10_bio->devs[slot].rdev; in raid10_end_read_request()
396 rdev->raid_disk)) in raid10_end_read_request()
401 rdev_dec_pending(rdev, conf->mddev); in raid10_end_read_request()
410 bdevname(rdev->bdev, b), in raid10_end_read_request()
449 struct md_rdev *rdev = NULL; in raid10_end_write_request() local
454 rdev = conf->mirrors[dev].replacement; in raid10_end_write_request()
455 if (!rdev) { in raid10_end_write_request()
458 rdev = conf->mirrors[dev].rdev; in raid10_end_write_request()
468 md_error(rdev->mddev, rdev); in raid10_end_write_request()
470 set_bit(WriteErrorSeen, &rdev->flags); in raid10_end_write_request()
471 if (!test_and_set_bit(WantReplacement, &rdev->flags)) in raid10_end_write_request()
473 &rdev->mddev->recovery); in raid10_end_write_request()
498 if (test_bit(In_sync, &rdev->flags) && in raid10_end_write_request()
499 !test_bit(Faulty, &rdev->flags)) in raid10_end_write_request()
503 if (is_badblock(rdev, in raid10_end_write_request()
524 rdev_dec_pending(rdev, conf->mddev); in raid10_end_write_request()
703 struct md_rdev *best_rdev, *rdev = NULL; in read_balance() local
735 rdev = rcu_dereference(conf->mirrors[disk].replacement); in read_balance()
736 if (rdev == NULL || test_bit(Faulty, &rdev->flags) || in read_balance()
737 r10_bio->devs[slot].addr + sectors > rdev->recovery_offset) in read_balance()
738 rdev = rcu_dereference(conf->mirrors[disk].rdev); in read_balance()
739 if (rdev == NULL || in read_balance()
740 test_bit(Faulty, &rdev->flags)) in read_balance()
742 if (!test_bit(In_sync, &rdev->flags) && in read_balance()
743 r10_bio->devs[slot].addr + sectors > rdev->recovery_offset) in read_balance()
747 if (is_badblock(rdev, dev_sector, sectors, in read_balance()
768 best_rdev = rdev; in read_balance()
785 if (geo->near_copies > 1 && !atomic_read(&rdev->nr_pending)) in read_balance()
797 best_rdev = rdev; in read_balance()
802 rdev = best_rdev; in read_balance()
806 atomic_inc(&rdev->nr_pending); in read_balance()
807 if (test_bit(Faulty, &rdev->flags)) { in read_balance()
811 rdev_dec_pending(rdev, conf->mddev); in read_balance()
816 rdev = NULL; in read_balance()
820 return rdev; in read_balance()
837 struct md_rdev *rdev = rcu_dereference(conf->mirrors[i].rdev); in raid10_congested() local
838 if (rdev && !test_bit(Faulty, &rdev->flags)) { in raid10_congested()
839 struct request_queue *q = bdev_get_queue(rdev->bdev); in raid10_congested()
1002 struct md_rdev *rdev) in choose_data_offset() argument
1004 if (!test_bit(MD_RECOVERY_RESHAPE, &rdev->mddev->recovery) || in choose_data_offset()
1006 return rdev->data_offset; in choose_data_offset()
1008 return rdev->new_data_offset; in choose_data_offset()
1137 struct md_rdev *rdev; in __make_request() local
1141 rdev = read_balance(conf, r10_bio, &max_sectors); in __make_request()
1142 if (!rdev) { in __make_request()
1153 r10_bio->devs[slot].rdev = rdev; in __make_request()
1156 choose_data_offset(r10_bio, rdev); in __make_request()
1157 read_bio->bi_bdev = rdev->bdev; in __make_request()
1225 struct md_rdev *rdev = rcu_dereference(conf->mirrors[d].rdev); in __make_request() local
1228 if (rdev == rrdev) in __make_request()
1230 if (rdev && unlikely(test_bit(Blocked, &rdev->flags))) { in __make_request()
1231 atomic_inc(&rdev->nr_pending); in __make_request()
1232 blocked_rdev = rdev; in __make_request()
1240 if (rdev && (test_bit(Faulty, &rdev->flags))) in __make_request()
1241 rdev = NULL; in __make_request()
1248 if (!rdev && !rrdev) { in __make_request()
1252 if (rdev && test_bit(WriteErrorSeen, &rdev->flags)) { in __make_request()
1258 is_bad = is_badblock(rdev, dev_sector, in __make_request()
1265 atomic_inc(&rdev->nr_pending); in __make_request()
1266 set_bit(BlockedBadBlocks, &rdev->flags); in __make_request()
1267 blocked_rdev = rdev; in __make_request()
1294 if (rdev) { in __make_request()
1296 atomic_inc(&rdev->nr_pending); in __make_request()
1313 rdev_dec_pending(conf->mirrors[d].rdev, mddev); in __make_request()
1316 struct md_rdev *rdev; in __make_request() local
1318 rdev = conf->mirrors[d].replacement; in __make_request()
1319 if (!rdev) { in __make_request()
1322 rdev = conf->mirrors[d].rdev; in __make_request()
1324 rdev_dec_pending(rdev, mddev); in __make_request()
1355 struct md_rdev *rdev = conf->mirrors[d].rdev; in __make_request() local
1363 rdev)); in __make_request()
1364 mbio->bi_bdev = rdev->bdev; in __make_request()
1393 struct md_rdev *rdev = conf->mirrors[d].replacement; in __make_request() local
1394 if (rdev == NULL) { in __make_request()
1397 rdev = conf->mirrors[d].rdev; in __make_request()
1406 r10_bio, rdev)); in __make_request()
1407 mbio->bi_bdev = rdev->bdev; in __make_request()
1508 conf->mirrors[i].rdev && in status()
1509 test_bit(In_sync, &conf->mirrors[i].rdev->flags) ? "U" : "_"); in status()
1537 struct md_rdev *rdev; in _enough() local
1539 (rdev = rcu_dereference(conf->mirrors[this].rdev)) && in _enough()
1540 test_bit(In_sync, &rdev->flags)) in _enough()
1565 static void error(struct mddev *mddev, struct md_rdev *rdev) in error() argument
1578 if (test_bit(In_sync, &rdev->flags) in error()
1579 && !enough(conf, rdev->raid_disk)) { in error()
1586 if (test_and_clear_bit(In_sync, &rdev->flags)) in error()
1592 set_bit(Blocked, &rdev->flags); in error()
1593 set_bit(Faulty, &rdev->flags); in error()
1600 mdname(mddev), bdevname(rdev->bdev, b), in error()
1620 if (tmp->rdev) in print_conf()
1622 i, !test_bit(In_sync, &tmp->rdev->flags), in print_conf()
1623 !test_bit(Faulty, &tmp->rdev->flags), in print_conf()
1624 bdevname(tmp->rdev->bdev,b)); in print_conf()
1656 if (!tmp->rdev in raid10_spare_active()
1657 || !test_and_clear_bit(In_sync, &tmp->rdev->flags)) in raid10_spare_active()
1659 if (tmp->rdev) { in raid10_spare_active()
1664 set_bit(Faulty, &tmp->rdev->flags); in raid10_spare_active()
1666 tmp->rdev->sysfs_state); in raid10_spare_active()
1669 } else if (tmp->rdev in raid10_spare_active()
1670 && tmp->rdev->recovery_offset == MaxSector in raid10_spare_active()
1671 && !test_bit(Faulty, &tmp->rdev->flags) in raid10_spare_active()
1672 && !test_and_set_bit(In_sync, &tmp->rdev->flags)) { in raid10_spare_active()
1674 sysfs_notify_dirent_safe(tmp->rdev->sysfs_state); in raid10_spare_active()
1685 static int raid10_add_disk(struct mddev *mddev, struct md_rdev *rdev) in raid10_add_disk() argument
1698 if (rdev->saved_raid_disk < 0 && !_enough(conf, 1, -1)) in raid10_add_disk()
1701 if (md_integrity_add_rdev(rdev, mddev)) in raid10_add_disk()
1704 if (rdev->raid_disk >= 0) in raid10_add_disk()
1705 first = last = rdev->raid_disk; in raid10_add_disk()
1707 if (rdev->saved_raid_disk >= first && in raid10_add_disk()
1708 conf->mirrors[rdev->saved_raid_disk].rdev == NULL) in raid10_add_disk()
1709 mirror = rdev->saved_raid_disk; in raid10_add_disk()
1716 if (p->rdev) { in raid10_add_disk()
1717 if (!test_bit(WantReplacement, &p->rdev->flags) || in raid10_add_disk()
1720 clear_bit(In_sync, &rdev->flags); in raid10_add_disk()
1721 set_bit(Replacement, &rdev->flags); in raid10_add_disk()
1722 rdev->raid_disk = mirror; in raid10_add_disk()
1725 disk_stack_limits(mddev->gendisk, rdev->bdev, in raid10_add_disk()
1726 rdev->data_offset << 9); in raid10_add_disk()
1728 rcu_assign_pointer(p->replacement, rdev); in raid10_add_disk()
1733 disk_stack_limits(mddev->gendisk, rdev->bdev, in raid10_add_disk()
1734 rdev->data_offset << 9); in raid10_add_disk()
1738 rdev->raid_disk = mirror; in raid10_add_disk()
1740 if (rdev->saved_raid_disk != mirror) in raid10_add_disk()
1742 rcu_assign_pointer(p->rdev, rdev); in raid10_add_disk()
1745 if (mddev->queue && blk_queue_discard(bdev_get_queue(rdev->bdev))) in raid10_add_disk()
1752 static int raid10_remove_disk(struct mddev *mddev, struct md_rdev *rdev) in raid10_remove_disk() argument
1756 int number = rdev->raid_disk; in raid10_remove_disk()
1761 if (rdev == p->rdev) in raid10_remove_disk()
1762 rdevp = &p->rdev; in raid10_remove_disk()
1763 else if (rdev == p->replacement) in raid10_remove_disk()
1768 if (test_bit(In_sync, &rdev->flags) || in raid10_remove_disk()
1769 atomic_read(&rdev->nr_pending)) { in raid10_remove_disk()
1776 if (!test_bit(Faulty, &rdev->flags) && in raid10_remove_disk()
1778 (!p->replacement || p->replacement == rdev) && in raid10_remove_disk()
1786 if (atomic_read(&rdev->nr_pending)) { in raid10_remove_disk()
1789 *rdevp = rdev; in raid10_remove_disk()
1793 p->rdev = p->replacement; in raid10_remove_disk()
1799 clear_bit(WantReplacement, &rdev->flags); in raid10_remove_disk()
1804 clear_bit(WantReplacement, &rdev->flags); in raid10_remove_disk()
1833 &conf->mirrors[d].rdev->corrected_errors); in end_sync_read()
1838 rdev_dec_pending(conf->mirrors[d].rdev, conf->mddev); in end_sync_read()
1885 struct md_rdev *rdev = NULL; in end_sync_write() local
1889 rdev = conf->mirrors[d].replacement; in end_sync_write()
1891 rdev = conf->mirrors[d].rdev; in end_sync_write()
1895 md_error(mddev, rdev); in end_sync_write()
1897 set_bit(WriteErrorSeen, &rdev->flags); in end_sync_write()
1898 if (!test_and_set_bit(WantReplacement, &rdev->flags)) in end_sync_write()
1900 &rdev->mddev->recovery); in end_sync_write()
1903 } else if (is_badblock(rdev, in end_sync_write()
1909 rdev_dec_pending(rdev, mddev); in end_sync_write()
2003 atomic_inc(&conf->mirrors[d].rdev->nr_pending); in sync_request_write()
2005 md_sync_acct(conf->mirrors[d].rdev->bdev, bio_sectors(tbio)); in sync_request_write()
2007 tbio->bi_iter.bi_sector += conf->mirrors[d].rdev->data_offset; in sync_request_write()
2008 tbio->bi_bdev = conf->mirrors[d].rdev->bdev; in sync_request_write()
2068 struct md_rdev *rdev; in fix_recovery_read_error() local
2075 rdev = conf->mirrors[dr].rdev; in fix_recovery_read_error()
2077 ok = sync_page_io(rdev, in fix_recovery_read_error()
2083 rdev = conf->mirrors[dw].rdev; in fix_recovery_read_error()
2085 ok = sync_page_io(rdev, in fix_recovery_read_error()
2091 set_bit(WriteErrorSeen, &rdev->flags); in fix_recovery_read_error()
2093 &rdev->flags)) in fix_recovery_read_error()
2095 &rdev->mddev->recovery); in fix_recovery_read_error()
2103 rdev_set_badblocks(rdev, addr, s, 0); in fix_recovery_read_error()
2105 if (rdev != conf->mirrors[dw].rdev) { in fix_recovery_read_error()
2107 struct md_rdev *rdev2 = conf->mirrors[dw].rdev; in fix_recovery_read_error()
2158 atomic_inc(&conf->mirrors[d].rdev->nr_pending); in recovery_request_write()
2159 md_sync_acct(conf->mirrors[d].rdev->bdev, bio_sectors(wbio)); in recovery_request_write()
2176 static void check_decay_read_errors(struct mddev *mddev, struct md_rdev *rdev) in check_decay_read_errors() argument
2180 unsigned int read_errors = atomic_read(&rdev->read_errors); in check_decay_read_errors()
2184 if (rdev->last_read_error.tv_sec == 0 && in check_decay_read_errors()
2185 rdev->last_read_error.tv_nsec == 0) { in check_decay_read_errors()
2187 rdev->last_read_error = cur_time_mon; in check_decay_read_errors()
2192 rdev->last_read_error.tv_sec) / 3600; in check_decay_read_errors()
2194 rdev->last_read_error = cur_time_mon; in check_decay_read_errors()
2202 atomic_set(&rdev->read_errors, 0); in check_decay_read_errors()
2204 atomic_set(&rdev->read_errors, read_errors >> hours_since_last); in check_decay_read_errors()
2207 static int r10_sync_page_io(struct md_rdev *rdev, sector_t sector, in r10_sync_page_io() argument
2213 if (is_badblock(rdev, sector, sectors, &first_bad, &bad_sectors) in r10_sync_page_io()
2214 && (rw == READ || test_bit(WriteErrorSeen, &rdev->flags))) in r10_sync_page_io()
2216 if (sync_page_io(rdev, sector, sectors << 9, page, rw, false)) in r10_sync_page_io()
2220 set_bit(WriteErrorSeen, &rdev->flags); in r10_sync_page_io()
2221 if (!test_and_set_bit(WantReplacement, &rdev->flags)) in r10_sync_page_io()
2223 &rdev->mddev->recovery); in r10_sync_page_io()
2226 if (!rdev_set_badblocks(rdev, sector, sectors, 0)) in r10_sync_page_io()
2227 md_error(rdev->mddev, rdev); in r10_sync_page_io()
2243 struct md_rdev*rdev; in fix_read_error() local
2250 rdev = conf->mirrors[d].rdev; in fix_read_error()
2252 if (test_bit(Faulty, &rdev->flags)) in fix_read_error()
2257 check_decay_read_errors(mddev, rdev); in fix_read_error()
2258 atomic_inc(&rdev->read_errors); in fix_read_error()
2259 if (atomic_read(&rdev->read_errors) > max_read_errors) { in fix_read_error()
2261 bdevname(rdev->bdev, b); in fix_read_error()
2267 atomic_read(&rdev->read_errors), max_read_errors); in fix_read_error()
2271 md_error(mddev, conf->mirrors[d].rdev); in fix_read_error()
2291 rdev = rcu_dereference(conf->mirrors[d].rdev); in fix_read_error()
2292 if (rdev && in fix_read_error()
2293 test_bit(In_sync, &rdev->flags) && in fix_read_error()
2294 is_badblock(rdev, r10_bio->devs[sl].addr + sect, s, in fix_read_error()
2296 atomic_inc(&rdev->nr_pending); in fix_read_error()
2298 success = sync_page_io(rdev, in fix_read_error()
2303 rdev_dec_pending(rdev, mddev); in fix_read_error()
2320 rdev = conf->mirrors[dn].rdev; in fix_read_error()
2323 rdev, in fix_read_error()
2327 md_error(mddev, rdev); in fix_read_error()
2344 rdev = rcu_dereference(conf->mirrors[d].rdev); in fix_read_error()
2345 if (!rdev || in fix_read_error()
2346 !test_bit(In_sync, &rdev->flags)) in fix_read_error()
2349 atomic_inc(&rdev->nr_pending); in fix_read_error()
2351 if (r10_sync_page_io(rdev, in fix_read_error()
2365 rdev)), in fix_read_error()
2366 bdevname(rdev->bdev, b)); in fix_read_error()
2370 bdevname(rdev->bdev, b)); in fix_read_error()
2372 rdev_dec_pending(rdev, mddev); in fix_read_error()
2383 rdev = rcu_dereference(conf->mirrors[d].rdev); in fix_read_error()
2384 if (!rdev || in fix_read_error()
2385 !test_bit(In_sync, &rdev->flags)) in fix_read_error()
2388 atomic_inc(&rdev->nr_pending); in fix_read_error()
2390 switch (r10_sync_page_io(rdev, in fix_read_error()
2404 choose_data_offset(r10_bio, rdev)), in fix_read_error()
2405 bdevname(rdev->bdev, b)); in fix_read_error()
2409 bdevname(rdev->bdev, b)); in fix_read_error()
2418 choose_data_offset(r10_bio, rdev)), in fix_read_error()
2419 bdevname(rdev->bdev, b)); in fix_read_error()
2420 atomic_add(s, &rdev->corrected_errors); in fix_read_error()
2423 rdev_dec_pending(rdev, mddev); in fix_read_error()
2438 struct md_rdev *rdev = conf->mirrors[r10_bio->devs[i].devnum].rdev; in narrow_write_error() local
2456 if (rdev->badblocks.shift < 0) in narrow_write_error()
2459 block_sectors = roundup(1 << rdev->badblocks.shift, in narrow_write_error()
2460 bdev_logical_block_size(rdev->bdev) >> 9); in narrow_write_error()
2474 choose_data_offset(r10_bio, rdev) + in narrow_write_error()
2476 wbio->bi_bdev = rdev->bdev; in narrow_write_error()
2479 ok = rdev_set_badblocks(rdev, sector, in narrow_write_error()
2496 struct md_rdev *rdev = r10_bio->devs[slot].rdev; in handle_read_error() local
2521 rdev_dec_pending(rdev, mddev); in handle_read_error()
2524 rdev = read_balance(conf, r10_bio, &max_sectors); in handle_read_error()
2525 if (rdev == NULL) { in handle_read_error()
2541 bdevname(rdev->bdev, b), in handle_read_error()
2547 r10_bio->devs[slot].rdev = rdev; in handle_read_error()
2549 + choose_data_offset(r10_bio, rdev); in handle_read_error()
2550 bio->bi_bdev = rdev->bdev; in handle_read_error()
2594 struct md_rdev *rdev; in handle_write_completed() local
2600 rdev = conf->mirrors[dev].rdev; in handle_write_completed()
2605 rdev, in handle_write_completed()
2610 rdev, in handle_write_completed()
2613 md_error(conf->mddev, rdev); in handle_write_completed()
2615 rdev = conf->mirrors[dev].replacement; in handle_write_completed()
2621 rdev, in handle_write_completed()
2626 rdev, in handle_write_completed()
2629 md_error(conf->mddev, rdev); in handle_write_completed()
2638 rdev = conf->mirrors[dev].rdev; in handle_write_completed()
2641 rdev, in handle_write_completed()
2644 rdev_dec_pending(rdev, conf->mddev); in handle_write_completed()
2648 md_error(conf->mddev, rdev); in handle_write_completed()
2652 rdev_dec_pending(rdev, conf->mddev); in handle_write_completed()
2655 rdev = conf->mirrors[dev].replacement; in handle_write_completed()
2656 if (rdev && bio == IO_MADE_GOOD) { in handle_write_completed()
2658 rdev, in handle_write_completed()
2661 rdev_dec_pending(rdev, conf->mddev); in handle_write_completed()
2944 if ((mirror->rdev == NULL || in sync_request()
2945 test_bit(In_sync, &mirror->rdev->flags)) in sync_request()
2998 if (conf->mirrors[j].rdev == NULL || in sync_request()
2999 test_bit(Faulty, &conf->mirrors[j].rdev->flags)) { in sync_request()
3012 struct md_rdev *rdev; in sync_request() local
3015 if (!conf->mirrors[d].rdev || in sync_request()
3016 !test_bit(In_sync, &conf->mirrors[d].rdev->flags)) in sync_request()
3020 rdev = conf->mirrors[d].rdev; in sync_request()
3023 if (is_badblock(rdev, sector, max_sync, in sync_request()
3044 rdev->data_offset; in sync_request()
3045 bio->bi_bdev = rdev->bdev; in sync_request()
3046 atomic_inc(&rdev->nr_pending); in sync_request()
3059 rdev = mirror->rdev; in sync_request()
3060 if (!test_bit(In_sync, &rdev->flags)) { in sync_request()
3069 + rdev->data_offset; in sync_request()
3070 bio->bi_bdev = rdev->bdev; in sync_request()
3079 rdev = mirror->replacement; in sync_request()
3088 if (rdev == NULL || bio == NULL || in sync_request()
3089 test_bit(Faulty, &rdev->flags)) in sync_request()
3098 rdev->data_offset; in sync_request()
3099 bio->bi_bdev = rdev->bdev; in sync_request()
3115 &mirror->rdev->flags) in sync_request()
3117 mirror->rdev, in sync_request()
3194 if (conf->mirrors[d].rdev == NULL || in sync_request()
3195 test_bit(Faulty, &conf->mirrors[d].rdev->flags)) in sync_request()
3198 if (is_badblock(conf->mirrors[d].rdev, in sync_request()
3210 atomic_inc(&conf->mirrors[d].rdev->nr_pending); in sync_request()
3218 conf->mirrors[d].rdev->data_offset; in sync_request()
3219 bio->bi_bdev = conf->mirrors[d].rdev->bdev; in sync_request()
3233 atomic_inc(&conf->mirrors[d].rdev->nr_pending); in sync_request()
3249 rdev_dec_pending(conf->mirrors[d].rdev, in sync_request()
3534 struct md_rdev *rdev; in run() local
3566 rdev_for_each(rdev, mddev) { in run()
3570 disk_idx = rdev->raid_disk; in run()
3578 if (test_bit(Replacement, &rdev->flags)) { in run()
3581 disk->replacement = rdev; in run()
3583 if (disk->rdev) in run()
3585 disk->rdev = rdev; in run()
3587 q = bdev_get_queue(rdev->bdev); in run()
3588 diff = (rdev->new_data_offset - rdev->data_offset); in run()
3597 disk_stack_limits(mddev->gendisk, rdev->bdev, in run()
3598 rdev->data_offset << 9); in run()
3602 if (blk_queue_discard(bdev_get_queue(rdev->bdev))) in run()
3639 if (!disk->rdev && disk->replacement) { in run()
3641 disk->rdev = disk->replacement; in run()
3643 clear_bit(Replacement, &disk->rdev->flags); in run()
3646 if (!disk->rdev || in run()
3647 !test_bit(In_sync, &disk->rdev->flags)) { in run()
3650 if (disk->rdev && in run()
3651 disk->rdev->saved_raid_disk < 0) in run()
3800 struct md_rdev *rdev; in raid10_takeover_raid0() local
3823 rdev_for_each(rdev, mddev) in raid10_takeover_raid0()
3824 if (rdev->raid_disk >= 0) { in raid10_takeover_raid0()
3825 rdev->new_raid_disk = rdev->raid_disk * 2; in raid10_takeover_raid0()
3826 rdev->sectors = size; in raid10_takeover_raid0()
3930 struct md_rdev *rdev = rcu_dereference(conf->mirrors[i].rdev); in calc_degraded() local
3931 if (!rdev || test_bit(Faulty, &rdev->flags)) in calc_degraded()
3933 else if (!test_bit(In_sync, &rdev->flags)) in calc_degraded()
3946 struct md_rdev *rdev = rcu_dereference(conf->mirrors[i].rdev); in calc_degraded() local
3947 if (!rdev || test_bit(Faulty, &rdev->flags)) in calc_degraded()
3949 else if (!test_bit(In_sync, &rdev->flags)) { in calc_degraded()
3982 struct md_rdev *rdev; in raid10_start_reshape() local
3997 rdev_for_each(rdev, mddev) { in raid10_start_reshape()
3998 if (!test_bit(In_sync, &rdev->flags) in raid10_start_reshape()
3999 && !test_bit(Faulty, &rdev->flags)) in raid10_start_reshape()
4001 if (rdev->raid_disk >= 0) { in raid10_start_reshape()
4002 long long diff = (rdev->new_data_offset in raid10_start_reshape()
4003 - rdev->data_offset); in raid10_start_reshape()
4056 rdev_for_each(rdev, mddev) in raid10_start_reshape()
4057 if (rdev->raid_disk < 0 && in raid10_start_reshape()
4058 !test_bit(Faulty, &rdev->flags)) { in raid10_start_reshape()
4059 if (raid10_add_disk(mddev, rdev) == 0) { in raid10_start_reshape()
4060 if (rdev->raid_disk >= in raid10_start_reshape()
4062 set_bit(In_sync, &rdev->flags); in raid10_start_reshape()
4064 rdev->recovery_offset = 0; in raid10_start_reshape()
4066 if (sysfs_link_rdev(mddev, rdev)) in raid10_start_reshape()
4069 } else if (rdev->raid_disk >= conf->prev.raid_disks in raid10_start_reshape()
4070 && !test_bit(Faulty, &rdev->flags)) { in raid10_start_reshape()
4072 set_bit(In_sync, &rdev->flags); in raid10_start_reshape()
4108 rdev_for_each(rdev, mddev) in raid10_start_reshape()
4109 rdev->new_data_offset = rdev->data_offset; in raid10_start_reshape()
4195 struct md_rdev *rdev; in reshape_request() local
4301 rdev = read_balance(conf, r10_bio, &max_sectors); in reshape_request()
4304 if (!rdev) { in reshape_request()
4316 read_bio->bi_bdev = rdev->bdev; in reshape_request()
4318 + rdev->data_offset); in reshape_request()
4343 rdev2 = conf->mirrors[d].rdev; in reshape_request()
4438 struct md_rdev *rdev; in reshape_request_write() local
4440 rdev = conf->mirrors[d].replacement; in reshape_request_write()
4443 rdev = conf->mirrors[d].rdev; in reshape_request_write()
4446 if (!rdev || test_bit(Faulty, &rdev->flags)) in reshape_request_write()
4448 atomic_inc(&rdev->nr_pending); in reshape_request_write()
4511 struct md_rdev *rdev = conf->mirrors[d].rdev; in handle_reshape_read_error() local
4513 if (rdev == NULL || in handle_reshape_read_error()
4514 test_bit(Faulty, &rdev->flags) || in handle_reshape_read_error()
4515 !test_bit(In_sync, &rdev->flags)) in handle_reshape_read_error()
4519 success = sync_page_io(rdev, in handle_reshape_read_error()
4553 struct md_rdev *rdev = NULL; in end_reshape_write() local
4557 rdev = conf->mirrors[d].replacement; in end_reshape_write()
4558 if (!rdev) { in end_reshape_write()
4560 rdev = conf->mirrors[d].rdev; in end_reshape_write()
4565 md_error(mddev, rdev); in end_reshape_write()
4568 rdev_dec_pending(rdev, mddev); in end_reshape_write()
4603 struct md_rdev *rdev = conf->mirrors[d].rdev; in raid10_finish_reshape() local
4604 if (rdev) in raid10_finish_reshape()
4605 clear_bit(In_sync, &rdev->flags); in raid10_finish_reshape()
4606 rdev = conf->mirrors[d].replacement; in raid10_finish_reshape()
4607 if (rdev) in raid10_finish_reshape()
4608 clear_bit(In_sync, &rdev->flags); in raid10_finish_reshape()