Lines Matching refs:conf
34 static int multipath_map (struct mpconf *conf) in multipath_map() argument
36 int i, disks = conf->raid_disks; in multipath_map()
45 struct md_rdev *rdev = rcu_dereference(conf->multipaths[i].rdev); in multipath_map()
62 struct mpconf *conf = mddev->private; in multipath_reschedule_retry() local
64 spin_lock_irqsave(&conf->device_lock, flags); in multipath_reschedule_retry()
65 list_add(&mp_bh->retry_list, &conf->retry_list); in multipath_reschedule_retry()
66 spin_unlock_irqrestore(&conf->device_lock, flags); in multipath_reschedule_retry()
78 struct mpconf *conf = mp_bh->mddev->private; in multipath_end_bh_io() local
81 mempool_free(mp_bh, conf->pool); in multipath_end_bh_io()
88 struct mpconf *conf = mp_bh->mddev->private; in multipath_end_request() local
89 struct md_rdev *rdev = conf->multipaths[mp_bh->path].rdev; in multipath_end_request()
105 rdev_dec_pending(rdev, conf->mddev); in multipath_end_request()
110 struct mpconf *conf = mddev->private; in multipath_make_request() local
119 mp_bh = mempool_alloc(conf->pool, GFP_NOIO); in multipath_make_request()
124 mp_bh->path = multipath_map(conf); in multipath_make_request()
127 mempool_free(mp_bh, conf->pool); in multipath_make_request()
130 multipath = conf->multipaths + mp_bh->path; in multipath_make_request()
146 struct mpconf *conf = mddev->private; in multipath_status() local
149 seq_printf (seq, " [%d/%d] [", conf->raid_disks, in multipath_status()
150 conf->raid_disks - mddev->degraded); in multipath_status()
151 for (i = 0; i < conf->raid_disks; i++) in multipath_status()
153 conf->multipaths[i].rdev && in multipath_status()
154 test_bit(In_sync, &conf->multipaths[i].rdev->flags) ? "U" : "_"); in multipath_status()
160 struct mpconf *conf = mddev->private; in multipath_congested() local
165 struct md_rdev *rdev = rcu_dereference(conf->multipaths[i].rdev); in multipath_congested()
185 struct mpconf *conf = mddev->private; in multipath_error() local
188 if (conf->raid_disks - mddev->degraded <= 1) { in multipath_error()
204 spin_lock_irqsave(&conf->device_lock, flags); in multipath_error()
206 spin_unlock_irqrestore(&conf->device_lock, flags); in multipath_error()
215 conf->raid_disks - mddev->degraded); in multipath_error()
218 static void print_multipath_conf (struct mpconf *conf) in print_multipath_conf() argument
224 if (!conf) { in print_multipath_conf()
228 printk(" --- wd:%d rd:%d\n", conf->raid_disks - conf->mddev->degraded, in print_multipath_conf()
229 conf->raid_disks); in print_multipath_conf()
231 for (i = 0; i < conf->raid_disks; i++) { in print_multipath_conf()
233 tmp = conf->multipaths + i; in print_multipath_conf()
243 struct mpconf *conf = mddev->private; in multipath_add_disk() local
254 print_multipath_conf(conf); in multipath_add_disk()
257 if ((p=conf->multipaths+path)->rdev == NULL) { in multipath_add_disk()
274 spin_lock_irq(&conf->device_lock); in multipath_add_disk()
278 spin_unlock_irq(&conf->device_lock); in multipath_add_disk()
285 print_multipath_conf(conf); in multipath_add_disk()
292 struct mpconf *conf = mddev->private; in multipath_remove_disk() local
295 struct multipath_info *p = conf->multipaths + number; in multipath_remove_disk()
297 print_multipath_conf(conf); in multipath_remove_disk()
319 print_multipath_conf(conf); in multipath_remove_disk()
337 struct mpconf *conf = mddev->private; in multipathd() local
338 struct list_head *head = &conf->retry_list; in multipathd()
343 spin_lock_irqsave(&conf->device_lock, flags); in multipathd()
348 spin_unlock_irqrestore(&conf->device_lock, flags); in multipathd()
353 if ((mp_bh->path = multipath_map (conf))<0) { in multipathd()
366 conf->multipaths[mp_bh->path].rdev->data_offset; in multipathd()
367 bio->bi_bdev = conf->multipaths[mp_bh->path].rdev->bdev; in multipathd()
374 spin_unlock_irqrestore(&conf->device_lock, flags); in multipathd()
387 struct mpconf *conf; in multipath_run() local
407 conf = kzalloc(sizeof(struct mpconf), GFP_KERNEL); in multipath_run()
408 mddev->private = conf; in multipath_run()
409 if (!conf) { in multipath_run()
416 conf->multipaths = kzalloc(sizeof(struct multipath_info)*mddev->raid_disks, in multipath_run()
418 if (!conf->multipaths) { in multipath_run()
432 disk = conf->multipaths + disk_idx; in multipath_run()
450 conf->raid_disks = mddev->raid_disks; in multipath_run()
451 conf->mddev = mddev; in multipath_run()
452 spin_lock_init(&conf->device_lock); in multipath_run()
453 INIT_LIST_HEAD(&conf->retry_list); in multipath_run()
460 mddev->degraded = conf->raid_disks - working_disks; in multipath_run()
462 conf->pool = mempool_create_kmalloc_pool(NR_RESERVED_BUFS, in multipath_run()
464 if (conf->pool == NULL) { in multipath_run()
483 mdname(mddev), conf->raid_disks - mddev->degraded, in multipath_run()
496 if (conf->pool) in multipath_run()
497 mempool_destroy(conf->pool); in multipath_run()
498 kfree(conf->multipaths); in multipath_run()
499 kfree(conf); in multipath_run()
507 struct mpconf *conf = priv; in multipath_free() local
509 mempool_destroy(conf->pool); in multipath_free()
510 kfree(conf->multipaths); in multipath_free()
511 kfree(conf); in multipath_free()