Lines Matching full:disks
118 if (sh->qd_idx == sh->disks - 1) in raid6_d0()
129 /* When walking through the disks in a raid5, starting at raid6_d0,
130 * We need to map each disk to a 'slot', where the data disks are slot
222 for (i = sh->disks; i--; ) in do_release_stripe()
490 init_stripe_shared_pages(struct stripe_head *sh, struct r5conf *conf, int disks) in init_stripe_shared_pages() argument
499 nr_pages = (disks + cnt - 1) / cnt; in init_stripe_shared_pages()
580 sh->disks = previous ? conf->previous_raid_disks : conf->raid_disks; in init_stripe()
585 for (i = sh->disks; i--; ) { in init_stripe()
641 struct md_rdev *rdev = rcu_dereference(conf->disks[i].rdev); in raid5_calc_degraded()
643 rdev = rcu_dereference(conf->disks[i].replacement); in raid5_calc_degraded()
667 struct md_rdev *rdev = rcu_dereference(conf->disks[i].rdev); in raid5_calc_degraded()
669 rdev = rcu_dereference(conf->disks[i].replacement); in raid5_calc_degraded()
778 BUG_ON(sh->overwrite_disks > (sh->disks - sh->raid_conf->max_degraded)); in is_full_stripe_write()
779 return sh->overwrite_disks == (sh->disks - sh->raid_conf->max_degraded); in is_full_stripe_write()
1059 int i, disks = sh->disks; in ops_run_io() local
1071 for (i = disks; i--; ) { in ops_run_io()
1100 rrdev = rcu_dereference(conf->disks[i].replacement); in ops_run_io()
1102 rdev = rcu_dereference(conf->disks[i].rdev); in ops_run_io()
1379 for (i = sh->disks; i--; ) { in ops_complete_biofill()
1418 for (i = sh->disks; i--; ) { in ops_run_biofill()
1482 return (void *) (to_addr_page(percpu, i) + sh->disks + 2); in to_addr_conv()
1491 return (unsigned int *) (to_addr_conv(sh, percpu, 0) + sh->disks + 2); in to_addr_offs()
1497 int disks = sh->disks; in ops_run_compute5() local
1515 for (i = disks; i--; ) { in ops_run_compute5()
1537 * @srcs - (struct page *) array of size sh->disks
1551 int disks = sh->disks; in set_syndrome_sources() local
1552 int syndrome_disks = sh->ddf_layout ? disks : (disks - 2); in set_syndrome_sources()
1557 for (i = 0; i < disks; i++) in set_syndrome_sources()
1585 i = raid6_next_disk(i, disks); in set_syndrome_sources()
1594 int disks = sh->disks; in ops_run_compute6_1() local
1638 for (i = disks; i-- ; ) { in ops_run_compute6_1()
1658 int i, count, disks = sh->disks; in ops_run_compute6_2() local
1659 int syndrome_disks = sh->ddf_layout ? disks : disks-2; in ops_run_compute6_2()
1681 for (i = 0; i < disks ; i++) { in ops_run_compute6_2()
1697 i = raid6_next_disk(i, disks); in ops_run_compute6_2()
1709 /* Q disk is one of the missing disks */ in ops_run_compute6_2()
1731 for (i = disks; i-- ; ) { in ops_run_compute6_2()
1794 int disks = sh->disks; in ops_run_prexor5() local
1808 for (i = disks; i--; ) { in ops_run_prexor5()
1858 int disks = sh->disks; in ops_run_biodrain() local
1865 for (i = disks; i--; ) { in ops_run_biodrain()
1929 int disks = sh->disks; in ops_complete_reconstruct() local
1938 for (i = disks; i--; ) { in ops_complete_reconstruct()
1944 for (i = disks; i--; ) { in ops_complete_reconstruct()
1977 int disks = sh->disks; in ops_run_reconstruct5() local
1993 for (i = 0; i < sh->disks; i++) { in ops_run_reconstruct5()
1999 if (i >= sh->disks) { in ops_run_reconstruct5()
2016 for (i = disks; i--; ) { in ops_run_reconstruct5()
2027 for (i = disks; i--; ) { in ops_run_reconstruct5()
2086 for (i = 0; i < sh->disks; i++) { in ops_run_reconstruct6()
2092 if (i >= sh->disks) { in ops_run_reconstruct6()
2148 int disks = sh->disks; in ops_run_check_p() local
2169 for (i = disks; i--; ) { in ops_run_check_p()
2212 int overlap_clear = 0, i, disks = sh->disks; in raid_run_ops() local
2274 for (i = disks; i--; ) { in raid_run_ops()
2293 int disks, struct r5conf *conf) in alloc_stripe() argument
2309 for (i = 0; i < disks; i++) { in alloc_stripe()
2324 if (init_stripe_shared_pages(sh, conf, disks)) { in alloc_stripe()
2388 * @num: total number of disks in the array
2474 * 3/ reallocate conf->disks to be suitable bigger. If this fails, in resize_stripes()
2563 * conf->disks and the scribble region in resize_stripes()
2568 ndisks[i] = conf->disks[i]; in resize_stripes()
2582 kfree(conf->disks); in resize_stripes()
2583 conf->disks = ndisks; in resize_stripes()
2666 int disks = sh->disks, i; in raid5_end_read_request() local
2671 for (i=0 ; i<disks; i++) in raid5_end_read_request()
2678 if (i == disks) { in raid5_end_read_request()
2689 rdev = conf->disks[i].replacement; in raid5_end_read_request()
2691 rdev = conf->disks[i].rdev; in raid5_end_read_request()
2797 int disks = sh->disks, i; in raid5_end_write_request() local
2803 for (i = 0 ; i < disks; i++) { in raid5_end_write_request()
2805 rdev = conf->disks[i].rdev; in raid5_end_write_request()
2809 rdev = conf->disks[i].replacement; in raid5_end_write_request()
2817 rdev = conf->disks[i].rdev; in raid5_end_write_request()
2824 if (i == disks) { in raid5_end_write_request()
3119 int raid_disks = sh->disks; in raid5_compute_blocknr()
3249 * like to flush data in journal to RAID disks first, so complex rmw
3269 * In journal failure, we try to flush all cached data to raid disks
3296 int i, pd_idx = sh->pd_idx, qd_idx = sh->qd_idx, disks = sh->disks; in schedule_reconstruction() local
3309 for (i = disks; i--; ) { in schedule_reconstruction()
3338 if (s->locked + conf->max_degraded == disks) in schedule_reconstruction()
3348 for (i = disks; i--; ) { in schedule_reconstruction()
3450 for (i = 0; i < sh->disks; i++) { in add_stripe_bio()
3540 int disks = previous ? conf->previous_raid_disks : conf->raid_disks; in stripe_set_idx() local
3543 stripe * (disks - conf->max_degraded) in stripe_set_idx()
3551 struct stripe_head_state *s, int disks) in handle_failed_stripe() argument
3555 for (i = disks; i--; ) { in handle_failed_stripe()
3562 rdev = rcu_dereference(conf->disks[i].rdev); in handle_failed_stripe()
3688 struct md_rdev *rdev = rcu_dereference(conf->disks[i].rdev); in handle_failed_sync()
3695 rdev = rcu_dereference(conf->disks[i].replacement); in handle_failed_sync()
3717 rdev = rcu_dereference(sh->raid_conf->disks[disk_idx].replacement); in want_replace()
3729 int disk_idx, int disks) in need_this_block() argument
3836 int disk_idx, int disks) in fetch_block() argument
3841 if (need_this_block(sh, s, disk_idx, disks)) { in fetch_block()
3858 if ((s->uptodate == disks - 1) && in fetch_block()
3881 } else if (s->uptodate == disks-2 && s->failed >= 2) { in fetch_block()
3886 for (other = disks; other--; ) { in fetch_block()
3923 int disks) in handle_stripe_fill() argument
3937 * disks first, this avoids handling complex rmw of write in handle_stripe_fill()
3947 for (i = disks; i--; ) in handle_stripe_fill()
3948 if (fetch_block(sh, s, i, disks)) in handle_stripe_fill()
3963 struct stripe_head *sh, int disks) in handle_stripe_clean_event() argument
3971 for (i = disks; i--; ) in handle_stripe_clean_event()
4080 int disks) in handle_stripe_dirtying() argument
4102 } else for (i = disks; i--; ) { in handle_stripe_dirtying()
4114 rmw += 2*disks; /* cannot read it */ in handle_stripe_dirtying()
4125 rcw += 2*disks; in handle_stripe_dirtying()
4138 for (i = disks; i--; ) { in handle_stripe_dirtying()
4168 for (i = disks; i--; ) { in handle_stripe_dirtying()
4193 for (i = disks; i--; ) { in handle_stripe_dirtying()
4220 if (rcw > disks && rmw > disks && in handle_stripe_dirtying()
4242 struct stripe_head_state *s, int disks) in handle_parity_checks5() argument
4253 BUG_ON(s->uptodate != disks); in handle_parity_checks5()
4273 BUG_ON(s->uptodate != disks); in handle_parity_checks5()
4336 int disks) in handle_parity_checks6() argument
4521 for (i = 0; i < sh->disks; i++) in handle_stripe_expansion()
4586 int disks = sh->disks; in analyse_stripe() local
4601 for (i=disks; i--; ) { in analyse_stripe()
4645 rdev = rcu_dereference(conf->disks[i].replacement); in analyse_stripe()
4656 rdev = rcu_dereference(conf->disks[i].rdev); in analyse_stripe()
4704 conf->disks[i].rdev); in analyse_stripe()
4717 conf->disks[i].rdev); in analyse_stripe()
4726 conf->disks[i].replacement); in analyse_stripe()
4748 conf->disks[i].replacement); in analyse_stripe()
4853 for (i = 0; i < sh->disks; i++) { in break_stripe_batch_list()
4867 for (i = 0; i < head_sh->disks; i++) in break_stripe_batch_list()
4883 int disks = sh->disks; in handle_stripe() local
4967 * the stripe if there is data need write to raid disks in handle_stripe()
4975 handle_failed_stripe(conf, sh, &s, disks); in handle_stripe()
4998 for (i = disks; i--; ) { in handle_stripe()
5041 handle_stripe_clean_event(conf, sh, disks); in handle_stripe()
5044 r5c_handle_cached_data_endio(conf, sh, disks); in handle_stripe()
5053 || (s.syncing && (s.uptodate + s.compute < disks)) in handle_stripe()
5056 handle_stripe_fill(sh, &s, disks); in handle_stripe()
5077 handle_stripe_dirtying(conf, sh, &s, disks); in handle_stripe()
5084 disks); in handle_stripe()
5097 disks); in handle_stripe()
5114 handle_parity_checks6(conf, sh, &s, disks); in handle_stripe()
5116 handle_parity_checks5(conf, sh, &s, disks); in handle_stripe()
5195 sh->disks = conf->raid_disks; in handle_stripe()
5225 for (i = disks; i--; ) { in handle_stripe()
5230 rdev = conf->disks[i].rdev; in handle_stripe()
5237 rdev = conf->disks[i].rdev; in handle_stripe()
5243 rdev = conf->disks[i].replacement; in handle_stripe()
5246 rdev = conf->disks[i].rdev; in handle_stripe()
5426 rdev = rcu_dereference(conf->disks[dd_idx].replacement); in raid5_read_one_chunk()
5429 rdev = rcu_dereference(conf->disks[dd_idx].rdev); in raid5_read_one_chunk()
6110 for (j=sh->disks; j--;) { in reshape_request()
6287 struct md_rdev *rdev = READ_ONCE(conf->disks[i].rdev); in raid5_sync_request()
7082 if (conf->disks[i].extra_page) in free_conf()
7083 put_page(conf->disks[i].extra_page); in free_conf()
7084 kfree(conf->disks); in free_conf()
7256 conf->disks = kcalloc(max_disks, sizeof(struct disk_info), in setup_conf()
7259 if (!conf->disks) in setup_conf()
7263 conf->disks[i].extra_page = alloc_page(GFP_KERNEL); in setup_conf()
7264 if (!conf->disks[i].extra_page) in setup_conf()
7310 disk = conf->disks + raid_disk; in setup_conf()
7520 * be a multiple of the largest chunk size times new data disks. in raid5_run()
7604 rdev = conf->disks[i].rdev; in raid5_run()
7605 if (!rdev && conf->disks[i].replacement) { in raid5_run()
7607 rdev = conf->disks[i].replacement; in raid5_run()
7608 conf->disks[i].replacement = NULL; in raid5_run()
7610 conf->disks[i].rdev = rdev; in raid5_run()
7614 if (conf->disks[i].replacement && in raid5_run()
7754 * depending on which disks are used to calculate in raid5_run()
7806 struct md_rdev *rdev = rcu_dereference(conf->disks[i].rdev); in raid5_status()
7829 tmp = conf->disks + i; in print_raid5_conf()
7846 tmp = conf->disks + i; in raid5_spare_active()
7886 struct disk_info *p = conf->disks + number; in raid5_remove_disk()
8009 conf->disks[rdev->saved_raid_disk].rdev == NULL) in raid5_add_disk()
8013 p = conf->disks + disk; in raid5_add_disk()
8027 p = conf->disks + disk; in raid5_add_disk()
8181 pr_warn("md/raid:%s: array size must be reduced before number of disks\n", in raid5_start_reshape()
8330 struct md_rdev *rdev = conf->disks[d].rdev; in raid5_finish_reshape()
8333 rdev = conf->disks[d].replacement; in raid5_finish_reshape()