Lines Matching refs:mddev

61 	struct mddev *mddev = mp_bh->mddev;  in multipath_reschedule_retry()  local
62 struct mpconf *conf = mddev->private; in multipath_reschedule_retry()
67 md_wakeup_thread(mddev->thread); in multipath_reschedule_retry()
78 struct mpconf *conf = mp_bh->mddev->private; in multipath_end_bh_io()
88 struct mpconf *conf = mp_bh->mddev->private; in multipath_end_request()
98 md_error (mp_bh->mddev, rdev); in multipath_end_request()
105 rdev_dec_pending(rdev, conf->mddev); in multipath_end_request()
108 static void multipath_make_request(struct mddev *mddev, struct bio * bio) in multipath_make_request() argument
110 struct mpconf *conf = mddev->private; in multipath_make_request()
115 md_flush_request(mddev, bio); in multipath_make_request()
122 mp_bh->mddev = mddev; in multipath_make_request()
144 static void multipath_status (struct seq_file *seq, struct mddev *mddev) in multipath_status() argument
146 struct mpconf *conf = mddev->private; in multipath_status()
150 conf->raid_disks - mddev->degraded); in multipath_status()
158 static int multipath_congested(struct mddev *mddev, int bits) in multipath_congested() argument
160 struct mpconf *conf = mddev->private; in multipath_congested()
164 for (i = 0; i < mddev->raid_disks ; i++) { in multipath_congested()
183 static void multipath_error (struct mddev *mddev, struct md_rdev *rdev) in multipath_error() argument
185 struct mpconf *conf = mddev->private; in multipath_error()
188 if (conf->raid_disks - mddev->degraded <= 1) { in multipath_error()
205 mddev->degraded++; in multipath_error()
209 set_bit(MD_CHANGE_DEVS, &mddev->flags); in multipath_error()
215 conf->raid_disks - mddev->degraded); in multipath_error()
228 printk(" --- wd:%d rd:%d\n", conf->raid_disks - conf->mddev->degraded, in print_multipath_conf()
241 static int multipath_add_disk(struct mddev *mddev, struct md_rdev *rdev) in multipath_add_disk() argument
243 struct mpconf *conf = mddev->private; in multipath_add_disk()
249 int last = mddev->raid_disks - 1; in multipath_add_disk()
259 disk_stack_limits(mddev->gendisk, rdev->bdev, in multipath_add_disk()
269 blk_queue_max_segments(mddev->queue, 1); in multipath_add_disk()
270 blk_queue_segment_boundary(mddev->queue, in multipath_add_disk()
275 mddev->degraded--; in multipath_add_disk()
281 md_integrity_add_rdev(rdev, mddev); in multipath_add_disk()
290 static int multipath_remove_disk(struct mddev *mddev, struct md_rdev *rdev) in multipath_remove_disk() argument
292 struct mpconf *conf = mddev->private; in multipath_remove_disk()
315 err = md_integrity_register(mddev); in multipath_remove_disk()
333 struct mddev *mddev = thread->mddev; in multipathd() local
337 struct mpconf *conf = mddev->private; in multipathd()
340 md_check_recovery(mddev); in multipathd()
377 static sector_t multipath_size(struct mddev *mddev, sector_t sectors, int raid_disks) in multipath_size() argument
382 return mddev->dev_sectors; in multipath_size()
385 static int multipath_run (struct mddev *mddev) in multipath_run() argument
393 if (md_check_no_bitmap(mddev)) in multipath_run()
396 if (mddev->level != LEVEL_MULTIPATH) { in multipath_run()
398 mdname(mddev), mddev->level); in multipath_run()
408 mddev->private = conf; in multipath_run()
412 mdname(mddev)); in multipath_run()
416 conf->multipaths = kzalloc(sizeof(struct multipath_info)*mddev->raid_disks, in multipath_run()
421 mdname(mddev)); in multipath_run()
426 rdev_for_each(rdev, mddev) { in multipath_run()
429 disk_idx >= mddev->raid_disks) in multipath_run()
434 disk_stack_limits(mddev->gendisk, rdev->bdev, in multipath_run()
441 blk_queue_max_segments(mddev->queue, 1); in multipath_run()
442 blk_queue_segment_boundary(mddev->queue, in multipath_run()
450 conf->raid_disks = mddev->raid_disks; in multipath_run()
451 conf->mddev = mddev; in multipath_run()
457 mdname(mddev)); in multipath_run()
460 mddev->degraded = conf->raid_disks - working_disks; in multipath_run()
467 mdname(mddev)); in multipath_run()
472 mddev->thread = md_register_thread(multipathd, mddev, in multipath_run()
474 if (!mddev->thread) { in multipath_run()
476 " for %s\n", mdname(mddev)); in multipath_run()
483 mdname(mddev), conf->raid_disks - mddev->degraded, in multipath_run()
484 mddev->raid_disks); in multipath_run()
488 md_set_array_sectors(mddev, multipath_size(mddev, 0, 0)); in multipath_run()
490 if (md_integrity_register(mddev)) in multipath_run()
500 mddev->private = NULL; in multipath_run()
505 static void multipath_free(struct mddev *mddev, void *priv) in multipath_free() argument