Lines Matching refs:fls
275 static void ff_layout_free_mirror_array(struct nfs4_ff_layout_segment *fls)
279 for (i = 0; i < fls->mirror_array_cnt; i++)
280 ff_layout_put_mirror(fls->mirror_array[i]);
283 static void _ff_layout_free_lseg(struct nfs4_ff_layout_segment *fls)
285 if (fls) {
286 ff_layout_free_mirror_array(fls);
287 kfree(fls);
369 static void ff_layout_sort_mirrors(struct nfs4_ff_layout_segment *fls)
373 for (i = 0; i < fls->mirror_array_cnt - 1; i++) {
374 for (j = i + 1; j < fls->mirror_array_cnt; j++)
375 if (fls->mirror_array[i]->efficiency <
376 fls->mirror_array[j]->efficiency)
377 swap(fls->mirror_array[i],
378 fls->mirror_array[j]);
388 struct nfs4_ff_layout_segment *fls = NULL;
422 fls = kzalloc(struct_size(fls, mirror_array, mirror_array_cnt),
424 if (!fls)
427 fls->mirror_array_cnt = mirror_array_cnt;
428 fls->stripe_unit = stripe_unit;
430 for (i = 0; i < fls->mirror_array_cnt; i++) {
449 fls->mirror_array[i] = ff_layout_alloc_mirror(gfp_flags);
450 if (fls->mirror_array[i] == NULL) {
455 fls->mirror_array[i]->ds_count = ds_count;
458 rc = decode_deviceid(&stream, &fls->mirror_array[i]->devid);
467 fls->mirror_array[i]->efficiency = be32_to_cpup(p);
470 rc = decode_pnfs_stateid(&stream, &fls->mirror_array[i]->stateid);
481 fls->mirror_array[i]->fh_versions =
484 if (fls->mirror_array[i]->fh_versions == NULL) {
491 &fls->mirror_array[i]->fh_versions[j]);
496 fls->mirror_array[i]->fh_versions_cnt = fh_count;
527 rcu_assign_pointer(fls->mirror_array[i]->ro_cred, cred);
529 rcu_assign_pointer(fls->mirror_array[i]->rw_cred, cred);
531 mirror = ff_layout_add_mirror(lh, fls->mirror_array[i]);
532 if (mirror != fls->mirror_array[i]) {
536 rcu_assign_pointer(fls->mirror_array[i]->ro_cred, cred);
539 rcu_assign_pointer(fls->mirror_array[i]->rw_cred, cred);
541 ff_layout_free_mirror(fls->mirror_array[i]);
542 fls->mirror_array[i] = mirror;
554 fls->flags = be32_to_cpup(p);
559 for (i=0; i < fls->mirror_array_cnt; i++)
560 fls->mirror_array[i]->report_interval = be32_to_cpup(p);
563 ff_layout_sort_mirrors(fls);
564 ret = &fls->generic_hdr;
570 _ff_layout_free_lseg(fls);
579 struct nfs4_ff_layout_segment *fls = FF_LAYOUT_LSEG(lseg);
593 _ff_layout_free_lseg(fls);
763 struct nfs4_ff_layout_segment *fls = FF_LAYOUT_LSEG(lseg);
769 for (idx = start_idx; idx < fls->mirror_array_cnt; idx++) {