Lines Matching refs:fls

228 static void ff_layout_free_mirror_array(struct nfs4_ff_layout_segment *fls)  in ff_layout_free_mirror_array()  argument
232 if (fls->mirror_array) { in ff_layout_free_mirror_array()
233 for (i = 0; i < fls->mirror_array_cnt; i++) { in ff_layout_free_mirror_array()
237 ff_layout_put_mirror(fls->mirror_array[i]); in ff_layout_free_mirror_array()
239 kfree(fls->mirror_array); in ff_layout_free_mirror_array()
240 fls->mirror_array = NULL; in ff_layout_free_mirror_array()
262 static void _ff_layout_free_lseg(struct nfs4_ff_layout_segment *fls) in _ff_layout_free_lseg() argument
264 if (fls) { in _ff_layout_free_lseg()
265 ff_layout_free_mirror_array(fls); in _ff_layout_free_lseg()
266 kfree(fls); in _ff_layout_free_lseg()
329 static void ff_layout_sort_mirrors(struct nfs4_ff_layout_segment *fls) in ff_layout_sort_mirrors() argument
333 for (i = 0; i < fls->mirror_array_cnt - 1; i++) { in ff_layout_sort_mirrors()
334 for (j = i + 1; j < fls->mirror_array_cnt; j++) in ff_layout_sort_mirrors()
335 if (fls->mirror_array[i]->efficiency < in ff_layout_sort_mirrors()
336 fls->mirror_array[j]->efficiency) in ff_layout_sort_mirrors()
337 swap(fls->mirror_array[i], in ff_layout_sort_mirrors()
338 fls->mirror_array[j]); in ff_layout_sort_mirrors()
342 static void ff_layout_mark_devices_valid(struct nfs4_ff_layout_segment *fls) in ff_layout_mark_devices_valid() argument
347 if (!(fls->flags & FF_FLAGS_NO_IO_THRU_MDS)) in ff_layout_mark_devices_valid()
349 for (i = 0; i < fls->mirror_array_cnt; i++) { in ff_layout_mark_devices_valid()
350 node = &fls->mirror_array[i]->mirror_ds->id_node; in ff_layout_mark_devices_valid()
361 struct nfs4_ff_layout_segment *fls = NULL; in ff_layout_alloc_lseg() local
395 fls = kzalloc(sizeof(*fls), gfp_flags); in ff_layout_alloc_lseg()
396 if (!fls) in ff_layout_alloc_lseg()
399 fls->mirror_array_cnt = mirror_array_cnt; in ff_layout_alloc_lseg()
400 fls->stripe_unit = stripe_unit; in ff_layout_alloc_lseg()
401 fls->mirror_array = kcalloc(fls->mirror_array_cnt, in ff_layout_alloc_lseg()
402 sizeof(fls->mirror_array[0]), gfp_flags); in ff_layout_alloc_lseg()
403 if (fls->mirror_array == NULL) in ff_layout_alloc_lseg()
406 for (i = 0; i < fls->mirror_array_cnt; i++) { in ff_layout_alloc_lseg()
424 fls->mirror_array[i] = ff_layout_alloc_mirror(gfp_flags); in ff_layout_alloc_lseg()
425 if (fls->mirror_array[i] == NULL) { in ff_layout_alloc_lseg()
430 fls->mirror_array[i]->ds_count = ds_count; in ff_layout_alloc_lseg()
446 fls->mirror_array[i]->mirror_ds = in ff_layout_alloc_lseg()
456 fls->mirror_array[i]->efficiency = be32_to_cpup(p); in ff_layout_alloc_lseg()
459 rc = decode_stateid(&stream, &fls->mirror_array[i]->stateid); in ff_layout_alloc_lseg()
469 fls->mirror_array[i]->fh_versions = in ff_layout_alloc_lseg()
472 if (fls->mirror_array[i]->fh_versions == NULL) { in ff_layout_alloc_lseg()
479 &fls->mirror_array[i]->fh_versions[j]); in ff_layout_alloc_lseg()
484 fls->mirror_array[i]->fh_versions_cnt = fh_count; in ff_layout_alloc_lseg()
487 rc = decode_name(&stream, &fls->mirror_array[i]->uid); in ff_layout_alloc_lseg()
492 rc = decode_name(&stream, &fls->mirror_array[i]->gid); in ff_layout_alloc_lseg()
496 mirror = ff_layout_add_mirror(lh, fls->mirror_array[i]); in ff_layout_alloc_lseg()
497 if (mirror != fls->mirror_array[i]) { in ff_layout_alloc_lseg()
498 ff_layout_free_mirror(fls->mirror_array[i]); in ff_layout_alloc_lseg()
499 fls->mirror_array[i] = mirror; in ff_layout_alloc_lseg()
503 fls->mirror_array[i]->uid, in ff_layout_alloc_lseg()
504 fls->mirror_array[i]->gid); in ff_layout_alloc_lseg()
509 fls->flags = be32_to_cpup(p); in ff_layout_alloc_lseg()
511 ff_layout_sort_mirrors(fls); in ff_layout_alloc_lseg()
515 ff_layout_mark_devices_valid(fls); in ff_layout_alloc_lseg()
517 ret = &fls->generic_hdr; in ff_layout_alloc_lseg()
523 _ff_layout_free_lseg(fls); in ff_layout_alloc_lseg()
543 struct nfs4_ff_layout_segment *fls = FF_LAYOUT_LSEG(lseg); in ff_layout_free_lseg() local
561 _ff_layout_free_lseg(fls); in ff_layout_free_lseg()
566 ff_layout_get_lseg_count(struct nfs4_ff_layout_segment *fls) in ff_layout_get_lseg_count() argument
716 struct nfs4_ff_layout_segment *fls = FF_LAYOUT_LSEG(lseg); in ff_layout_alloc_commit_info() local
729 size = ff_layout_get_lseg_count(fls) * FF_LAYOUT_MIRROR_COUNT(lseg); in ff_layout_alloc_commit_info()
762 struct nfs4_ff_layout_segment *fls = FF_LAYOUT_LSEG(lseg); in ff_layout_choose_best_ds_for_read() local
767 for (idx = start_idx; idx < fls->mirror_array_cnt; idx++) { in ff_layout_choose_best_ds_for_read()