Lines Matching refs:fls
252 static void ff_layout_free_mirror_array(struct nfs4_ff_layout_segment *fls)
256 for (i = 0; i < fls->mirror_array_cnt; i++)
257 ff_layout_put_mirror(fls->mirror_array[i]);
260 static void _ff_layout_free_lseg(struct nfs4_ff_layout_segment *fls)
262 if (fls) {
263 ff_layout_free_mirror_array(fls);
264 kfree(fls);
346 static void ff_layout_sort_mirrors(struct nfs4_ff_layout_segment *fls)
350 for (i = 0; i < fls->mirror_array_cnt - 1; i++) {
351 for (j = i + 1; j < fls->mirror_array_cnt; j++)
352 if (fls->mirror_array[i]->efficiency <
353 fls->mirror_array[j]->efficiency)
354 swap(fls->mirror_array[i],
355 fls->mirror_array[j]);
365 struct nfs4_ff_layout_segment *fls = NULL;
399 fls = kzalloc(struct_size(fls, mirror_array, mirror_array_cnt),
401 if (!fls)
404 fls->mirror_array_cnt = mirror_array_cnt;
405 fls->stripe_unit = stripe_unit;
407 for (i = 0; i < fls->mirror_array_cnt; i++) {
426 fls->mirror_array[i] = ff_layout_alloc_mirror(gfp_flags);
427 if (fls->mirror_array[i] == NULL) {
432 fls->mirror_array[i]->ds_count = ds_count;
435 rc = decode_deviceid(&stream, &fls->mirror_array[i]->devid);
444 fls->mirror_array[i]->efficiency = be32_to_cpup(p);
447 rc = decode_pnfs_stateid(&stream, &fls->mirror_array[i]->stateid);
458 fls->mirror_array[i]->fh_versions =
461 if (fls->mirror_array[i]->fh_versions == NULL) {
468 &fls->mirror_array[i]->fh_versions[j]);
473 fls->mirror_array[i]->fh_versions_cnt = fh_count;
504 rcu_assign_pointer(fls->mirror_array[i]->ro_cred, cred);
506 rcu_assign_pointer(fls->mirror_array[i]->rw_cred, cred);
508 mirror = ff_layout_add_mirror(lh, fls->mirror_array[i]);
509 if (mirror != fls->mirror_array[i]) {
513 rcu_assign_pointer(fls->mirror_array[i]->ro_cred, cred);
516 rcu_assign_pointer(fls->mirror_array[i]->rw_cred, cred);
518 ff_layout_free_mirror(fls->mirror_array[i]);
519 fls->mirror_array[i] = mirror;
531 fls->flags = be32_to_cpup(p);
536 for (i=0; i < fls->mirror_array_cnt; i++)
537 fls->mirror_array[i]->report_interval = be32_to_cpup(p);
540 ff_layout_sort_mirrors(fls);
541 ret = &fls->generic_hdr;
547 _ff_layout_free_lseg(fls);
556 struct nfs4_ff_layout_segment *fls = FF_LAYOUT_LSEG(lseg);
570 _ff_layout_free_lseg(fls);
740 struct nfs4_ff_layout_segment *fls = FF_LAYOUT_LSEG(lseg);
747 for (idx = start_idx; idx < fls->mirror_array_cnt; idx++) {
748 if (idx+1 == fls->mirror_array_cnt)