Lines Matching refs:fls
328 static void ff_layout_free_mirror_array(struct nfs4_ff_layout_segment *fls) in ff_layout_free_mirror_array() argument
332 for (i = 0; i < fls->mirror_array_cnt; i++) in ff_layout_free_mirror_array()
333 ff_layout_put_mirror(fls->mirror_array[i]); in ff_layout_free_mirror_array()
336 static void _ff_layout_free_lseg(struct nfs4_ff_layout_segment *fls) in _ff_layout_free_lseg() argument
338 if (fls) { in _ff_layout_free_lseg()
339 ff_layout_free_mirror_array(fls); in _ff_layout_free_lseg()
340 kfree(fls); in _ff_layout_free_lseg()
432 static void ff_layout_sort_mirrors(struct nfs4_ff_layout_segment *fls) in ff_layout_sort_mirrors() argument
436 for (i = 0; i < fls->mirror_array_cnt - 1; i++) { in ff_layout_sort_mirrors()
437 for (j = i + 1; j < fls->mirror_array_cnt; j++) in ff_layout_sort_mirrors()
438 if (ff_mirror_efficiency_sum(fls->mirror_array[i]) < in ff_layout_sort_mirrors()
439 ff_mirror_efficiency_sum(fls->mirror_array[j])) in ff_layout_sort_mirrors()
440 swap(fls->mirror_array[i], in ff_layout_sort_mirrors()
441 fls->mirror_array[j]); in ff_layout_sort_mirrors()
451 struct nfs4_ff_layout_segment *fls = NULL; in ff_layout_alloc_lseg() local
486 fls = kzalloc_flex(*fls, mirror_array, mirror_array_cnt, gfp_flags); in ff_layout_alloc_lseg()
487 if (!fls) in ff_layout_alloc_lseg()
490 fls->mirror_array_cnt = mirror_array_cnt; in ff_layout_alloc_lseg()
491 fls->stripe_unit = stripe_unit; in ff_layout_alloc_lseg()
494 for (i = 0; i < fls->mirror_array_cnt; i++) { in ff_layout_alloc_lseg()
521 fls->mirror_array[i] = ff_layout_alloc_mirror(dss_count, gfp_flags); in ff_layout_alloc_lseg()
522 if (fls->mirror_array[i] == NULL) { in ff_layout_alloc_lseg()
528 dss_info = &fls->mirror_array[i]->dss[dss_id]; in ff_layout_alloc_lseg()
529 dss_info->mirror = fls->mirror_array[i]; in ff_layout_alloc_lseg()
606 mirror = ff_layout_add_mirror(lh, fls->mirror_array[i]); in ff_layout_alloc_lseg()
607 if (mirror != fls->mirror_array[i]) { in ff_layout_alloc_lseg()
609 dss_info = &fls->mirror_array[i]->dss[dss_id]; in ff_layout_alloc_lseg()
621 ff_layout_free_mirror(fls->mirror_array[i]); in ff_layout_alloc_lseg()
622 fls->mirror_array[i] = mirror; in ff_layout_alloc_lseg()
634 fls->flags = be32_to_cpup(p); in ff_layout_alloc_lseg()
639 for (i=0; i < fls->mirror_array_cnt; i++) in ff_layout_alloc_lseg()
640 fls->mirror_array[i]->report_interval = be32_to_cpup(p); in ff_layout_alloc_lseg()
643 ff_layout_sort_mirrors(fls); in ff_layout_alloc_lseg()
644 ret = &fls->generic_hdr; in ff_layout_alloc_lseg()
650 _ff_layout_free_lseg(fls); in ff_layout_alloc_lseg()
659 struct nfs4_ff_layout_segment *fls = FF_LAYOUT_LSEG(lseg); in ff_layout_free_lseg() local
673 _ff_layout_free_lseg(fls); in ff_layout_free_lseg()
877 struct nfs4_ff_layout_segment *fls = FF_LAYOUT_LSEG(lseg); in ff_layout_choose_ds_for_read() local
883 for (idx = start_idx; idx < fls->mirror_array_cnt; idx++) { in ff_layout_choose_ds_for_read()
886 fls->stripe_unit, in ff_layout_choose_ds_for_read()
887 fls->mirror_array[idx]->dss_count, in ff_layout_choose_ds_for_read()
974 ff_layout_lseg_is_striped(const struct nfs4_ff_layout_segment *fls) in ff_layout_lseg_is_striped() argument
976 return fls->mirror_array[0]->dss_count > 1; in ff_layout_lseg_is_striped()