Lines Matching refs:mddev

149 	if (test_bit(MD_RECOVERY_REQUESTED, &pi->mddev->recovery))  in r1buf_pool_alloc()
221 struct r1conf *conf = r1_bio->mddev->private; in free_r1bio()
229 struct r1conf *conf = r1_bio->mddev->private; in put_buf()
236 rdev_dec_pending(conf->mirrors[i].rdev, r1_bio->mddev); in put_buf()
247 struct mddev *mddev = r1_bio->mddev; in reschedule_retry() local
248 struct r1conf *conf = mddev->private; in reschedule_retry()
258 md_wakeup_thread(mddev->thread); in reschedule_retry()
269 struct r1conf *conf = r1_bio->mddev->private; in call_bio_endio()
303 struct r1conf *conf = r1_bio->mddev->private; in update_head_pos()
315 struct r1conf *conf = r1_bio->mddev->private; in find_bio_disk()
332 struct r1conf *conf = r1_bio->mddev->private; in raid1_end_read_request()
354 if (r1_bio->mddev->degraded == conf->raid_disks || in raid1_end_read_request()
355 (r1_bio->mddev->degraded == conf->raid_disks-1 && in raid1_end_read_request()
363 rdev_dec_pending(rdev, conf->mddev); in raid1_end_read_request()
370 mdname(conf->mddev), in raid1_end_read_request()
388 md_bitmap_endwrite(r1_bio->mddev->bitmap, r1_bio->sector, in close_write()
392 md_write_end(r1_bio->mddev); in close_write()
415 struct r1conf *conf = r1_bio->mddev->private; in raid1_end_write_request()
430 conf->mddev->recovery); in raid1_end_write_request()
436 md_error(r1_bio->mddev, rdev); in raid1_end_write_request()
511 rdev_dec_pending(rdev, conf->mddev); in raid1_end_write_request()
588 if ((conf->mddev->recovery_cp < this_sector + sectors) || in read_balance()
589 (mddev_is_clustered(conf->mddev) && in read_balance()
590 md_cluster_ops->area_resyncing(conf->mddev, READ, this_sector, in read_balance()
751 static int raid1_congested(struct mddev *mddev, int bits) in raid1_congested() argument
753 struct r1conf *conf = mddev->private; in raid1_congested()
784 md_bitmap_unplug(conf->mddev->bitmap); in flush_bio_list()
891 test_bit(MD_RECOVERY_INTR, &conf->mddev->recovery), in raise_barrier()
894 if (test_bit(MD_RECOVERY_INTR, &conf->mddev->recovery)) { in raise_barrier()
1070 raid1_log(conf->mddev, "wait freeze"); in freeze_array()
1095 behind_bio = bio_alloc_mddev(GFP_NOIO, vcnt, r1_bio->mddev); in alloc_behind_master_bio()
1145 struct mddev *mddev = plug->cb.data; in raid1_unplug() local
1146 struct r1conf *conf = mddev->private; in raid1_unplug()
1155 md_wakeup_thread(mddev->thread); in raid1_unplug()
1166 static void init_r1bio(struct r1bio *r1_bio, struct mddev *mddev, struct bio *bio) in init_r1bio() argument
1171 r1_bio->mddev = mddev; in init_r1bio()
1176 alloc_r1bio(struct mddev *mddev, struct bio *bio) in alloc_r1bio() argument
1178 struct r1conf *conf = mddev->private; in alloc_r1bio()
1184 init_r1bio(r1_bio, mddev, bio); in alloc_r1bio()
1188 static void raid1_read_request(struct mddev *mddev, struct bio *bio, in raid1_read_request() argument
1191 struct r1conf *conf = mddev->private; in raid1_read_request()
1194 struct bitmap *bitmap = mddev->bitmap; in raid1_read_request()
1228 r1_bio = alloc_r1bio(mddev, bio); in raid1_read_request()
1230 init_r1bio(r1_bio, mddev, bio); in raid1_read_request()
1243 mdname(mddev), in raid1_read_request()
1254 mdname(mddev), in raid1_read_request()
1264 raid1_log(mddev, "wait behind writes"); in raid1_read_request()
1281 read_bio = bio_clone_fast(bio, gfp, &mddev->bio_set); in raid1_read_request()
1295 if (mddev->gendisk) in raid1_read_request()
1297 disk_devt(mddev->gendisk), r1_bio->sector); in raid1_read_request()
1302 static void raid1_write_request(struct mddev *mddev, struct bio *bio, in raid1_write_request() argument
1305 struct r1conf *conf = mddev->private; in raid1_write_request()
1308 struct bitmap *bitmap = mddev->bitmap; in raid1_write_request()
1316 if (mddev_is_clustered(mddev) && in raid1_write_request()
1317 md_cluster_ops->area_resyncing(mddev, WRITE, in raid1_write_request()
1324 if (!md_cluster_ops->area_resyncing(mddev, WRITE, in raid1_write_request()
1340 r1_bio = alloc_r1bio(mddev, bio); in raid1_write_request()
1344 md_wakeup_thread(mddev->thread); in raid1_write_request()
1345 raid1_log(mddev, "wait queued"); in raid1_write_request()
1402 rdev_dec_pending(rdev, mddev); in raid1_write_request()
1431 rdev_dec_pending(conf->mirrors[j].rdev, mddev); in raid1_write_request()
1434 raid1_log(mddev, "wait rdev %d blocked", blocked_rdev->raid_disk); in raid1_write_request()
1435 md_wait_for_blocked_rdev(blocked_rdev, mddev); in raid1_write_request()
1468 < mddev->bitmap_info.max_write_behind) && in raid1_write_request()
1480 GFP_NOIO, &mddev->bio_set); in raid1_write_request()
1482 mbio = bio_clone_fast(bio, GFP_NOIO, &mddev->bio_set); in raid1_write_request()
1498 conf->raid_disks - mddev->degraded > 1) in raid1_write_request()
1504 if (mddev->gendisk) in raid1_write_request()
1506 mbio, disk_devt(mddev->gendisk), in raid1_write_request()
1511 cb = blk_check_plugged(raid1_unplug, mddev, sizeof(*plug)); in raid1_write_request()
1524 md_wakeup_thread(mddev->thread); in raid1_write_request()
1534 static bool raid1_make_request(struct mddev *mddev, struct bio *bio) in raid1_make_request() argument
1539 md_flush_request(mddev, bio); in raid1_make_request()
1554 raid1_read_request(mddev, bio, sectors, NULL); in raid1_make_request()
1556 if (!md_write_start(mddev,bio)) in raid1_make_request()
1558 raid1_write_request(mddev, bio, sectors); in raid1_make_request()
1563 static void raid1_status(struct seq_file *seq, struct mddev *mddev) in raid1_status() argument
1565 struct r1conf *conf = mddev->private; in raid1_status()
1569 conf->raid_disks - mddev->degraded); in raid1_status()
1580 static void raid1_error(struct mddev *mddev, struct md_rdev *rdev) in raid1_error() argument
1583 struct r1conf *conf = mddev->private; in raid1_error()
1594 && (conf->raid_disks - mddev->degraded) == 1) { in raid1_error()
1601 conf->recovery_disabled = mddev->recovery_disabled; in raid1_error()
1607 mddev->degraded++; in raid1_error()
1615 set_bit(MD_RECOVERY_INTR, &mddev->recovery); in raid1_error()
1616 set_mask_bits(&mddev->sb_flags, 0, in raid1_error()
1620 mdname(mddev), bdevname(rdev->bdev, b), in raid1_error()
1621 mdname(mddev), conf->raid_disks - mddev->degraded); in raid1_error()
1633 pr_debug(" --- wd:%d rd:%d\n", conf->raid_disks - conf->mddev->degraded, in print_conf()
1661 static int raid1_spare_active(struct mddev *mddev) in raid1_spare_active() argument
1664 struct r1conf *conf = mddev->private; in raid1_spare_active()
1706 mddev->degraded -= count; in raid1_spare_active()
1713 static int raid1_add_disk(struct mddev *mddev, struct md_rdev *rdev) in raid1_add_disk() argument
1715 struct r1conf *conf = mddev->private; in raid1_add_disk()
1722 if (mddev->recovery_disabled == conf->recovery_disabled) in raid1_add_disk()
1725 if (md_integrity_add_rdev(rdev, mddev)) in raid1_add_disk()
1744 if (mddev->gendisk) in raid1_add_disk()
1745 disk_stack_limits(mddev->gendisk, rdev->bdev, in raid1_add_disk()
1771 if (mddev->queue && blk_queue_discard(bdev_get_queue(rdev->bdev))) in raid1_add_disk()
1772 blk_queue_flag_set(QUEUE_FLAG_DISCARD, mddev->queue); in raid1_add_disk()
1777 static int raid1_remove_disk(struct mddev *mddev, struct md_rdev *rdev) in raid1_remove_disk() argument
1779 struct r1conf *conf = mddev->private; in raid1_remove_disk()
1798 mddev->recovery_disabled != conf->recovery_disabled && in raid1_remove_disk()
1799 mddev->degraded < conf->raid_disks) { in raid1_remove_disk()
1839 err = md_integrity_register(mddev); in raid1_remove_disk()
1869 struct mddev *mddev = r1_bio->mddev; in end_sync_write() local
1870 struct r1conf *conf = mddev->private; in end_sync_write()
1881 md_bitmap_end_sync(mddev->bitmap, s, &sync_blocks, 1); in end_sync_write()
1888 mddev->recovery); in end_sync_write()
1906 md_done_sync(mddev, s, uptodate); in end_sync_write()
1922 rdev->mddev->recovery); in r1_sync_page_io()
1926 md_error(rdev->mddev, rdev); in r1_sync_page_io()
1943 struct mddev *mddev = r1_bio->mddev; in fix_sync_read_error() local
1944 struct r1conf *conf = mddev->private; in fix_sync_read_error()
1956 md_error(mddev, rdev); in fix_sync_read_error()
2000 mdname(mddev), bio_devname(bio, b), in fix_sync_read_error()
2011 mddev->recovery_disabled; in fix_sync_read_error()
2012 set_bit(MD_RECOVERY_INTR, &mddev->recovery); in fix_sync_read_error()
2013 md_done_sync(mddev, r1_bio->sectors, 0); in fix_sync_read_error()
2037 rdev_dec_pending(rdev, mddev); in fix_sync_read_error()
2071 struct mddev *mddev = r1_bio->mddev; in process_checks() local
2072 struct r1conf *conf = mddev->private; in process_checks()
2103 rdev_dec_pending(conf->mirrors[primary].rdev, mddev); in process_checks()
2135 atomic64_add(r1_bio->sectors, &mddev->resync_mismatches); in process_checks()
2136 if (j < 0 || (test_bit(MD_RECOVERY_CHECK, &mddev->recovery) in process_checks()
2140 rdev_dec_pending(conf->mirrors[i].rdev, mddev); in process_checks()
2148 static void sync_request_write(struct mddev *mddev, struct r1bio *r1_bio) in sync_request_write() argument
2150 struct r1conf *conf = mddev->private; in sync_request_write()
2160 if (test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) in sync_request_write()
2172 !test_bit(MD_RECOVERY_SYNC, &mddev->recovery)))) in sync_request_write()
2196 md_done_sync(mddev, s, 1); in sync_request_write()
2212 struct mddev *mddev = conf->mddev; in fix_read_error() local
2240 rdev_dec_pending(rdev, mddev); in fix_read_error()
2254 md_error(mddev, rdev); in fix_read_error()
2271 rdev_dec_pending(rdev, mddev); in fix_read_error()
2291 mdname(mddev), s, in fix_read_error()
2296 rdev_dec_pending(rdev, mddev); in fix_read_error()
2307 struct mddev *mddev = r1_bio->mddev; in narrow_write_error() local
2308 struct r1conf *conf = mddev->private; in narrow_write_error()
2347 &mddev->bio_set); in narrow_write_error()
2350 &mddev->bio_set); in narrow_write_error()
2391 md_error(conf->mddev, rdev); in handle_sync_write_finished()
2395 md_done_sync(conf->mddev, s, 1); in handle_sync_write_finished()
2409 rdev_dec_pending(rdev, conf->mddev); in handle_write_finished()
2417 md_error(conf->mddev, in handle_write_finished()
2423 conf->mddev); in handle_write_finished()
2436 md_wakeup_thread(conf->mddev->thread); in handle_write_finished()
2446 struct mddev *mddev = conf->mddev; in handle_read_error() local
2465 if (mddev->ro == 0 in handle_read_error()
2471 } else if (mddev->ro == 0 && test_bit(FailFast, &rdev->flags)) { in handle_read_error()
2472 md_error(mddev, rdev); in handle_read_error()
2477 rdev_dec_pending(rdev, conf->mddev); in handle_read_error()
2483 raid1_read_request(mddev, bio, r1_bio->sectors, r1_bio); in handle_read_error()
2488 struct mddev *mddev = thread->mddev; in raid1d() local
2491 struct r1conf *conf = mddev->private; in raid1d()
2496 md_check_recovery(mddev); in raid1d()
2499 !test_bit(MD_SB_CHANGE_PENDING, &mddev->sb_flags)) { in raid1d()
2502 if (!test_bit(MD_SB_CHANGE_PENDING, &mddev->sb_flags)) in raid1d()
2511 if (mddev->degraded) in raid1d()
2535 mddev = r1_bio->mddev; in raid1d()
2536 conf = mddev->private; in raid1d()
2542 sync_request_write(mddev, r1_bio); in raid1d()
2552 if (mddev->sb_flags & ~(1<<MD_SB_CHANGE_PENDING)) in raid1d()
2553 md_check_recovery(mddev); in raid1d()
2596 static sector_t raid1_sync_request(struct mddev *mddev, sector_t sector_nr, in raid1_sync_request() argument
2599 struct r1conf *conf = mddev->private; in raid1_sync_request()
2618 max_sector = mddev->dev_sectors; in raid1_sync_request()
2625 if (mddev->curr_resync < max_sector) /* aborted */ in raid1_sync_request()
2626 md_bitmap_end_sync(mddev->bitmap, mddev->curr_resync, in raid1_sync_request()
2631 md_bitmap_close_sync(mddev->bitmap); in raid1_sync_request()
2634 if (mddev_is_clustered(mddev)) { in raid1_sync_request()
2641 if (mddev->bitmap == NULL && in raid1_sync_request()
2642 mddev->recovery_cp == MaxSector && in raid1_sync_request()
2643 !test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery) && in raid1_sync_request()
2651 if (!md_bitmap_start_sync(mddev->bitmap, sector_nr, &sync_blocks, 1) && in raid1_sync_request()
2652 !conf->fullsync && !test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) { in raid1_sync_request()
2669 md_bitmap_cond_end_sync(mddev->bitmap, sector_nr, in raid1_sync_request()
2670 mddev_is_clustered(mddev) && (sector_nr + 2 * RESYNC_SECTORS > conf->cluster_sync_high)); in raid1_sync_request()
2688 r1_bio->mddev = mddev; in raid1_sync_request()
2736 test_bit(MD_RECOVERY_SYNC, &mddev->recovery) && in raid1_sync_request()
2737 !test_bit(MD_RECOVERY_CHECK, &mddev->recovery)) { in raid1_sync_request()
2774 set_bit(MD_SB_CHANGE_DEVS, &mddev->sb_flags); in raid1_sync_request()
2784 conf->recovery_disabled = mddev->recovery_disabled; in raid1_sync_request()
2785 set_bit(MD_RECOVERY_INTR, &mddev->recovery); in raid1_sync_request()
2797 if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery) && read_targets > 0) in raid1_sync_request()
2814 if (max_sector > mddev->resync_max) in raid1_sync_request()
2815 max_sector = mddev->resync_max; /* Don't do IO beyond here */ in raid1_sync_request()
2828 if (!md_bitmap_start_sync(mddev->bitmap, sector_nr, in raid1_sync_request()
2831 !test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) in raid1_sync_request()
2859 if (mddev_is_clustered(mddev) && in raid1_sync_request()
2861 conf->cluster_sync_low = mddev->curr_resync_completed; in raid1_sync_request()
2864 md_cluster_ops->resync_info_update(mddev, in raid1_sync_request()
2872 if (test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) { in raid1_sync_request()
2896 static sector_t raid1_size(struct mddev *mddev, sector_t sectors, int raid_disks) in raid1_size() argument
2901 return mddev->dev_sectors; in raid1_size()
2904 static struct r1conf *setup_conf(struct mddev *mddev) in setup_conf() argument
2937 mddev->raid_disks, 2), in setup_conf()
2949 conf->poolinfo->raid_disks = mddev->raid_disks * 2; in setup_conf()
2959 conf->poolinfo->mddev = mddev; in setup_conf()
2963 rdev_for_each(rdev, mddev) { in setup_conf()
2965 if (disk_idx >= mddev->raid_disks in setup_conf()
2969 disk = conf->mirrors + mddev->raid_disks + disk_idx; in setup_conf()
2979 conf->raid_disks = mddev->raid_disks; in setup_conf()
2980 conf->mddev = mddev; in setup_conf()
2989 conf->recovery_disabled = mddev->recovery_disabled - 1; in setup_conf()
3021 conf->thread = md_register_thread(raid1d, mddev, "raid1"); in setup_conf()
3043 static void raid1_free(struct mddev *mddev, void *priv);
3044 static int raid1_run(struct mddev *mddev) in raid1_run() argument
3052 if (mddev->level != 1) { in raid1_run()
3054 mdname(mddev), mddev->level); in raid1_run()
3057 if (mddev->reshape_position != MaxSector) { in raid1_run()
3059 mdname(mddev)); in raid1_run()
3062 if (mddev_init_writes_pending(mddev) < 0) in raid1_run()
3069 if (mddev->private == NULL) in raid1_run()
3070 conf = setup_conf(mddev); in raid1_run()
3072 conf = mddev->private; in raid1_run()
3077 if (mddev->queue) { in raid1_run()
3078 blk_queue_max_write_same_sectors(mddev->queue, 0); in raid1_run()
3079 blk_queue_max_write_zeroes_sectors(mddev->queue, 0); in raid1_run()
3082 rdev_for_each(rdev, mddev) { in raid1_run()
3083 if (!mddev->gendisk) in raid1_run()
3085 disk_stack_limits(mddev->gendisk, rdev->bdev, in raid1_run()
3091 mddev->degraded = 0; in raid1_run()
3096 mddev->degraded++; in raid1_run()
3098 if (conf->raid_disks - mddev->degraded == 1) in raid1_run()
3099 mddev->recovery_cp = MaxSector; in raid1_run()
3101 if (mddev->recovery_cp != MaxSector) in raid1_run()
3103 mdname(mddev)); in raid1_run()
3105 mdname(mddev), mddev->raid_disks - mddev->degraded, in raid1_run()
3106 mddev->raid_disks); in raid1_run()
3111 mddev->thread = conf->thread; in raid1_run()
3113 mddev->private = conf; in raid1_run()
3114 set_bit(MD_FAILFAST_SUPPORTED, &mddev->flags); in raid1_run()
3116 md_set_array_sectors(mddev, raid1_size(mddev, 0, 0)); in raid1_run()
3118 if (mddev->queue) { in raid1_run()
3121 mddev->queue); in raid1_run()
3124 mddev->queue); in raid1_run()
3127 ret = md_integrity_register(mddev); in raid1_run()
3129 md_unregister_thread(&mddev->thread); in raid1_run()
3130 raid1_free(mddev, conf); in raid1_run()
3135 static void raid1_free(struct mddev *mddev, void *priv) in raid1_free() argument
3151 static int raid1_resize(struct mddev *mddev, sector_t sectors) in raid1_resize() argument
3160 sector_t newsize = raid1_size(mddev, sectors, 0); in raid1_resize()
3161 if (mddev->external_size && in raid1_resize()
3162 mddev->array_sectors > newsize) in raid1_resize()
3164 if (mddev->bitmap) { in raid1_resize()
3165 int ret = md_bitmap_resize(mddev->bitmap, newsize, 0, 0); in raid1_resize()
3169 md_set_array_sectors(mddev, newsize); in raid1_resize()
3170 if (sectors > mddev->dev_sectors && in raid1_resize()
3171 mddev->recovery_cp > mddev->dev_sectors) { in raid1_resize()
3172 mddev->recovery_cp = mddev->dev_sectors; in raid1_resize()
3173 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in raid1_resize()
3175 mddev->dev_sectors = sectors; in raid1_resize()
3176 mddev->resync_max_sectors = sectors; in raid1_resize()
3180 static int raid1_reshape(struct mddev *mddev) in raid1_reshape() argument
3196 struct r1conf *conf = mddev->private; in raid1_reshape()
3206 if (mddev->chunk_sectors != mddev->new_chunk_sectors || in raid1_reshape()
3207 mddev->layout != mddev->new_layout || in raid1_reshape()
3208 mddev->level != mddev->new_level) { in raid1_reshape()
3209 mddev->new_chunk_sectors = mddev->chunk_sectors; in raid1_reshape()
3210 mddev->new_layout = mddev->layout; in raid1_reshape()
3211 mddev->new_level = mddev->level; in raid1_reshape()
3215 if (!mddev_is_clustered(mddev)) in raid1_reshape()
3216 md_allow_write(mddev); in raid1_reshape()
3218 raid_disks = mddev->raid_disks + mddev->delta_disks; in raid1_reshape()
3232 newpoolinfo->mddev = mddev; in raid1_reshape()
3259 sysfs_unlink_rdev(mddev, rdev); in raid1_reshape()
3261 sysfs_unlink_rdev(mddev, rdev); in raid1_reshape()
3262 if (sysfs_link_rdev(mddev, rdev)) in raid1_reshape()
3264 mdname(mddev), rdev->raid_disk); in raid1_reshape()
3275 mddev->degraded += (raid_disks - conf->raid_disks); in raid1_reshape()
3277 conf->raid_disks = mddev->raid_disks = raid_disks; in raid1_reshape()
3278 mddev->delta_disks = 0; in raid1_reshape()
3282 set_bit(MD_RECOVERY_RECOVER, &mddev->recovery); in raid1_reshape()
3283 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in raid1_reshape()
3284 md_wakeup_thread(mddev->thread); in raid1_reshape()
3290 static void raid1_quiesce(struct mddev *mddev, int quiesce) in raid1_quiesce() argument
3292 struct r1conf *conf = mddev->private; in raid1_quiesce()
3300 static void *raid1_takeover(struct mddev *mddev) in raid1_takeover() argument
3305 if (mddev->level == 5 && mddev->raid_disks == 2) { in raid1_takeover()
3307 mddev->new_level = 1; in raid1_takeover()
3308 mddev->new_layout = 0; in raid1_takeover()
3309 mddev->new_chunk_sectors = 0; in raid1_takeover()
3310 conf = setup_conf(mddev); in raid1_takeover()
3314 mddev_clear_unsupported_flags(mddev, in raid1_takeover()