Lines Matching refs:mddev
124 if (test_bit(MD_RECOVERY_REQUESTED, &pi->mddev->recovery)) in r1buf_pool_alloc()
136 if (!test_bit(MD_RECOVERY_REQUESTED, &pi->mddev->recovery)) { in r1buf_pool_alloc()
195 struct r1conf *conf = r1_bio->mddev->private; in free_r1bio()
203 struct r1conf *conf = r1_bio->mddev->private; in put_buf()
209 rdev_dec_pending(conf->mirrors[i].rdev, r1_bio->mddev); in put_buf()
220 struct mddev *mddev = r1_bio->mddev; in reschedule_retry() local
221 struct r1conf *conf = mddev->private; in reschedule_retry()
229 md_wakeup_thread(mddev->thread); in reschedule_retry()
241 struct r1conf *conf = r1_bio->mddev->private; in call_bio_endio()
293 struct r1conf *conf = r1_bio->mddev->private; in update_head_pos()
305 struct r1conf *conf = r1_bio->mddev->private; in find_bio_disk()
323 struct r1conf *conf = r1_bio->mddev->private; in raid1_end_read_request()
340 if (r1_bio->mddev->degraded == conf->raid_disks || in raid1_end_read_request()
341 (r1_bio->mddev->degraded == conf->raid_disks-1 && in raid1_end_read_request()
349 rdev_dec_pending(conf->mirrors[mirror].rdev, conf->mddev); in raid1_end_read_request()
358 mdname(conf->mddev), in raid1_end_read_request()
380 bitmap_endwrite(r1_bio->mddev->bitmap, r1_bio->sector, in close_write()
384 md_write_end(r1_bio->mddev); in close_write()
407 struct r1conf *conf = r1_bio->mddev->private; in raid1_end_write_request()
421 conf->mddev->recovery); in raid1_end_write_request()
487 conf->mddev); in raid1_end_write_request()
544 if ((conf->mddev->recovery_cp < this_sector + sectors) || in read_balance()
545 (mddev_is_clustered(conf->mddev) && in read_balance()
546 md_cluster_ops->area_resyncing(conf->mddev, READ, this_sector, in read_balance()
696 rdev_dec_pending(rdev, conf->mddev); in read_balance()
712 static int raid1_congested(struct mddev *mddev, int bits) in raid1_congested() argument
714 struct r1conf *conf = mddev->private; in raid1_congested()
756 bitmap_unplug(conf->mddev->bitmap); in flush_pending_writes()
846 if ((conf->mddev->curr_resync_completed in need_to_wait_for_sync()
1013 struct mddev *mddev = plug->cb.data; in raid1_unplug() local
1014 struct r1conf *conf = mddev->private; in raid1_unplug()
1023 md_wakeup_thread(mddev->thread); in raid1_unplug()
1030 bitmap_unplug(mddev->bitmap); in raid1_unplug()
1047 static void make_request(struct mddev *mddev, struct bio * bio) in make_request() argument
1049 struct r1conf *conf = mddev->private; in make_request()
1076 md_write_start(mddev, bio); /* wait on superblock update early */ in make_request()
1079 ((bio_end_sector(bio) > mddev->suspend_lo && in make_request()
1080 bio->bi_iter.bi_sector < mddev->suspend_hi) || in make_request()
1081 (mddev_is_clustered(mddev) && in make_request()
1082 md_cluster_ops->area_resyncing(mddev, WRITE, in make_request()
1093 if (bio_end_sector(bio) <= mddev->suspend_lo || in make_request()
1094 bio->bi_iter.bi_sector >= mddev->suspend_hi || in make_request()
1095 (mddev_is_clustered(mddev) && in make_request()
1096 !md_cluster_ops->area_resyncing(mddev, WRITE, in make_request()
1106 bitmap = mddev->bitmap; in make_request()
1118 r1_bio->mddev = mddev; in make_request()
1159 read_bio = bio_clone_mddev(bio, GFP_NOIO, mddev); in make_request()
1198 r1_bio->mddev = mddev; in make_request()
1211 md_wakeup_thread(mddev->thread); in make_request()
1270 rdev_dec_pending(rdev, mddev); in make_request()
1300 rdev_dec_pending(conf->mirrors[j].rdev, mddev); in make_request()
1303 md_wait_for_blocked_rdev(blocked_rdev, mddev); in make_request()
1340 mbio = bio_clone_mddev(bio, GFP_NOIO, mddev); in make_request()
1350 < mddev->bitmap_info.max_write_behind) && in make_request()
1385 cb = blk_check_plugged(raid1_unplug, mddev, sizeof(*plug)); in make_request()
1400 md_wakeup_thread(mddev->thread); in make_request()
1414 r1_bio->mddev = mddev; in make_request()
1425 static void status(struct seq_file *seq, struct mddev *mddev) in status() argument
1427 struct r1conf *conf = mddev->private; in status()
1431 conf->raid_disks - mddev->degraded); in status()
1442 static void error(struct mddev *mddev, struct md_rdev *rdev) in error() argument
1445 struct r1conf *conf = mddev->private; in error()
1455 && (conf->raid_disks - mddev->degraded) == 1) { in error()
1462 conf->recovery_disabled = mddev->recovery_disabled; in error()
1468 mddev->degraded++; in error()
1476 set_bit(MD_RECOVERY_INTR, &mddev->recovery); in error()
1477 set_bit(MD_CHANGE_DEVS, &mddev->flags); in error()
1478 set_bit(MD_CHANGE_PENDING, &mddev->flags); in error()
1482 mdname(mddev), bdevname(rdev->bdev, b), in error()
1483 mdname(mddev), conf->raid_disks - mddev->degraded); in error()
1495 printk(KERN_DEBUG " --- wd:%d rd:%d\n", conf->raid_disks - conf->mddev->degraded, in print_conf()
1528 static int raid1_spare_active(struct mddev *mddev) in raid1_spare_active() argument
1531 struct r1conf *conf = mddev->private; in raid1_spare_active()
1573 mddev->degraded -= count; in raid1_spare_active()
1580 static int raid1_add_disk(struct mddev *mddev, struct md_rdev *rdev) in raid1_add_disk() argument
1582 struct r1conf *conf = mddev->private; in raid1_add_disk()
1589 if (mddev->recovery_disabled == conf->recovery_disabled) in raid1_add_disk()
1592 if (md_integrity_add_rdev(rdev, mddev)) in raid1_add_disk()
1611 if (mddev->gendisk) in raid1_add_disk()
1612 disk_stack_limits(mddev->gendisk, rdev->bdev, in raid1_add_disk()
1638 if (mddev->queue && blk_queue_discard(bdev_get_queue(rdev->bdev))) in raid1_add_disk()
1639 queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, mddev->queue); in raid1_add_disk()
1644 static int raid1_remove_disk(struct mddev *mddev, struct md_rdev *rdev) in raid1_remove_disk() argument
1646 struct r1conf *conf = mddev->private; in raid1_remove_disk()
1665 mddev->recovery_disabled != conf->recovery_disabled && in raid1_remove_disk()
1666 mddev->degraded < conf->raid_disks) { in raid1_remove_disk()
1692 err = md_integrity_register(mddev); in raid1_remove_disk()
1722 struct mddev *mddev = r1_bio->mddev; in end_sync_write() local
1723 struct r1conf *conf = mddev->private; in end_sync_write()
1736 bitmap_end_sync(mddev->bitmap, s, in end_sync_write()
1746 mddev->recovery); in end_sync_write()
1766 md_done_sync(mddev, s, uptodate); in end_sync_write()
1782 rdev->mddev->recovery); in r1_sync_page_io()
1786 md_error(rdev->mddev, rdev); in r1_sync_page_io()
1803 struct mddev *mddev = r1_bio->mddev; in fix_sync_read_error() local
1804 struct r1conf *conf = mddev->private; in fix_sync_read_error()
1848 mdname(mddev), in fix_sync_read_error()
1860 mddev->recovery_disabled; in fix_sync_read_error()
1861 set_bit(MD_RECOVERY_INTR, &mddev->recovery); in fix_sync_read_error()
1862 md_done_sync(mddev, r1_bio->sectors, 0); in fix_sync_read_error()
1886 rdev_dec_pending(rdev, mddev); in fix_sync_read_error()
1920 struct mddev *mddev = r1_bio->mddev; in process_checks() local
1921 struct r1conf *conf = mddev->private; in process_checks()
1963 rdev_dec_pending(conf->mirrors[primary].rdev, mddev); in process_checks()
1991 atomic64_add(r1_bio->sectors, &mddev->resync_mismatches); in process_checks()
1992 if (j < 0 || (test_bit(MD_RECOVERY_CHECK, &mddev->recovery) in process_checks()
1996 rdev_dec_pending(conf->mirrors[i].rdev, mddev); in process_checks()
2004 static void sync_request_write(struct mddev *mddev, struct r1bio *r1_bio) in sync_request_write() argument
2006 struct r1conf *conf = mddev->private; in sync_request_write()
2018 if (test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) in sync_request_write()
2030 !test_bit(MD_RECOVERY_SYNC, &mddev->recovery)))) in sync_request_write()
2049 md_done_sync(mddev, s, 1); in sync_request_write()
2065 struct mddev *mddev = conf->mddev; in fix_read_error() local
2106 md_error(mddev, rdev); in fix_read_error()
2136 mdname(mddev), s, in fix_read_error()
2150 struct mddev *mddev = r1_bio->mddev; in narrow_write_error() local
2151 struct r1conf *conf = mddev->private; in narrow_write_error()
2196 wbio = bio_alloc_mddev(GFP_NOIO, vcnt, mddev); in narrow_write_error()
2201 wbio = bio_clone_mddev(r1_bio->master_bio, GFP_NOIO, mddev); in narrow_write_error()
2241 md_error(conf->mddev, rdev); in handle_sync_write_finished()
2245 md_done_sync(conf->mddev, s, 1); in handle_sync_write_finished()
2258 rdev_dec_pending(rdev, conf->mddev); in handle_write_finished()
2266 md_error(conf->mddev, in handle_write_finished()
2272 conf->mddev); in handle_write_finished()
2279 md_wakeup_thread(conf->mddev->thread); in handle_write_finished()
2291 struct mddev *mddev = conf->mddev; in handle_read_error() local
2305 if (mddev->ro == 0) { in handle_read_error()
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()
2321 mdname(mddev), b, (unsigned long long)r1_bio->sector); in handle_read_error()
2328 mddev->ro ? IO_BLOCKED : NULL; in handle_read_error()
2332 bio = bio_clone_mddev(r1_bio->master_bio, GFP_NOIO, mddev); in handle_read_error()
2340 mdname(mddev), in handle_read_error()
2369 r1_bio->mddev = mddev; in handle_read_error()
2381 struct mddev *mddev = thread->mddev; in raid1d() local
2384 struct r1conf *conf = mddev->private; in raid1d()
2388 md_check_recovery(mddev); in raid1d()
2391 !test_bit(MD_CHANGE_PENDING, &mddev->flags)) { in raid1d()
2394 if (!test_bit(MD_CHANGE_PENDING, &mddev->flags)) { in raid1d()
2405 if (mddev->degraded) in raid1d()
2428 mddev = r1_bio->mddev; in raid1d()
2429 conf = mddev->private; in raid1d()
2435 sync_request_write(mddev, r1_bio); in raid1d()
2448 if (mddev->flags & ~(1<<MD_CHANGE_PENDING)) in raid1d()
2449 md_check_recovery(mddev); in raid1d()
2478 static sector_t sync_request(struct mddev *mddev, sector_t sector_nr, int *skipped) in sync_request() argument
2480 struct r1conf *conf = mddev->private; in sync_request()
2497 max_sector = mddev->dev_sectors; in sync_request()
2504 if (mddev->curr_resync < max_sector) /* aborted */ in sync_request()
2505 bitmap_end_sync(mddev->bitmap, mddev->curr_resync, in sync_request()
2510 bitmap_close_sync(mddev->bitmap); in sync_request()
2513 if (mddev_is_clustered(mddev)) { in sync_request()
2520 if (mddev->bitmap == NULL && in sync_request()
2521 mddev->recovery_cp == MaxSector && in sync_request()
2522 !test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery) && in sync_request()
2530 if (!bitmap_start_sync(mddev->bitmap, sector_nr, &sync_blocks, 1) && in sync_request()
2531 !conf->fullsync && !test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) { in sync_request()
2541 bitmap_cond_end_sync(mddev->bitmap, sector_nr, in sync_request()
2542 mddev_is_clustered(mddev) && (sector_nr + 2 * RESYNC_SECTORS > conf->cluster_sync_high)); in sync_request()
2557 r1_bio->mddev = mddev; in sync_request()
2604 test_bit(MD_RECOVERY_SYNC, &mddev->recovery) && in sync_request()
2605 !test_bit(MD_RECOVERY_CHECK, &mddev->recovery)) { in sync_request()
2641 set_bit(MD_CHANGE_DEVS, &mddev->flags); in sync_request()
2651 conf->recovery_disabled = mddev->recovery_disabled; in sync_request()
2652 set_bit(MD_RECOVERY_INTR, &mddev->recovery); in sync_request()
2664 if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery) && read_targets > 0) in sync_request()
2681 if (max_sector > mddev->resync_max) in sync_request()
2682 max_sector = mddev->resync_max; /* Don't do IO beyond here */ in sync_request()
2695 if (!bitmap_start_sync(mddev->bitmap, sector_nr, in sync_request()
2698 !test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) in sync_request()
2733 if (mddev_is_clustered(mddev) && in sync_request()
2735 conf->cluster_sync_low = mddev->curr_resync_completed; in sync_request()
2738 md_cluster_ops->resync_info_update(mddev, in sync_request()
2746 if (test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) { in sync_request()
2766 static sector_t raid1_size(struct mddev *mddev, sector_t sectors, int raid_disks) in raid1_size() argument
2771 return mddev->dev_sectors; in raid1_size()
2774 static struct r1conf *setup_conf(struct mddev *mddev) in setup_conf() argument
2787 * mddev->raid_disks * 2, in setup_conf()
2799 conf->poolinfo->raid_disks = mddev->raid_disks * 2; in setup_conf()
2806 conf->poolinfo->mddev = mddev; in setup_conf()
2810 rdev_for_each(rdev, mddev) { in setup_conf()
2813 if (disk_idx >= mddev->raid_disks in setup_conf()
2817 disk = conf->mirrors + mddev->raid_disks + disk_idx; in setup_conf()
2829 conf->raid_disks = mddev->raid_disks; in setup_conf()
2830 conf->mddev = mddev; in setup_conf()
2839 conf->recovery_disabled = mddev->recovery_disabled - 1; in setup_conf()
2874 conf->thread = md_register_thread(raid1d, mddev, "raid1"); in setup_conf()
2878 mdname(mddev)); in setup_conf()
2895 static void raid1_free(struct mddev *mddev, void *priv);
2896 static int run(struct mddev *mddev) in run() argument
2904 if (mddev->level != 1) { in run()
2906 mdname(mddev), mddev->level); in run()
2909 if (mddev->reshape_position != MaxSector) { in run()
2911 mdname(mddev)); in run()
2919 if (mddev->private == NULL) in run()
2920 conf = setup_conf(mddev); in run()
2922 conf = mddev->private; in run()
2927 if (mddev->queue) in run()
2928 blk_queue_max_write_same_sectors(mddev->queue, 0); in run()
2930 rdev_for_each(rdev, mddev) { in run()
2931 if (!mddev->gendisk) in run()
2933 disk_stack_limits(mddev->gendisk, rdev->bdev, in run()
2939 mddev->degraded = 0; in run()
2944 mddev->degraded++; in run()
2946 if (conf->raid_disks - mddev->degraded == 1) in run()
2947 mddev->recovery_cp = MaxSector; in run()
2949 if (mddev->recovery_cp != MaxSector) in run()
2952 mdname(mddev)); in run()
2955 mdname(mddev), mddev->raid_disks - mddev->degraded, in run()
2956 mddev->raid_disks); in run()
2961 mddev->thread = conf->thread; in run()
2963 mddev->private = conf; in run()
2965 md_set_array_sectors(mddev, raid1_size(mddev, 0, 0)); in run()
2967 if (mddev->queue) { in run()
2970 mddev->queue); in run()
2973 mddev->queue); in run()
2976 ret = md_integrity_register(mddev); in run()
2978 md_unregister_thread(&mddev->thread); in run()
2979 raid1_free(mddev, conf); in run()
2984 static void raid1_free(struct mddev *mddev, void *priv) in raid1_free() argument
2995 static int raid1_resize(struct mddev *mddev, sector_t sectors) in raid1_resize() argument
3004 sector_t newsize = raid1_size(mddev, sectors, 0); in raid1_resize()
3005 if (mddev->external_size && in raid1_resize()
3006 mddev->array_sectors > newsize) in raid1_resize()
3008 if (mddev->bitmap) { in raid1_resize()
3009 int ret = bitmap_resize(mddev->bitmap, newsize, 0, 0); in raid1_resize()
3013 md_set_array_sectors(mddev, newsize); in raid1_resize()
3014 set_capacity(mddev->gendisk, mddev->array_sectors); in raid1_resize()
3015 revalidate_disk(mddev->gendisk); in raid1_resize()
3016 if (sectors > mddev->dev_sectors && in raid1_resize()
3017 mddev->recovery_cp > mddev->dev_sectors) { in raid1_resize()
3018 mddev->recovery_cp = mddev->dev_sectors; in raid1_resize()
3019 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in raid1_resize()
3021 mddev->dev_sectors = sectors; in raid1_resize()
3022 mddev->resync_max_sectors = sectors; in raid1_resize()
3026 static int raid1_reshape(struct mddev *mddev) in raid1_reshape() argument
3042 struct r1conf *conf = mddev->private; in raid1_reshape()
3048 if (mddev->chunk_sectors != mddev->new_chunk_sectors || in raid1_reshape()
3049 mddev->layout != mddev->new_layout || in raid1_reshape()
3050 mddev->level != mddev->new_level) { in raid1_reshape()
3051 mddev->new_chunk_sectors = mddev->chunk_sectors; in raid1_reshape()
3052 mddev->new_layout = mddev->layout; in raid1_reshape()
3053 mddev->new_level = mddev->level; in raid1_reshape()
3057 if (!mddev_is_clustered(mddev)) { in raid1_reshape()
3058 err = md_allow_write(mddev); in raid1_reshape()
3063 raid_disks = mddev->raid_disks + mddev->delta_disks; in raid1_reshape()
3077 newpoolinfo->mddev = mddev; in raid1_reshape()
3103 sysfs_unlink_rdev(mddev, rdev); 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()
3120 mddev->degraded += (raid_disks - conf->raid_disks); in raid1_reshape()
3122 conf->raid_disks = mddev->raid_disks = raid_disks; in raid1_reshape()
3123 mddev->delta_disks = 0; in raid1_reshape()
3127 set_bit(MD_RECOVERY_RECOVER, &mddev->recovery); in raid1_reshape()
3128 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in raid1_reshape()
3129 md_wakeup_thread(mddev->thread); in raid1_reshape()
3135 static void raid1_quiesce(struct mddev *mddev, int state) in raid1_quiesce() argument
3137 struct r1conf *conf = mddev->private; in raid1_quiesce()
3152 static void *raid1_takeover(struct mddev *mddev) in raid1_takeover() argument
3157 if (mddev->level == 5 && mddev->raid_disks == 2) { in raid1_takeover()
3159 mddev->new_level = 1; in raid1_takeover()
3160 mddev->new_layout = 0; in raid1_takeover()
3161 mddev->new_chunk_sectors = 0; in raid1_takeover()
3162 conf = setup_conf(mddev); in raid1_takeover()