Lines Matching refs:mddev
62 struct mddev *mddev = mp_bh->mddev; in multipath_reschedule_retry() local
63 struct mpconf *conf = mddev->private; in multipath_reschedule_retry()
68 md_wakeup_thread(mddev->thread); in multipath_reschedule_retry()
79 struct mpconf *conf = mp_bh->mddev->private; in multipath_end_bh_io()
89 struct mpconf *conf = mp_bh->mddev->private; in multipath_end_request()
99 md_error (mp_bh->mddev, rdev); in multipath_end_request()
106 rdev_dec_pending(rdev, conf->mddev); in multipath_end_request()
109 static bool multipath_make_request(struct mddev *mddev, struct bio * bio) in multipath_make_request() argument
111 struct mpconf *conf = mddev->private; in multipath_make_request()
116 md_flush_request(mddev, bio); in multipath_make_request()
123 mp_bh->mddev = mddev; in multipath_make_request()
141 mddev_check_writesame(mddev, &mp_bh->bio); in multipath_make_request()
142 mddev_check_write_zeroes(mddev, &mp_bh->bio); in multipath_make_request()
147 static void multipath_status(struct seq_file *seq, struct mddev *mddev) in multipath_status() argument
149 struct mpconf *conf = mddev->private; in multipath_status()
153 conf->raid_disks - mddev->degraded); in multipath_status()
163 static int multipath_congested(struct mddev *mddev, int bits) in multipath_congested() argument
165 struct mpconf *conf = mddev->private; in multipath_congested()
169 for (i = 0; i < mddev->raid_disks ; i++) { in multipath_congested()
188 static void multipath_error (struct mddev *mddev, struct md_rdev *rdev) in multipath_error() argument
190 struct mpconf *conf = mddev->private; in multipath_error()
193 if (conf->raid_disks - mddev->degraded <= 1) { in multipath_error()
209 mddev->degraded++; in multipath_error()
213 set_bit(MD_SB_CHANGE_DEVS, &mddev->sb_flags); in multipath_error()
217 conf->raid_disks - mddev->degraded); in multipath_error()
230 pr_debug(" --- wd:%d rd:%d\n", conf->raid_disks - conf->mddev->degraded, in print_multipath_conf()
243 static int multipath_add_disk(struct mddev *mddev, struct md_rdev *rdev) in multipath_add_disk() argument
245 struct mpconf *conf = mddev->private; in multipath_add_disk()
250 int last = mddev->raid_disks - 1; in multipath_add_disk()
259 disk_stack_limits(mddev->gendisk, rdev->bdev, in multipath_add_disk()
262 err = md_integrity_add_rdev(rdev, mddev); in multipath_add_disk()
266 mddev->degraded--; in multipath_add_disk()
280 static int multipath_remove_disk(struct mddev *mddev, struct md_rdev *rdev) in multipath_remove_disk() argument
282 struct mpconf *conf = mddev->private; in multipath_remove_disk()
306 err = md_integrity_register(mddev); in multipath_remove_disk()
324 struct mddev *mddev = thread->mddev; in multipathd() local
328 struct mpconf *conf = mddev->private; in multipathd()
331 md_check_recovery(mddev); in multipathd()
366 static sector_t multipath_size(struct mddev *mddev, sector_t sectors, int raid_disks) in multipath_size() argument
371 return mddev->dev_sectors; in multipath_size()
374 static int multipath_run (struct mddev *mddev) in multipath_run() argument
383 if (md_check_no_bitmap(mddev)) in multipath_run()
386 if (mddev->level != LEVEL_MULTIPATH) { in multipath_run()
388 mdname(mddev), mddev->level); in multipath_run()
398 mddev->private = conf; in multipath_run()
402 conf->multipaths = kcalloc(mddev->raid_disks, in multipath_run()
409 rdev_for_each(rdev, mddev) { in multipath_run()
412 disk_idx >= mddev->raid_disks) in multipath_run()
417 disk_stack_limits(mddev->gendisk, rdev->bdev, in multipath_run()
424 conf->raid_disks = mddev->raid_disks; in multipath_run()
425 conf->mddev = mddev; in multipath_run()
431 mdname(mddev)); in multipath_run()
434 mddev->degraded = conf->raid_disks - working_disks; in multipath_run()
441 mddev->thread = md_register_thread(multipathd, mddev, in multipath_run()
443 if (!mddev->thread) in multipath_run()
447 mdname(mddev), conf->raid_disks - mddev->degraded, in multipath_run()
448 mddev->raid_disks); in multipath_run()
452 md_set_array_sectors(mddev, multipath_size(mddev, 0, 0)); in multipath_run()
454 if (md_integrity_register(mddev)) in multipath_run()
463 mddev->private = NULL; in multipath_run()
468 static void multipath_free(struct mddev *mddev, void *priv) in multipath_free() argument