Lines Matching refs:fls

249 static void ff_layout_free_mirror_array(struct nfs4_ff_layout_segment *fls)  in ff_layout_free_mirror_array()  argument
253 if (fls->mirror_array) { in ff_layout_free_mirror_array()
254 for (i = 0; i < fls->mirror_array_cnt; i++) { in ff_layout_free_mirror_array()
258 ff_layout_put_mirror(fls->mirror_array[i]); in ff_layout_free_mirror_array()
260 kfree(fls->mirror_array); in ff_layout_free_mirror_array()
261 fls->mirror_array = NULL; in ff_layout_free_mirror_array()
283 static void _ff_layout_free_lseg(struct nfs4_ff_layout_segment *fls) in _ff_layout_free_lseg() argument
285 if (fls) { in _ff_layout_free_lseg()
286 ff_layout_free_mirror_array(fls); in _ff_layout_free_lseg()
287 kfree(fls); in _ff_layout_free_lseg()
350 static void ff_layout_sort_mirrors(struct nfs4_ff_layout_segment *fls) in ff_layout_sort_mirrors() argument
354 for (i = 0; i < fls->mirror_array_cnt - 1; i++) { in ff_layout_sort_mirrors()
355 for (j = i + 1; j < fls->mirror_array_cnt; j++) in ff_layout_sort_mirrors()
356 if (fls->mirror_array[i]->efficiency < in ff_layout_sort_mirrors()
357 fls->mirror_array[j]->efficiency) in ff_layout_sort_mirrors()
358 swap(fls->mirror_array[i], in ff_layout_sort_mirrors()
359 fls->mirror_array[j]); in ff_layout_sort_mirrors()
369 struct nfs4_ff_layout_segment *fls = NULL; in ff_layout_alloc_lseg() local
403 fls = kzalloc(sizeof(*fls), gfp_flags); in ff_layout_alloc_lseg()
404 if (!fls) in ff_layout_alloc_lseg()
407 fls->mirror_array_cnt = mirror_array_cnt; in ff_layout_alloc_lseg()
408 fls->stripe_unit = stripe_unit; in ff_layout_alloc_lseg()
409 fls->mirror_array = kcalloc(fls->mirror_array_cnt, in ff_layout_alloc_lseg()
410 sizeof(fls->mirror_array[0]), gfp_flags); in ff_layout_alloc_lseg()
411 if (fls->mirror_array == NULL) in ff_layout_alloc_lseg()
414 for (i = 0; i < fls->mirror_array_cnt; i++) { in ff_layout_alloc_lseg()
431 fls->mirror_array[i] = ff_layout_alloc_mirror(gfp_flags); in ff_layout_alloc_lseg()
432 if (fls->mirror_array[i] == NULL) { in ff_layout_alloc_lseg()
437 fls->mirror_array[i]->ds_count = ds_count; in ff_layout_alloc_lseg()
440 rc = decode_deviceid(&stream, &fls->mirror_array[i]->devid); in ff_layout_alloc_lseg()
449 fls->mirror_array[i]->efficiency = be32_to_cpup(p); in ff_layout_alloc_lseg()
452 rc = decode_pnfs_stateid(&stream, &fls->mirror_array[i]->stateid); in ff_layout_alloc_lseg()
463 fls->mirror_array[i]->fh_versions = in ff_layout_alloc_lseg()
466 if (fls->mirror_array[i]->fh_versions == NULL) { in ff_layout_alloc_lseg()
473 &fls->mirror_array[i]->fh_versions[j]); in ff_layout_alloc_lseg()
478 fls->mirror_array[i]->fh_versions_cnt = fh_count; in ff_layout_alloc_lseg()
502 rcu_assign_pointer(fls->mirror_array[i]->ro_cred, cred); in ff_layout_alloc_lseg()
504 rcu_assign_pointer(fls->mirror_array[i]->rw_cred, cred); in ff_layout_alloc_lseg()
506 mirror = ff_layout_add_mirror(lh, fls->mirror_array[i]); in ff_layout_alloc_lseg()
507 if (mirror != fls->mirror_array[i]) { in ff_layout_alloc_lseg()
511 rcu_assign_pointer(fls->mirror_array[i]->ro_cred, cred); in ff_layout_alloc_lseg()
514 rcu_assign_pointer(fls->mirror_array[i]->rw_cred, cred); in ff_layout_alloc_lseg()
516 ff_layout_free_mirror(fls->mirror_array[i]); in ff_layout_alloc_lseg()
517 fls->mirror_array[i] = mirror; in ff_layout_alloc_lseg()
529 fls->flags = be32_to_cpup(p); in ff_layout_alloc_lseg()
534 for (i=0; i < fls->mirror_array_cnt; i++) in ff_layout_alloc_lseg()
535 fls->mirror_array[i]->report_interval = be32_to_cpup(p); in ff_layout_alloc_lseg()
538 ff_layout_sort_mirrors(fls); in ff_layout_alloc_lseg()
542 ret = &fls->generic_hdr; in ff_layout_alloc_lseg()
548 _ff_layout_free_lseg(fls); in ff_layout_alloc_lseg()
568 struct nfs4_ff_layout_segment *fls = FF_LAYOUT_LSEG(lseg); in ff_layout_free_lseg() local
586 _ff_layout_free_lseg(fls); in ff_layout_free_lseg()
591 ff_layout_get_lseg_count(struct nfs4_ff_layout_segment *fls) in ff_layout_get_lseg_count() argument
745 struct nfs4_ff_layout_segment *fls = FF_LAYOUT_LSEG(lseg); in ff_layout_alloc_commit_info() local
758 size = ff_layout_get_lseg_count(fls) * FF_LAYOUT_MIRROR_COUNT(lseg); in ff_layout_alloc_commit_info()
791 struct nfs4_ff_layout_segment *fls = FF_LAYOUT_LSEG(lseg); in ff_layout_choose_best_ds_for_read() local
797 for (idx = start_idx; idx < fls->mirror_array_cnt; idx++) { in ff_layout_choose_best_ds_for_read()
798 if (idx+1 == fls->mirror_array_cnt) in ff_layout_choose_best_ds_for_read()