• Home
  • Raw
  • Download

Lines Matching refs:mddev

52 static void unplug_slaves(mddev_t *mddev);
66 unplug_slaves(pi->mddev); in r1bio_pool_alloc()
92 unplug_slaves(pi->mddev); in r1buf_pool_alloc()
111 if (test_bit(MD_RECOVERY_REQUESTED, &pi->mddev->recovery)) in r1buf_pool_alloc()
126 if (!test_bit(MD_RECOVERY_REQUESTED, &pi->mddev->recovery)) { in r1buf_pool_alloc()
182 conf_t *conf = mddev_to_conf(r1_bio->mddev); in free_r1bio()
196 conf_t *conf = mddev_to_conf(r1_bio->mddev); in put_buf()
202 rdev_dec_pending(conf->mirrors[i].rdev, r1_bio->mddev); in put_buf()
213 mddev_t *mddev = r1_bio->mddev; in reschedule_retry() local
214 conf_t *conf = mddev_to_conf(mddev); in reschedule_retry()
222 md_wakeup_thread(mddev->thread); in reschedule_retry()
253 conf_t *conf = mddev_to_conf(r1_bio->mddev); in update_head_pos()
264 conf_t *conf = mddev_to_conf(r1_bio->mddev); in raid1_end_read_request()
281 if (r1_bio->mddev->degraded == conf->raid_disks || in raid1_end_read_request()
282 (r1_bio->mddev->degraded == conf->raid_disks-1 && in raid1_end_read_request()
301 rdev_dec_pending(conf->mirrors[mirror].rdev, conf->mddev); in raid1_end_read_request()
309 conf_t *conf = mddev_to_conf(r1_bio->mddev); in raid1_end_write_request()
320 r1_bio->mddev->barriers_work = 0; in raid1_end_write_request()
329 md_error(r1_bio->mddev, conf->mirrors[mirror].rdev); in raid1_end_write_request()
368 rdev_dec_pending(conf->mirrors[mirror].rdev, conf->mddev); in raid1_end_write_request()
387 bitmap_endwrite(r1_bio->mddev->bitmap, r1_bio->sector, in raid1_end_write_request()
391 md_write_end(r1_bio->mddev); in raid1_end_write_request()
431 if (conf->mddev->recovery_cp < MaxSector && in read_balance()
528 rdev_dec_pending(rdev, conf->mddev); in read_balance()
539 static void unplug_slaves(mddev_t *mddev) in unplug_slaves() argument
541 conf_t *conf = mddev_to_conf(mddev); in unplug_slaves()
545 for (i=0; i<mddev->raid_disks; i++) { in unplug_slaves()
555 rdev_dec_pending(rdev, mddev); in unplug_slaves()
564 mddev_t *mddev = q->queuedata; in raid1_unplug() local
566 unplug_slaves(mddev); in raid1_unplug()
567 md_wakeup_thread(mddev->thread); in raid1_unplug()
572 mddev_t *mddev = data; in raid1_congested() local
573 conf_t *conf = mddev_to_conf(mddev); in raid1_congested()
577 for (i = 0; i < mddev->raid_disks; i++) { in raid1_congested()
609 blk_remove_plug(conf->mddev->queue); in flush_pending_writes()
613 bitmap_unplug(conf->mddev->bitmap); in flush_pending_writes()
657 raid1_unplug(conf->mddev->queue)); in raise_barrier()
666 raid1_unplug(conf->mddev->queue)); in raise_barrier()
687 raid1_unplug(conf->mddev->queue)); in wait_barrier()
724 raid1_unplug(conf->mddev->queue); })); in freeze_array()
771 mddev_t *mddev = q->queuedata; in make_request() local
772 conf_t *conf = mddev_to_conf(mddev); in make_request()
795 md_write_start(mddev, bio); /* wait on superblock update early */ in make_request()
797 if (unlikely(!mddev->barriers_work && bio_barrier(bio))) { in make_request()
799 md_write_end(mddev); in make_request()
806 bitmap = mddev->bitmap; in make_request()
809 part_stat_inc(cpu, &mddev->gendisk->part0, ios[rw]); in make_request()
810 part_stat_add(cpu, &mddev->gendisk->part0, sectors[rw], in make_request()
824 r1_bio->mddev = mddev; in make_request()
884 rdev_dec_pending(rdev, mddev); in make_request()
900 rdev_dec_pending(conf->mirrors[j].rdev, mddev); in make_request()
903 md_wait_for_blocked_rdev(blocked_rdev, mddev); in make_request()
973 blk_plug_device(mddev->queue); in make_request()
980 md_wakeup_thread(mddev->thread); in make_request()
989 static void status(struct seq_file *seq, mddev_t *mddev) in status() argument
991 conf_t *conf = mddev_to_conf(mddev); in status()
995 conf->raid_disks - mddev->degraded); in status()
1007 static void error(mddev_t *mddev, mdk_rdev_t *rdev) in error() argument
1010 conf_t *conf = mddev_to_conf(mddev); in error()
1019 && (conf->raid_disks - mddev->degraded) == 1) { in error()
1026 mddev->recovery_disabled = 1; in error()
1032 mddev->degraded++; in error()
1038 set_bit(MD_RECOVERY_INTR, &mddev->recovery); in error()
1041 set_bit(MD_CHANGE_DEVS, &mddev->flags); in error()
1044 bdevname(rdev->bdev,b), conf->raid_disks - mddev->degraded); in error()
1056 printk(" --- wd:%d rd:%d\n", conf->raid_disks - conf->mddev->degraded, in print_conf()
1081 static int raid1_spare_active(mddev_t *mddev) in raid1_spare_active() argument
1084 conf_t *conf = mddev->private; in raid1_spare_active()
1098 mddev->degraded--; in raid1_spare_active()
1108 static int raid1_add_disk(mddev_t *mddev, mdk_rdev_t *rdev) in raid1_add_disk() argument
1110 conf_t *conf = mddev->private; in raid1_add_disk()
1115 int last = mddev->raid_disks - 1; in raid1_add_disk()
1123 blk_queue_stack_limits(mddev->queue, in raid1_add_disk()
1130 mddev->queue->max_sectors > (PAGE_SIZE>>9)) in raid1_add_disk()
1131 blk_queue_max_sectors(mddev->queue, PAGE_SIZE>>9); in raid1_add_disk()
1149 static int raid1_remove_disk(mddev_t *mddev, int number) in raid1_remove_disk() argument
1151 conf_t *conf = mddev->private; in raid1_remove_disk()
1168 mddev->degraded < conf->raid_disks) { in raid1_remove_disk()
1192 for (i=r1_bio->mddev->raid_disks; i--; ) in end_sync_read()
1213 mddev_t *mddev = r1_bio->mddev; in end_sync_write() local
1214 conf_t *conf = mddev_to_conf(mddev); in end_sync_write()
1229 bitmap_end_sync(mddev->bitmap, s, in end_sync_write()
1234 md_error(mddev, conf->mirrors[mirror].rdev); in end_sync_write()
1242 md_done_sync(mddev, s, uptodate); in end_sync_write()
1246 static void sync_request_write(mddev_t *mddev, r1bio_t *r1_bio) in sync_request_write() argument
1248 conf_t *conf = mddev_to_conf(mddev); in sync_request_write()
1256 if (test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) { in sync_request_write()
1266 for (i=0; i<mddev->raid_disks; i++) in sync_request_write()
1268 md_error(mddev, conf->mirrors[i].rdev); in sync_request_write()
1270 md_done_sync(mddev, r1_bio->sectors, 1); in sync_request_write()
1274 for (primary=0; primary<mddev->raid_disks; primary++) in sync_request_write()
1278 rdev_dec_pending(conf->mirrors[primary].rdev, mddev); in sync_request_write()
1282 for (i=0; i<mddev->raid_disks; i++) in sync_request_write()
1302 mddev->resync_mismatches += r1_bio->sectors; in sync_request_write()
1303 if (j < 0 || (test_bit(MD_RECOVERY_CHECK, &mddev->recovery) in sync_request_write()
1306 rdev_dec_pending(conf->mirrors[i].rdev, mddev); in sync_request_write()
1398 md_error(mddev, rdev); in sync_request_write()
1413 md_error(mddev, rdev); in sync_request_write()
1418 md_error(mddev, conf->mirrors[r1_bio->read_disk].rdev); in sync_request_write()
1423 md_done_sync(mddev, r1_bio->sectors, 0); in sync_request_write()
1442 !test_bit(MD_RECOVERY_SYNC, &mddev->recovery)))) in sync_request_write()
1455 md_done_sync(mddev, r1_bio->sectors, 1); in sync_request_write()
1471 mddev_t *mddev = conf->mddev; in fix_read_error() local
1505 md_error(mddev, conf->mirrors[read_disk].rdev); in fix_read_error()
1522 md_error(mddev, rdev); in fix_read_error()
1539 md_error(mddev, rdev); in fix_read_error()
1545 mdname(mddev), s, in fix_read_error()
1557 static void raid1d(mddev_t *mddev) in raid1d() argument
1562 conf_t *conf = mddev_to_conf(mddev); in raid1d()
1567 md_check_recovery(mddev); in raid1d()
1584 mddev = r1_bio->mddev; in raid1d()
1585 conf = mddev_to_conf(mddev); in raid1d()
1587 sync_request_write(mddev, r1_bio); in raid1d()
1635 if (mddev->ro == 0) { in raid1d()
1654 mddev->ro ? IO_BLOCKED : NULL; in raid1d()
1676 unplug_slaves(mddev); in raid1d()
1704 static sector_t sync_request(mddev_t *mddev, sector_t sector_nr, int *skipped, int go_faster) in sync_request() argument
1706 conf_t *conf = mddev_to_conf(mddev); in sync_request()
1726 max_sector = mddev->size << 1; in sync_request()
1733 if (mddev->curr_resync < max_sector) /* aborted */ in sync_request()
1734 bitmap_end_sync(mddev->bitmap, mddev->curr_resync, in sync_request()
1739 bitmap_close_sync(mddev->bitmap); in sync_request()
1744 if (mddev->bitmap == NULL && in sync_request()
1745 mddev->recovery_cp == MaxSector && in sync_request()
1746 !test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery) && in sync_request()
1754 if (!bitmap_start_sync(mddev->bitmap, sector_nr, &sync_blocks, 1) && in sync_request()
1755 !conf->fullsync && !test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) { in sync_request()
1768 bitmap_cond_end_sync(mddev->bitmap, sector_nr); in sync_request()
1784 r1_bio->mddev = mddev; in sync_request()
1836 if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery) && read_targets > 0) in sync_request()
1850 if (max_sector > mddev->resync_max) in sync_request()
1851 max_sector = mddev->resync_max; /* Don't do IO beyond here */ in sync_request()
1862 if (!bitmap_start_sync(mddev->bitmap, sector_nr, in sync_request()
1865 !test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) in sync_request()
1903 if (test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) { in sync_request()
1922 static int run(mddev_t *mddev) in run() argument
1929 if (mddev->level != 1) { in run()
1931 mdname(mddev), mddev->level); in run()
1934 if (mddev->reshape_position != MaxSector) { in run()
1936 mdname(mddev)); in run()
1945 mddev->private = conf; in run()
1949 conf->mirrors = kzalloc(sizeof(struct mirror_info)*mddev->raid_disks, in run()
1961 conf->poolinfo->mddev = mddev; in run()
1962 conf->poolinfo->raid_disks = mddev->raid_disks; in run()
1970 mddev->queue->queue_lock = &conf->device_lock; in run()
1972 list_for_each_entry(rdev, &mddev->disks, same_set) { in run()
1974 if (disk_idx >= mddev->raid_disks in run()
1981 blk_queue_stack_limits(mddev->queue, in run()
1988 mddev->queue->max_sectors > (PAGE_SIZE>>9)) in run()
1989 blk_queue_max_sectors(mddev->queue, PAGE_SIZE>>9); in run()
1993 conf->raid_disks = mddev->raid_disks; in run()
1994 conf->mddev = mddev; in run()
2004 mddev->degraded = 0; in run()
2012 mddev->degraded++; in run()
2017 if (mddev->degraded == conf->raid_disks) { in run()
2019 mdname(mddev)); in run()
2022 if (conf->raid_disks - mddev->degraded == 1) in run()
2023 mddev->recovery_cp = MaxSector; in run()
2036 mddev->thread = md_register_thread(raid1d, mddev, "%s_raid1"); in run()
2037 if (!mddev->thread) { in run()
2040 mdname(mddev)); in run()
2046 mdname(mddev), mddev->raid_disks - mddev->degraded, in run()
2047 mddev->raid_disks); in run()
2051 mddev->array_sectors = mddev->size * 2; in run()
2053 mddev->queue->unplug_fn = raid1_unplug; in run()
2054 mddev->queue->backing_dev_info.congested_fn = raid1_congested; in run()
2055 mddev->queue->backing_dev_info.congested_data = mddev; in run()
2061 mdname(mddev)); in run()
2071 mddev->private = NULL; in run()
2077 static int stop(mddev_t *mddev) in stop() argument
2079 conf_t *conf = mddev_to_conf(mddev); in stop()
2080 struct bitmap *bitmap = mddev->bitmap; in stop()
2086 …aid1: behind writes in progress on device %s, waiting to stop (%d)\n", mdname(mddev), behind_wait); in stop()
2092 md_unregister_thread(mddev->thread); in stop()
2093 mddev->thread = NULL; in stop()
2094 blk_sync_queue(mddev->queue); /* the unplug fn references 'conf'*/ in stop()
2100 mddev->private = NULL; in stop()
2104 static int raid1_resize(mddev_t *mddev, sector_t sectors) in raid1_resize() argument
2113 mddev->array_sectors = sectors; in raid1_resize()
2114 set_capacity(mddev->gendisk, mddev->array_sectors); in raid1_resize()
2115 mddev->changed = 1; in raid1_resize()
2116 if (mddev->array_sectors / 2 > mddev->size && in raid1_resize()
2117 mddev->recovery_cp == MaxSector) { in raid1_resize()
2118 mddev->recovery_cp = mddev->size << 1; in raid1_resize()
2119 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in raid1_resize()
2121 mddev->size = mddev->array_sectors / 2; in raid1_resize()
2122 mddev->resync_max_sectors = sectors; in raid1_resize()
2126 static int raid1_reshape(mddev_t *mddev) in raid1_reshape() argument
2142 conf_t *conf = mddev_to_conf(mddev); in raid1_reshape()
2148 if (mddev->chunk_size != mddev->new_chunk || in raid1_reshape()
2149 mddev->layout != mddev->new_layout || in raid1_reshape()
2150 mddev->level != mddev->new_level) { in raid1_reshape()
2151 mddev->new_chunk = mddev->chunk_size; in raid1_reshape()
2152 mddev->new_layout = mddev->layout; in raid1_reshape()
2153 mddev->new_level = mddev->level; in raid1_reshape()
2157 err = md_allow_write(mddev); in raid1_reshape()
2161 raid_disks = mddev->raid_disks + mddev->delta_disks; in raid1_reshape()
2175 newpoolinfo->mddev = mddev; in raid1_reshape()
2202 sysfs_remove_link(&mddev->kobj, nm); in raid1_reshape()
2205 sysfs_remove_link(&mddev->kobj, nm); in raid1_reshape()
2206 if (sysfs_create_link(&mddev->kobj, in raid1_reshape()
2211 nm, mdname(mddev)); in raid1_reshape()
2222 mddev->degraded += (raid_disks - conf->raid_disks); in raid1_reshape()
2224 conf->raid_disks = mddev->raid_disks = raid_disks; in raid1_reshape()
2225 mddev->delta_disks = 0; in raid1_reshape()
2230 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in raid1_reshape()
2231 md_wakeup_thread(mddev->thread); in raid1_reshape()
2237 static void raid1_quiesce(mddev_t *mddev, int state) in raid1_quiesce() argument
2239 conf_t *conf = mddev_to_conf(mddev); in raid1_quiesce()