Lines Matching refs:rdev

209 			rdev_dec_pending(conf->mirrors[i].rdev, r1_bio->mddev);  in put_buf()
342 test_bit(In_sync, &conf->mirrors[mirror].rdev->flags))) in raid1_end_read_request()
349 rdev_dec_pending(conf->mirrors[mirror].rdev, conf->mddev); in raid1_end_read_request()
359 bdevname(conf->mirrors[mirror].rdev->bdev, in raid1_end_read_request()
417 &conf->mirrors[mirror].rdev->flags); in raid1_end_write_request()
419 &conf->mirrors[mirror].rdev->flags)) in raid1_end_write_request()
448 if (test_bit(In_sync, &conf->mirrors[mirror].rdev->flags) && in raid1_end_write_request()
449 !test_bit(Faulty, &conf->mirrors[mirror].rdev->flags)) in raid1_end_write_request()
453 if (is_badblock(conf->mirrors[mirror].rdev, in raid1_end_write_request()
462 if (test_bit(WriteMostly, &conf->mirrors[mirror].rdev->flags)) in raid1_end_write_request()
486 rdev_dec_pending(conf->mirrors[mirror].rdev, in raid1_end_write_request()
523 struct md_rdev *rdev; in read_balance() local
559 rdev = rcu_dereference(conf->mirrors[disk].rdev); in read_balance()
561 || rdev == NULL in read_balance()
562 || test_bit(Faulty, &rdev->flags)) in read_balance()
564 if (!test_bit(In_sync, &rdev->flags) && in read_balance()
565 rdev->recovery_offset < this_sector + sectors) in read_balance()
567 if (test_bit(WriteMostly, &rdev->flags)) { in read_balance()
571 if (is_badblock(rdev, this_sector, sectors, in read_balance()
587 if (is_badblock(rdev, this_sector, sectors, in read_balance()
616 nonrot = blk_queue_nonrot(bdev_get_queue(rdev->bdev)); in read_balance()
618 pending = atomic_read(&rdev->nr_pending); in read_balance()
627 int opt_iosize = bdev_io_opt(rdev->bdev) >> 9; in read_balance()
688 rdev = rcu_dereference(conf->mirrors[best_disk].rdev); in read_balance()
689 if (!rdev) in read_balance()
691 atomic_inc(&rdev->nr_pending); in read_balance()
692 if (test_bit(Faulty, &rdev->flags)) { in read_balance()
696 rdev_dec_pending(rdev, conf->mddev); in read_balance()
723 struct md_rdev *rdev = rcu_dereference(conf->mirrors[i].rdev); in raid1_congested() local
724 if (rdev && !test_bit(Faulty, &rdev->flags)) { in raid1_congested()
725 struct request_queue *q = bdev_get_queue(rdev->bdev); in raid1_congested()
1147 if (test_bit(WriteMostly, &mirror->rdev->flags) && in make_request()
1166 mirror->rdev->data_offset; in make_request()
1167 read_bio->bi_bdev = mirror->rdev->bdev; in make_request()
1233 struct md_rdev *rdev = rcu_dereference(conf->mirrors[i].rdev); in make_request() local
1234 if (rdev && unlikely(test_bit(Blocked, &rdev->flags))) { in make_request()
1235 atomic_inc(&rdev->nr_pending); in make_request()
1236 blocked_rdev = rdev; in make_request()
1240 if (!rdev || test_bit(Faulty, &rdev->flags)) { in make_request()
1246 atomic_inc(&rdev->nr_pending); in make_request()
1247 if (test_bit(WriteErrorSeen, &rdev->flags)) { in make_request()
1252 is_bad = is_badblock(rdev, r1_bio->sector, in make_request()
1258 set_bit(BlockedBadBlocks, &rdev->flags); in make_request()
1259 blocked_rdev = rdev; in make_request()
1270 rdev_dec_pending(rdev, mddev); in make_request()
1300 rdev_dec_pending(conf->mirrors[j].rdev, mddev); in make_request()
1369 if (test_bit(WriteMostly, &conf->mirrors[i].rdev->flags)) in make_request()
1376 conf->mirrors[i].rdev->data_offset); in make_request()
1377 mbio->bi_bdev = conf->mirrors[i].rdev->bdev; in make_request()
1434 struct md_rdev *rdev = rcu_dereference(conf->mirrors[i].rdev); in status() local
1436 rdev && test_bit(In_sync, &rdev->flags) ? "U" : "_"); in status()
1442 static void error(struct mddev *mddev, struct md_rdev *rdev) in error() argument
1454 if (test_bit(In_sync, &rdev->flags) in error()
1465 set_bit(Blocked, &rdev->flags); in error()
1467 if (test_and_clear_bit(In_sync, &rdev->flags)) { in error()
1469 set_bit(Faulty, &rdev->flags); in error()
1471 set_bit(Faulty, &rdev->flags); in error()
1482 mdname(mddev), bdevname(rdev->bdev, b), in error()
1501 struct md_rdev *rdev = rcu_dereference(conf->mirrors[i].rdev); in print_conf() local
1502 if (rdev) in print_conf()
1504 i, !test_bit(In_sync, &rdev->flags), in print_conf()
1505 !test_bit(Faulty, &rdev->flags), in print_conf()
1506 bdevname(rdev->bdev,b)); in print_conf()
1544 struct md_rdev *rdev = conf->mirrors[i].rdev; in raid1_spare_active() local
1545 struct md_rdev *repl = conf->mirrors[conf->raid_disks + i].rdev; in raid1_spare_active()
1552 if (!rdev || in raid1_spare_active()
1553 !test_and_clear_bit(In_sync, &rdev->flags)) in raid1_spare_active()
1555 if (rdev) { in raid1_spare_active()
1560 set_bit(Faulty, &rdev->flags); in raid1_spare_active()
1562 rdev->sysfs_state); in raid1_spare_active()
1565 if (rdev in raid1_spare_active()
1566 && rdev->recovery_offset == MaxSector in raid1_spare_active()
1567 && !test_bit(Faulty, &rdev->flags) in raid1_spare_active()
1568 && !test_and_set_bit(In_sync, &rdev->flags)) { in raid1_spare_active()
1570 sysfs_notify_dirent_safe(rdev->sysfs_state); in raid1_spare_active()
1580 static int raid1_add_disk(struct mddev *mddev, struct md_rdev *rdev) in raid1_add_disk() argument
1592 if (md_integrity_add_rdev(rdev, mddev)) in raid1_add_disk()
1595 if (rdev->raid_disk >= 0) in raid1_add_disk()
1596 first = last = rdev->raid_disk; in raid1_add_disk()
1602 if (rdev->saved_raid_disk >= 0 && in raid1_add_disk()
1603 rdev->saved_raid_disk >= first && in raid1_add_disk()
1604 conf->mirrors[rdev->saved_raid_disk].rdev == NULL) in raid1_add_disk()
1605 first = last = rdev->saved_raid_disk; in raid1_add_disk()
1609 if (!p->rdev) { in raid1_add_disk()
1612 disk_stack_limits(mddev->gendisk, rdev->bdev, in raid1_add_disk()
1613 rdev->data_offset << 9); in raid1_add_disk()
1616 rdev->raid_disk = mirror; in raid1_add_disk()
1621 if (rdev->saved_raid_disk < 0) in raid1_add_disk()
1623 rcu_assign_pointer(p->rdev, rdev); in raid1_add_disk()
1626 if (test_bit(WantReplacement, &p->rdev->flags) && in raid1_add_disk()
1627 p[conf->raid_disks].rdev == NULL) { in raid1_add_disk()
1629 clear_bit(In_sync, &rdev->flags); in raid1_add_disk()
1630 set_bit(Replacement, &rdev->flags); in raid1_add_disk()
1631 rdev->raid_disk = mirror; in raid1_add_disk()
1634 rcu_assign_pointer(p[conf->raid_disks].rdev, rdev); in raid1_add_disk()
1638 if (mddev->queue && blk_queue_discard(bdev_get_queue(rdev->bdev))) in raid1_add_disk()
1644 static int raid1_remove_disk(struct mddev *mddev, struct md_rdev *rdev) in raid1_remove_disk() argument
1648 int number = rdev->raid_disk; in raid1_remove_disk()
1651 if (rdev != p->rdev) in raid1_remove_disk()
1655 if (rdev == p->rdev) { in raid1_remove_disk()
1656 if (test_bit(In_sync, &rdev->flags) || in raid1_remove_disk()
1657 atomic_read(&rdev->nr_pending)) { in raid1_remove_disk()
1664 if (!test_bit(Faulty, &rdev->flags) && in raid1_remove_disk()
1670 p->rdev = NULL; in raid1_remove_disk()
1672 if (atomic_read(&rdev->nr_pending)) { in raid1_remove_disk()
1675 p->rdev = rdev; in raid1_remove_disk()
1677 } else if (conf->mirrors[conf->raid_disks + number].rdev) { in raid1_remove_disk()
1683 conf->mirrors[conf->raid_disks + number].rdev; in raid1_remove_disk()
1686 p->rdev = repl; in raid1_remove_disk()
1687 conf->mirrors[conf->raid_disks + number].rdev = NULL; in raid1_remove_disk()
1689 clear_bit(WantReplacement, &rdev->flags); in raid1_remove_disk()
1691 clear_bit(WantReplacement, &rdev->flags); in raid1_remove_disk()
1742 &conf->mirrors[mirror].rdev->flags); in end_sync_write()
1744 &conf->mirrors[mirror].rdev->flags)) in end_sync_write()
1748 } else if (is_badblock(conf->mirrors[mirror].rdev, in end_sync_write()
1752 !is_badblock(conf->mirrors[r1_bio->read_disk].rdev, in end_sync_write()
1771 static int r1_sync_page_io(struct md_rdev *rdev, sector_t sector, in r1_sync_page_io() argument
1774 if (sync_page_io(rdev, sector, sectors << 9, page, rw, false)) in r1_sync_page_io()
1778 set_bit(WriteErrorSeen, &rdev->flags); in r1_sync_page_io()
1780 &rdev->flags)) in r1_sync_page_io()
1782 rdev->mddev->recovery); in r1_sync_page_io()
1785 if (!rdev_set_badblocks(rdev, sector, sectors, 0)) in r1_sync_page_io()
1786 md_error(rdev->mddev, rdev); in r1_sync_page_io()
1814 struct md_rdev *rdev; in fix_sync_read_error() local
1825 rdev = conf->mirrors[d].rdev; in fix_sync_read_error()
1826 if (sync_page_io(rdev, sect, s<<9, in fix_sync_read_error()
1852 rdev = conf->mirrors[d].rdev; in fix_sync_read_error()
1853 if (!rdev || test_bit(Faulty, &rdev->flags)) in fix_sync_read_error()
1855 if (!rdev_set_badblocks(rdev, sect, s, 0)) in fix_sync_read_error()
1881 rdev = conf->mirrors[d].rdev; in fix_sync_read_error()
1882 if (r1_sync_page_io(rdev, sect, s, in fix_sync_read_error()
1886 rdev_dec_pending(rdev, mddev); in fix_sync_read_error()
1896 rdev = conf->mirrors[d].rdev; in fix_sync_read_error()
1897 if (r1_sync_page_io(rdev, sect, s, in fix_sync_read_error()
1900 atomic_add(s, &rdev->corrected_errors); in fix_sync_read_error()
1942 conf->mirrors[i].rdev->data_offset; in process_checks()
1943 b->bi_bdev = conf->mirrors[i].rdev->bdev; in process_checks()
1963 rdev_dec_pending(conf->mirrors[primary].rdev, mddev); in process_checks()
1996 rdev_dec_pending(conf->mirrors[i].rdev, mddev); in process_checks()
2036 md_sync_acct(conf->mirrors[i].rdev->bdev, bio_sectors(wbio)); in sync_request_write()
2071 struct md_rdev *rdev; in fix_read_error() local
2085 rdev = conf->mirrors[d].rdev; in fix_read_error()
2086 if (rdev && in fix_read_error()
2087 (test_bit(In_sync, &rdev->flags) || in fix_read_error()
2088 (!test_bit(Faulty, &rdev->flags) && in fix_read_error()
2089 rdev->recovery_offset >= sect + s)) && in fix_read_error()
2090 is_badblock(rdev, sect, s, in fix_read_error()
2092 sync_page_io(rdev, sect, s<<9, in fix_read_error()
2104 struct md_rdev *rdev = conf->mirrors[read_disk].rdev; in fix_read_error() local
2105 if (!rdev_set_badblocks(rdev, sect, s, 0)) in fix_read_error()
2106 md_error(mddev, rdev); in fix_read_error()
2115 rdev = conf->mirrors[d].rdev; in fix_read_error()
2116 if (rdev && in fix_read_error()
2117 !test_bit(Faulty, &rdev->flags)) in fix_read_error()
2118 r1_sync_page_io(rdev, sect, s, in fix_read_error()
2127 rdev = conf->mirrors[d].rdev; in fix_read_error()
2128 if (rdev && in fix_read_error()
2129 !test_bit(Faulty, &rdev->flags)) { in fix_read_error()
2130 if (r1_sync_page_io(rdev, sect, s, in fix_read_error()
2132 atomic_add(s, &rdev->corrected_errors); in fix_read_error()
2138 rdev->data_offset), in fix_read_error()
2139 bdevname(rdev->bdev, b)); in fix_read_error()
2152 struct md_rdev *rdev = conf->mirrors[i].rdev; in narrow_write_error() local
2171 if (rdev->badblocks.shift < 0) in narrow_write_error()
2174 block_sectors = roundup(1 << rdev->badblocks.shift, in narrow_write_error()
2175 bdev_logical_block_size(rdev->bdev) >> 9); in narrow_write_error()
2209 wbio->bi_iter.bi_sector += rdev->data_offset; in narrow_write_error()
2210 wbio->bi_bdev = rdev->bdev; in narrow_write_error()
2213 ok = rdev_set_badblocks(rdev, sector, in narrow_write_error()
2230 struct md_rdev *rdev = conf->mirrors[m].rdev; in handle_sync_write_finished() local
2236 rdev_clear_badblocks(rdev, r1_bio->sector, s, 0); in handle_sync_write_finished()
2240 if (!rdev_set_badblocks(rdev, r1_bio->sector, s, 0)) in handle_sync_write_finished()
2241 md_error(conf->mddev, rdev); in handle_sync_write_finished()
2254 struct md_rdev *rdev = conf->mirrors[m].rdev; in handle_write_finished() local
2255 rdev_clear_badblocks(rdev, in handle_write_finished()
2258 rdev_dec_pending(rdev, conf->mddev); in handle_write_finished()
2267 conf->mirrors[m].rdev); in handle_write_finished()
2271 rdev_dec_pending(conf->mirrors[m].rdev, in handle_write_finished()
2294 struct md_rdev *rdev; in handle_read_error() local
2311 md_error(mddev, conf->mirrors[r1_bio->read_disk].rdev); in handle_read_error()
2312 rdev_dec_pending(conf->mirrors[r1_bio->read_disk].rdev, conf->mddev); in handle_read_error()
2336 rdev = conf->mirrors[disk].rdev; in handle_read_error()
2342 bdevname(rdev->bdev, b)); in handle_read_error()
2343 bio->bi_iter.bi_sector = r1_bio->sector + rdev->data_offset; in handle_read_error()
2344 bio->bi_bdev = rdev->bdev; in handle_read_error()
2563 struct md_rdev *rdev; in sync_request() local
2567 rdev = rcu_dereference(conf->mirrors[i].rdev); in sync_request()
2568 if (rdev == NULL || in sync_request()
2569 test_bit(Faulty, &rdev->flags)) { in sync_request()
2572 } else if (!test_bit(In_sync, &rdev->flags)) { in sync_request()
2581 if (is_badblock(rdev, sector_nr, good_sectors, in sync_request()
2593 if (test_bit(WriteMostly, &rdev->flags)) { in sync_request()
2603 } else if (!test_bit(WriteErrorSeen, &rdev->flags) && in sync_request()
2618 atomic_inc(&rdev->nr_pending); in sync_request()
2619 bio->bi_iter.bi_sector = sector_nr + rdev->data_offset; in sync_request()
2620 bio->bi_bdev = rdev->bdev; in sync_request()
2636 struct md_rdev *rdev = conf->mirrors[i].rdev; in sync_request() local
2637 ok = rdev_set_badblocks(rdev, sector_nr, in sync_request()
2779 struct md_rdev *rdev; in setup_conf() local
2810 rdev_for_each(rdev, mddev) { in setup_conf()
2812 int disk_idx = rdev->raid_disk; in setup_conf()
2816 if (test_bit(Replacement, &rdev->flags)) in setup_conf()
2821 if (disk->rdev) in setup_conf()
2823 disk->rdev = rdev; in setup_conf()
2824 q = bdev_get_queue(rdev->bdev); in setup_conf()
2850 disk[conf->raid_disks].rdev) { in setup_conf()
2852 if (!disk->rdev) { in setup_conf()
2856 disk->rdev = in setup_conf()
2857 disk[conf->raid_disks].rdev; in setup_conf()
2858 disk[conf->raid_disks].rdev = NULL; in setup_conf()
2859 } else if (!test_bit(In_sync, &disk->rdev->flags)) in setup_conf()
2864 if (!disk->rdev || in setup_conf()
2865 !test_bit(In_sync, &disk->rdev->flags)) { in setup_conf()
2867 if (disk->rdev && in setup_conf()
2868 (disk->rdev->saved_raid_disk < 0)) in setup_conf()
2900 struct md_rdev *rdev; in run() local
2930 rdev_for_each(rdev, mddev) { in run()
2933 disk_stack_limits(mddev->gendisk, rdev->bdev, in run()
2934 rdev->data_offset << 9); in run()
2935 if (blk_queue_discard(bdev_get_queue(rdev->bdev))) in run()
2941 if (conf->mirrors[i].rdev == NULL || in run()
2942 !test_bit(In_sync, &conf->mirrors[i].rdev->flags) || in run()
2943 test_bit(Faulty, &conf->mirrors[i].rdev->flags)) in run()
3068 if (conf->mirrors[d].rdev) in raid1_reshape()
3101 struct md_rdev *rdev = conf->mirrors[d].rdev; in raid1_reshape() local
3102 if (rdev && rdev->raid_disk != d2) { in raid1_reshape()
3103 sysfs_unlink_rdev(mddev, rdev); in raid1_reshape()
3104 rdev->raid_disk = d2; in raid1_reshape()
3105 sysfs_unlink_rdev(mddev, rdev); in raid1_reshape()
3106 if (sysfs_link_rdev(mddev, rdev)) in raid1_reshape()
3109 mdname(mddev), rdev->raid_disk); in raid1_reshape()
3111 if (rdev) in raid1_reshape()
3112 newmirrors[d2++].rdev = rdev; in raid1_reshape()