Lines Matching refs:fls
137 static void ff_layout_free_mirror_array(struct nfs4_ff_layout_segment *fls) in ff_layout_free_mirror_array() argument
141 if (fls->mirror_array) { in ff_layout_free_mirror_array()
142 for (i = 0; i < fls->mirror_array_cnt; i++) { in ff_layout_free_mirror_array()
146 if (fls->mirror_array[i]) { in ff_layout_free_mirror_array()
147 kfree(fls->mirror_array[i]->fh_versions); in ff_layout_free_mirror_array()
148 nfs4_ff_layout_put_deviceid(fls->mirror_array[i]->mirror_ds); in ff_layout_free_mirror_array()
149 kfree(fls->mirror_array[i]); in ff_layout_free_mirror_array()
152 kfree(fls->mirror_array); in ff_layout_free_mirror_array()
153 fls->mirror_array = NULL; in ff_layout_free_mirror_array()
175 static void _ff_layout_free_lseg(struct nfs4_ff_layout_segment *fls) in _ff_layout_free_lseg() argument
177 if (fls) { in _ff_layout_free_lseg()
178 ff_layout_free_mirror_array(fls); in _ff_layout_free_lseg()
179 kfree(fls); in _ff_layout_free_lseg()
183 static void ff_layout_sort_mirrors(struct nfs4_ff_layout_segment *fls) in ff_layout_sort_mirrors() argument
188 for (i = 0; i < fls->mirror_array_cnt - 1; i++) { in ff_layout_sort_mirrors()
189 for (j = i + 1; j < fls->mirror_array_cnt; j++) in ff_layout_sort_mirrors()
190 if (fls->mirror_array[i]->efficiency < in ff_layout_sort_mirrors()
191 fls->mirror_array[j]->efficiency) { in ff_layout_sort_mirrors()
192 tmp = fls->mirror_array[i]; in ff_layout_sort_mirrors()
193 fls->mirror_array[i] = fls->mirror_array[j]; in ff_layout_sort_mirrors()
194 fls->mirror_array[j] = tmp; in ff_layout_sort_mirrors()
205 struct nfs4_ff_layout_segment *fls = NULL; in ff_layout_alloc_lseg() local
239 fls = kzalloc(sizeof(*fls), gfp_flags); in ff_layout_alloc_lseg()
240 if (!fls) in ff_layout_alloc_lseg()
243 fls->mirror_array_cnt = mirror_array_cnt; in ff_layout_alloc_lseg()
244 fls->stripe_unit = stripe_unit; in ff_layout_alloc_lseg()
245 fls->mirror_array = kcalloc(fls->mirror_array_cnt, in ff_layout_alloc_lseg()
246 sizeof(fls->mirror_array[0]), gfp_flags); in ff_layout_alloc_lseg()
247 if (fls->mirror_array == NULL) in ff_layout_alloc_lseg()
250 for (i = 0; i < fls->mirror_array_cnt; i++) { in ff_layout_alloc_lseg()
267 fls->mirror_array[i] = in ff_layout_alloc_lseg()
270 if (fls->mirror_array[i] == NULL) { in ff_layout_alloc_lseg()
275 spin_lock_init(&fls->mirror_array[i]->lock); in ff_layout_alloc_lseg()
276 fls->mirror_array[i]->ds_count = ds_count; in ff_layout_alloc_lseg()
292 fls->mirror_array[i]->mirror_ds = in ff_layout_alloc_lseg()
302 fls->mirror_array[i]->efficiency = be32_to_cpup(p); in ff_layout_alloc_lseg()
305 rc = decode_stateid(&stream, &fls->mirror_array[i]->stateid); in ff_layout_alloc_lseg()
315 fls->mirror_array[i]->fh_versions = in ff_layout_alloc_lseg()
318 if (fls->mirror_array[i]->fh_versions == NULL) { in ff_layout_alloc_lseg()
325 &fls->mirror_array[i]->fh_versions[j]); in ff_layout_alloc_lseg()
330 fls->mirror_array[i]->fh_versions_cnt = fh_count; in ff_layout_alloc_lseg()
333 rc = decode_name(&stream, &fls->mirror_array[i]->uid); in ff_layout_alloc_lseg()
338 rc = decode_name(&stream, &fls->mirror_array[i]->gid); in ff_layout_alloc_lseg()
343 fls->mirror_array[i]->uid, in ff_layout_alloc_lseg()
344 fls->mirror_array[i]->gid); in ff_layout_alloc_lseg()
347 ff_layout_sort_mirrors(fls); in ff_layout_alloc_lseg()
352 ret = &fls->generic_hdr; in ff_layout_alloc_lseg()
358 _ff_layout_free_lseg(fls); in ff_layout_alloc_lseg()
378 struct nfs4_ff_layout_segment *fls = FF_LAYOUT_LSEG(lseg); in ff_layout_free_lseg() local
383 for (i = 0; i < fls->mirror_array_cnt; i++) { in ff_layout_free_lseg()
384 if (fls->mirror_array[i]) { in ff_layout_free_lseg()
385 nfs4_ff_layout_put_deviceid(fls->mirror_array[i]->mirror_ds); in ff_layout_free_lseg()
386 fls->mirror_array[i]->mirror_ds = NULL; in ff_layout_free_lseg()
387 if (fls->mirror_array[i]->cred) { in ff_layout_free_lseg()
388 put_rpccred(fls->mirror_array[i]->cred); in ff_layout_free_lseg()
389 fls->mirror_array[i]->cred = NULL; in ff_layout_free_lseg()
408 _ff_layout_free_lseg(fls); in ff_layout_free_lseg()
413 ff_layout_get_lseg_count(struct nfs4_ff_layout_segment *fls) in ff_layout_get_lseg_count() argument
423 struct nfs4_ff_layout_segment *fls = FF_LAYOUT_LSEG(lseg); in ff_layout_alloc_commit_info() local
436 size = ff_layout_get_lseg_count(fls) * FF_LAYOUT_MIRROR_COUNT(lseg); in ff_layout_alloc_commit_info()
468 struct nfs4_ff_layout_segment *fls; in ff_layout_choose_best_ds_for_read() local
472 fls = FF_LAYOUT_LSEG(pgio->pg_lseg); in ff_layout_choose_best_ds_for_read()
474 for (idx = 0; idx < fls->mirror_array_cnt; idx++) { in ff_layout_choose_best_ds_for_read()