Lines Matching refs:mddev

54 	struct mddev *mddev = mp_bh->mddev;  in multipath_reschedule_retry()  local
55 struct mpconf *conf = mddev->private; in multipath_reschedule_retry()
60 md_wakeup_thread(mddev->thread); in multipath_reschedule_retry()
71 struct mpconf *conf = mp_bh->mddev->private; in multipath_end_bh_io()
81 struct mpconf *conf = mp_bh->mddev->private; in multipath_end_request()
90 md_error (mp_bh->mddev, rdev); in multipath_end_request()
97 rdev_dec_pending(rdev, conf->mddev); in multipath_end_request()
100 static bool multipath_make_request(struct mddev *mddev, struct bio * bio) in multipath_make_request() argument
102 struct mpconf *conf = mddev->private; in multipath_make_request()
107 && md_flush_request(mddev, bio)) in multipath_make_request()
110 md_account_bio(mddev, &bio); in multipath_make_request()
114 mp_bh->mddev = mddev; in multipath_make_request()
130 mddev_check_write_zeroes(mddev, &mp_bh->bio); in multipath_make_request()
135 static void multipath_status(struct seq_file *seq, struct mddev *mddev) in multipath_status() argument
137 struct mpconf *conf = mddev->private; in multipath_status()
141 conf->raid_disks - mddev->degraded); in multipath_status()
154 static void multipath_error (struct mddev *mddev, struct md_rdev *rdev) in multipath_error() argument
156 struct mpconf *conf = mddev->private; in multipath_error()
158 if (conf->raid_disks - mddev->degraded <= 1) { in multipath_error()
174 mddev->degraded++; in multipath_error()
178 set_bit(MD_SB_CHANGE_DEVS, &mddev->sb_flags); in multipath_error()
182 conf->raid_disks - mddev->degraded); in multipath_error()
195 pr_debug(" --- wd:%d rd:%d\n", conf->raid_disks - conf->mddev->degraded, in print_multipath_conf()
207 static int multipath_add_disk(struct mddev *mddev, struct md_rdev *rdev) in multipath_add_disk() argument
209 struct mpconf *conf = mddev->private; in multipath_add_disk()
214 int last = mddev->raid_disks - 1; in multipath_add_disk()
223 disk_stack_limits(mddev->gendisk, rdev->bdev, in multipath_add_disk()
226 err = md_integrity_add_rdev(rdev, mddev); in multipath_add_disk()
230 mddev->degraded--; in multipath_add_disk()
244 static int multipath_remove_disk(struct mddev *mddev, struct md_rdev *rdev) in multipath_remove_disk() argument
246 struct mpconf *conf = mddev->private; in multipath_remove_disk()
270 err = md_integrity_register(mddev); in multipath_remove_disk()
288 struct mddev *mddev = thread->mddev; in multipathd() local
292 struct mpconf *conf = mddev->private; in multipathd()
295 md_check_recovery(mddev); in multipathd()
329 static sector_t multipath_size(struct mddev *mddev, sector_t sectors, int raid_disks) in multipath_size() argument
334 return mddev->dev_sectors; in multipath_size()
337 static int multipath_run (struct mddev *mddev) in multipath_run() argument
346 if (md_check_no_bitmap(mddev)) in multipath_run()
349 if (mddev->level != LEVEL_MULTIPATH) { in multipath_run()
351 mdname(mddev), mddev->level); in multipath_run()
361 mddev->private = conf; in multipath_run()
365 conf->multipaths = kcalloc(mddev->raid_disks, in multipath_run()
372 rdev_for_each(rdev, mddev) { in multipath_run()
375 disk_idx >= mddev->raid_disks) in multipath_run()
380 disk_stack_limits(mddev->gendisk, rdev->bdev, in multipath_run()
387 conf->raid_disks = mddev->raid_disks; in multipath_run()
388 conf->mddev = mddev; in multipath_run()
394 mdname(mddev)); in multipath_run()
397 mddev->degraded = conf->raid_disks - working_disks; in multipath_run()
404 rcu_assign_pointer(mddev->thread, in multipath_run()
405 md_register_thread(multipathd, mddev, "multipath")); in multipath_run()
406 if (!mddev->thread) in multipath_run()
410 mdname(mddev), conf->raid_disks - mddev->degraded, in multipath_run()
411 mddev->raid_disks); in multipath_run()
415 md_set_array_sectors(mddev, multipath_size(mddev, 0, 0)); in multipath_run()
417 if (md_integrity_register(mddev)) in multipath_run()
426 mddev->private = NULL; in multipath_run()
431 static void multipath_free(struct mddev *mddev, void *priv) in multipath_free() argument