Lines Matching refs:rdev

207 			rdev_dec_pending(conf->mirrors[i].rdev, r1_bio->mddev);  in put_buf()
339 test_bit(In_sync, &conf->mirrors[mirror].rdev->flags))) in raid1_end_read_request()
346 rdev_dec_pending(conf->mirrors[mirror].rdev, conf->mddev); in raid1_end_read_request()
356 bdevname(conf->mirrors[mirror].rdev->bdev, in raid1_end_read_request()
415 &conf->mirrors[mirror].rdev->flags); in raid1_end_write_request()
417 &conf->mirrors[mirror].rdev->flags)) in raid1_end_write_request()
446 if (test_bit(In_sync, &conf->mirrors[mirror].rdev->flags) && in raid1_end_write_request()
447 !test_bit(Faulty, &conf->mirrors[mirror].rdev->flags)) in raid1_end_write_request()
451 if (is_badblock(conf->mirrors[mirror].rdev, in raid1_end_write_request()
460 if (test_bit(WriteMostly, &conf->mirrors[mirror].rdev->flags)) in raid1_end_write_request()
484 rdev_dec_pending(conf->mirrors[mirror].rdev, in raid1_end_write_request()
521 struct md_rdev *rdev; in read_balance() local
557 rdev = rcu_dereference(conf->mirrors[disk].rdev); in read_balance()
559 || rdev == NULL in read_balance()
560 || test_bit(Unmerged, &rdev->flags) in read_balance()
561 || test_bit(Faulty, &rdev->flags)) in read_balance()
563 if (!test_bit(In_sync, &rdev->flags) && in read_balance()
564 rdev->recovery_offset < this_sector + sectors) in read_balance()
566 if (test_bit(WriteMostly, &rdev->flags)) { in read_balance()
570 if (is_badblock(rdev, this_sector, sectors, in read_balance()
586 if (is_badblock(rdev, this_sector, sectors, in read_balance()
615 nonrot = blk_queue_nonrot(bdev_get_queue(rdev->bdev)); in read_balance()
617 pending = atomic_read(&rdev->nr_pending); in read_balance()
626 int opt_iosize = bdev_io_opt(rdev->bdev) >> 9; in read_balance()
687 rdev = rcu_dereference(conf->mirrors[best_disk].rdev); in read_balance()
688 if (!rdev) in read_balance()
690 atomic_inc(&rdev->nr_pending); in read_balance()
691 if (test_bit(Faulty, &rdev->flags)) { in read_balance()
695 rdev_dec_pending(rdev, conf->mddev); in read_balance()
723 struct md_rdev *rdev = rcu_dereference( in raid1_mergeable_bvec() local
724 conf->mirrors[disk].rdev); in raid1_mergeable_bvec()
725 if (rdev && !test_bit(Faulty, &rdev->flags)) { in raid1_mergeable_bvec()
727 bdev_get_queue(rdev->bdev); in raid1_mergeable_bvec()
730 rdev->data_offset; in raid1_mergeable_bvec()
731 bvm->bi_bdev = rdev->bdev; in raid1_mergeable_bvec()
754 struct md_rdev *rdev = rcu_dereference(conf->mirrors[i].rdev); in raid1_congested() local
755 if (rdev && !test_bit(Faulty, &rdev->flags)) { in raid1_congested()
756 struct request_queue *q = bdev_get_queue(rdev->bdev); in raid1_congested()
1178 if (test_bit(WriteMostly, &mirror->rdev->flags) && in make_request()
1197 mirror->rdev->data_offset; in make_request()
1198 read_bio->bi_bdev = mirror->rdev->bdev; in make_request()
1264 struct md_rdev *rdev = rcu_dereference(conf->mirrors[i].rdev); in make_request() local
1265 if (rdev && unlikely(test_bit(Blocked, &rdev->flags))) { in make_request()
1266 atomic_inc(&rdev->nr_pending); in make_request()
1267 blocked_rdev = rdev; in make_request()
1271 if (!rdev || test_bit(Faulty, &rdev->flags) in make_request()
1272 || test_bit(Unmerged, &rdev->flags)) { in make_request()
1278 atomic_inc(&rdev->nr_pending); in make_request()
1279 if (test_bit(WriteErrorSeen, &rdev->flags)) { in make_request()
1284 is_bad = is_badblock(rdev, r1_bio->sector, in make_request()
1290 set_bit(BlockedBadBlocks, &rdev->flags); in make_request()
1291 blocked_rdev = rdev; in make_request()
1302 rdev_dec_pending(rdev, mddev); in make_request()
1332 rdev_dec_pending(conf->mirrors[j].rdev, mddev); in make_request()
1401 if (test_bit(WriteMostly, &conf->mirrors[i].rdev->flags)) in make_request()
1408 conf->mirrors[i].rdev->data_offset); in make_request()
1409 mbio->bi_bdev = conf->mirrors[i].rdev->bdev; in make_request()
1466 struct md_rdev *rdev = rcu_dereference(conf->mirrors[i].rdev); in status() local
1468 rdev && test_bit(In_sync, &rdev->flags) ? "U" : "_"); in status()
1474 static void error(struct mddev *mddev, struct md_rdev *rdev) in error() argument
1486 if (test_bit(In_sync, &rdev->flags) in error()
1497 set_bit(Blocked, &rdev->flags); in error()
1499 if (test_and_clear_bit(In_sync, &rdev->flags)) { in error()
1501 set_bit(Faulty, &rdev->flags); in error()
1503 set_bit(Faulty, &rdev->flags); in error()
1513 mdname(mddev), bdevname(rdev->bdev, b), in error()
1532 struct md_rdev *rdev = rcu_dereference(conf->mirrors[i].rdev); in print_conf() local
1533 if (rdev) in print_conf()
1535 i, !test_bit(In_sync, &rdev->flags), in print_conf()
1536 !test_bit(Faulty, &rdev->flags), in print_conf()
1537 bdevname(rdev->bdev,b)); in print_conf()
1575 struct md_rdev *rdev = conf->mirrors[i].rdev; in raid1_spare_active() local
1576 struct md_rdev *repl = conf->mirrors[conf->raid_disks + i].rdev; in raid1_spare_active()
1583 if (!rdev || in raid1_spare_active()
1584 !test_and_clear_bit(In_sync, &rdev->flags)) in raid1_spare_active()
1586 if (rdev) { in raid1_spare_active()
1591 set_bit(Faulty, &rdev->flags); in raid1_spare_active()
1593 rdev->sysfs_state); in raid1_spare_active()
1596 if (rdev in raid1_spare_active()
1597 && rdev->recovery_offset == MaxSector in raid1_spare_active()
1598 && !test_bit(Faulty, &rdev->flags) in raid1_spare_active()
1599 && !test_and_set_bit(In_sync, &rdev->flags)) { in raid1_spare_active()
1601 sysfs_notify_dirent_safe(rdev->sysfs_state); in raid1_spare_active()
1611 static int raid1_add_disk(struct mddev *mddev, struct md_rdev *rdev) in raid1_add_disk() argument
1619 struct request_queue *q = bdev_get_queue(rdev->bdev); in raid1_add_disk()
1624 if (rdev->raid_disk >= 0) in raid1_add_disk()
1625 first = last = rdev->raid_disk; in raid1_add_disk()
1628 set_bit(Unmerged, &rdev->flags); in raid1_add_disk()
1634 if (!p->rdev) { in raid1_add_disk()
1637 disk_stack_limits(mddev->gendisk, rdev->bdev, in raid1_add_disk()
1638 rdev->data_offset << 9); in raid1_add_disk()
1641 rdev->raid_disk = mirror; in raid1_add_disk()
1646 if (rdev->saved_raid_disk < 0) in raid1_add_disk()
1648 rcu_assign_pointer(p->rdev, rdev); in raid1_add_disk()
1651 if (test_bit(WantReplacement, &p->rdev->flags) && in raid1_add_disk()
1652 p[conf->raid_disks].rdev == NULL) { in raid1_add_disk()
1654 clear_bit(In_sync, &rdev->flags); in raid1_add_disk()
1655 set_bit(Replacement, &rdev->flags); in raid1_add_disk()
1656 rdev->raid_disk = mirror; in raid1_add_disk()
1659 rcu_assign_pointer(p[conf->raid_disks].rdev, rdev); in raid1_add_disk()
1663 if (err == 0 && test_bit(Unmerged, &rdev->flags)) { in raid1_add_disk()
1674 clear_bit(Unmerged, &rdev->flags); in raid1_add_disk()
1676 md_integrity_add_rdev(rdev, mddev); in raid1_add_disk()
1677 if (mddev->queue && blk_queue_discard(bdev_get_queue(rdev->bdev))) in raid1_add_disk()
1683 static int raid1_remove_disk(struct mddev *mddev, struct md_rdev *rdev) in raid1_remove_disk() argument
1687 int number = rdev->raid_disk; in raid1_remove_disk()
1690 if (rdev != p->rdev) in raid1_remove_disk()
1694 if (rdev == p->rdev) { in raid1_remove_disk()
1695 if (test_bit(In_sync, &rdev->flags) || in raid1_remove_disk()
1696 atomic_read(&rdev->nr_pending)) { in raid1_remove_disk()
1703 if (!test_bit(Faulty, &rdev->flags) && in raid1_remove_disk()
1709 p->rdev = NULL; in raid1_remove_disk()
1711 if (atomic_read(&rdev->nr_pending)) { in raid1_remove_disk()
1714 p->rdev = rdev; in raid1_remove_disk()
1716 } else if (conf->mirrors[conf->raid_disks + number].rdev) { in raid1_remove_disk()
1722 conf->mirrors[conf->raid_disks + number].rdev; in raid1_remove_disk()
1725 p->rdev = repl; in raid1_remove_disk()
1726 conf->mirrors[conf->raid_disks + number].rdev = NULL; in raid1_remove_disk()
1728 clear_bit(WantReplacement, &rdev->flags); in raid1_remove_disk()
1730 clear_bit(WantReplacement, &rdev->flags); in raid1_remove_disk()
1781 &conf->mirrors[mirror].rdev->flags); in end_sync_write()
1783 &conf->mirrors[mirror].rdev->flags)) in end_sync_write()
1787 } else if (is_badblock(conf->mirrors[mirror].rdev, in end_sync_write()
1791 !is_badblock(conf->mirrors[r1_bio->read_disk].rdev, in end_sync_write()
1810 static int r1_sync_page_io(struct md_rdev *rdev, sector_t sector, in r1_sync_page_io() argument
1813 if (sync_page_io(rdev, sector, sectors << 9, page, rw, false)) in r1_sync_page_io()
1817 set_bit(WriteErrorSeen, &rdev->flags); in r1_sync_page_io()
1819 &rdev->flags)) in r1_sync_page_io()
1821 rdev->mddev->recovery); in r1_sync_page_io()
1824 if (!rdev_set_badblocks(rdev, sector, sectors, 0)) in r1_sync_page_io()
1825 md_error(rdev->mddev, rdev); in r1_sync_page_io()
1853 struct md_rdev *rdev; in fix_sync_read_error() local
1864 rdev = conf->mirrors[d].rdev; in fix_sync_read_error()
1865 if (sync_page_io(rdev, sect, s<<9, in fix_sync_read_error()
1891 rdev = conf->mirrors[d].rdev; in fix_sync_read_error()
1892 if (!rdev || test_bit(Faulty, &rdev->flags)) in fix_sync_read_error()
1894 if (!rdev_set_badblocks(rdev, sect, s, 0)) in fix_sync_read_error()
1920 rdev = conf->mirrors[d].rdev; in fix_sync_read_error()
1921 if (r1_sync_page_io(rdev, sect, s, in fix_sync_read_error()
1925 rdev_dec_pending(rdev, mddev); in fix_sync_read_error()
1935 rdev = conf->mirrors[d].rdev; in fix_sync_read_error()
1936 if (r1_sync_page_io(rdev, sect, s, in fix_sync_read_error()
1939 atomic_add(s, &rdev->corrected_errors); in fix_sync_read_error()
1982 conf->mirrors[i].rdev->data_offset; in process_checks()
1983 b->bi_bdev = conf->mirrors[i].rdev->bdev; in process_checks()
2003 rdev_dec_pending(conf->mirrors[primary].rdev, mddev); in process_checks()
2036 rdev_dec_pending(conf->mirrors[i].rdev, mddev); in process_checks()
2076 md_sync_acct(conf->mirrors[i].rdev->bdev, bio_sectors(wbio)); in sync_request_write()
2111 struct md_rdev *rdev; in fix_read_error() local
2125 rdev = conf->mirrors[d].rdev; in fix_read_error()
2126 if (rdev && in fix_read_error()
2127 (test_bit(In_sync, &rdev->flags) || in fix_read_error()
2128 (!test_bit(Faulty, &rdev->flags) && in fix_read_error()
2129 rdev->recovery_offset >= sect + s)) && in fix_read_error()
2130 is_badblock(rdev, sect, s, in fix_read_error()
2132 sync_page_io(rdev, sect, s<<9, in fix_read_error()
2144 struct md_rdev *rdev = conf->mirrors[read_disk].rdev; in fix_read_error() local
2145 if (!rdev_set_badblocks(rdev, sect, s, 0)) in fix_read_error()
2146 md_error(mddev, rdev); in fix_read_error()
2155 rdev = conf->mirrors[d].rdev; in fix_read_error()
2156 if (rdev && in fix_read_error()
2157 !test_bit(Faulty, &rdev->flags)) in fix_read_error()
2158 r1_sync_page_io(rdev, sect, s, in fix_read_error()
2167 rdev = conf->mirrors[d].rdev; in fix_read_error()
2168 if (rdev && in fix_read_error()
2169 !test_bit(Faulty, &rdev->flags)) { in fix_read_error()
2170 if (r1_sync_page_io(rdev, sect, s, in fix_read_error()
2172 atomic_add(s, &rdev->corrected_errors); in fix_read_error()
2178 rdev->data_offset), in fix_read_error()
2179 bdevname(rdev->bdev, b)); in fix_read_error()
2192 struct md_rdev *rdev = conf->mirrors[i].rdev; in narrow_write_error() local
2211 if (rdev->badblocks.shift < 0) in narrow_write_error()
2214 block_sectors = roundup(1 << rdev->badblocks.shift, in narrow_write_error()
2215 bdev_logical_block_size(rdev->bdev) >> 9); in narrow_write_error()
2249 wbio->bi_iter.bi_sector += rdev->data_offset; in narrow_write_error()
2250 wbio->bi_bdev = rdev->bdev; in narrow_write_error()
2253 ok = rdev_set_badblocks(rdev, sector, in narrow_write_error()
2270 struct md_rdev *rdev = conf->mirrors[m].rdev; in handle_sync_write_finished() local
2276 rdev_clear_badblocks(rdev, r1_bio->sector, s, 0); in handle_sync_write_finished()
2280 if (!rdev_set_badblocks(rdev, r1_bio->sector, s, 0)) in handle_sync_write_finished()
2281 md_error(conf->mddev, rdev); in handle_sync_write_finished()
2293 struct md_rdev *rdev = conf->mirrors[m].rdev; in handle_write_finished() local
2294 rdev_clear_badblocks(rdev, in handle_write_finished()
2297 rdev_dec_pending(rdev, conf->mddev); in handle_write_finished()
2305 conf->mirrors[m].rdev); in handle_write_finished()
2309 rdev_dec_pending(conf->mirrors[m].rdev, in handle_write_finished()
2324 struct md_rdev *rdev; in handle_read_error() local
2341 md_error(mddev, conf->mirrors[r1_bio->read_disk].rdev); in handle_read_error()
2342 rdev_dec_pending(conf->mirrors[r1_bio->read_disk].rdev, conf->mddev); in handle_read_error()
2366 rdev = conf->mirrors[disk].rdev; in handle_read_error()
2372 bdevname(rdev->bdev, b)); in handle_read_error()
2373 bio->bi_iter.bi_sector = r1_bio->sector + rdev->data_offset; in handle_read_error()
2374 bio->bi_bdev = rdev->bdev; in handle_read_error()
2560 struct md_rdev *rdev; in sync_request() local
2564 rdev = rcu_dereference(conf->mirrors[i].rdev); in sync_request()
2565 if (rdev == NULL || in sync_request()
2566 test_bit(Faulty, &rdev->flags)) { in sync_request()
2569 } else if (!test_bit(In_sync, &rdev->flags)) { in sync_request()
2578 if (is_badblock(rdev, sector_nr, good_sectors, in sync_request()
2590 if (test_bit(WriteMostly, &rdev->flags)) { in sync_request()
2600 } else if (!test_bit(WriteErrorSeen, &rdev->flags) && in sync_request()
2615 atomic_inc(&rdev->nr_pending); in sync_request()
2616 bio->bi_iter.bi_sector = sector_nr + rdev->data_offset; in sync_request()
2617 bio->bi_bdev = rdev->bdev; in sync_request()
2633 struct md_rdev *rdev = conf->mirrors[i].rdev; in sync_request() local
2634 ok = rdev_set_badblocks(rdev, sector_nr, in sync_request()
2766 struct md_rdev *rdev; in setup_conf() local
2797 rdev_for_each(rdev, mddev) { in setup_conf()
2799 int disk_idx = rdev->raid_disk; in setup_conf()
2803 if (test_bit(Replacement, &rdev->flags)) in setup_conf()
2808 if (disk->rdev) in setup_conf()
2810 disk->rdev = rdev; in setup_conf()
2811 q = bdev_get_queue(rdev->bdev); in setup_conf()
2838 disk[conf->raid_disks].rdev) { in setup_conf()
2840 if (!disk->rdev) { in setup_conf()
2844 disk->rdev = in setup_conf()
2845 disk[conf->raid_disks].rdev; in setup_conf()
2846 disk[conf->raid_disks].rdev = NULL; in setup_conf()
2847 } else if (!test_bit(In_sync, &disk->rdev->flags)) in setup_conf()
2852 if (!disk->rdev || in setup_conf()
2853 !test_bit(In_sync, &disk->rdev->flags)) { in setup_conf()
2855 if (disk->rdev && in setup_conf()
2856 (disk->rdev->saved_raid_disk < 0)) in setup_conf()
2889 struct md_rdev *rdev; in run() local
2919 rdev_for_each(rdev, mddev) { in run()
2922 disk_stack_limits(mddev->gendisk, rdev->bdev, in run()
2923 rdev->data_offset << 9); in run()
2924 if (blk_queue_discard(bdev_get_queue(rdev->bdev))) in run()
2930 if (conf->mirrors[i].rdev == NULL || in run()
2931 !test_bit(In_sync, &conf->mirrors[i].rdev->flags) || in run()
2932 test_bit(Faulty, &conf->mirrors[i].rdev->flags)) in run()
3056 if (conf->mirrors[d].rdev) in raid1_reshape()
3089 struct md_rdev *rdev = conf->mirrors[d].rdev; in raid1_reshape() local
3090 if (rdev && rdev->raid_disk != d2) { in raid1_reshape()
3091 sysfs_unlink_rdev(mddev, rdev); in raid1_reshape()
3092 rdev->raid_disk = d2; in raid1_reshape()
3093 sysfs_unlink_rdev(mddev, rdev); in raid1_reshape()
3094 if (sysfs_link_rdev(mddev, rdev)) in raid1_reshape()
3097 mdname(mddev), rdev->raid_disk); in raid1_reshape()
3099 if (rdev) in raid1_reshape()
3100 newmirrors[d2++].rdev = rdev; in raid1_reshape()