Lines Matching refs:fio

44 static int fec_decode_rs8(struct dm_verity *v, struct dm_verity_fec_io *fio,  in fec_decode_rs8()  argument
53 return decode_rs8(fio->rs, data, par, v->fec->rsn, NULL, neras, in fec_decode_rs8()
54 fio->erasures, 0, NULL); in fec_decode_rs8()
104 struct dm_verity_fec_io *fio, in fec_buffer_rs_block() argument
107 return &fio->bufs[i][j * v->fec->rsn]; in fec_buffer_rs_block()
123 static int fec_decode_bufs(struct dm_verity *v, struct dm_verity_fec_io *fio, in fec_decode_bufs() argument
140 fec_for_each_buffer_rs_block(fio, n, i) { in fec_decode_bufs()
141 block = fec_buffer_rs_block(v, fio, n, i); in fec_decode_bufs()
142 res = fec_decode_rs8(v, fio, block, &par[offset], neras); in fec_decode_bufs()
149 fio->output[block_offset] = block[byte_index]; in fec_decode_bufs()
207 struct dm_verity_fec_io *fio = fec_io(io); in fec_read_bufs() local
259 fio->erasures[(*neras)++] = i; in fec_read_bufs()
278 fio->erasures[(*neras)++] = i; in fec_read_bufs()
285 fec_for_each_buffer_rs_block(fio, n, j) { in fec_read_bufs()
291 rs_block = fec_buffer_rs_block(v, fio, n, j); in fec_read_bufs()
305 static int fec_alloc_bufs(struct dm_verity *v, struct dm_verity_fec_io *fio) in fec_alloc_bufs() argument
309 if (!fio->rs) in fec_alloc_bufs()
310 fio->rs = mempool_alloc(&v->fec->rs_pool, GFP_NOIO); in fec_alloc_bufs()
313 if (fio->bufs[n]) in fec_alloc_bufs()
316 fio->bufs[n] = mempool_alloc(&v->fec->prealloc_pool, GFP_NOWAIT); in fec_alloc_bufs()
317 if (unlikely(!fio->bufs[n])) { in fec_alloc_bufs()
324 fec_for_each_extra_buffer(fio, n) { in fec_alloc_bufs()
325 if (fio->bufs[n]) in fec_alloc_bufs()
328 fio->bufs[n] = mempool_alloc(&v->fec->extra_pool, GFP_NOWAIT); in fec_alloc_bufs()
330 if (unlikely(!fio->bufs[n])) in fec_alloc_bufs()
333 fio->nbufs = n; in fec_alloc_bufs()
335 if (!fio->output) in fec_alloc_bufs()
336 fio->output = mempool_alloc(&v->fec->output_pool, GFP_NOIO); in fec_alloc_bufs()
345 static void fec_init_bufs(struct dm_verity *v, struct dm_verity_fec_io *fio) in fec_init_bufs() argument
349 fec_for_each_buffer(fio, n) in fec_init_bufs()
350 memset(fio->bufs[n], 0, v->fec->rsn << DM_VERITY_FEC_BUF_RS_BITS); in fec_init_bufs()
352 memset(fio->erasures, 0, sizeof(fio->erasures)); in fec_init_bufs()
361 struct dm_verity_fec_io *fio, u64 rsb, u64 offset, in fec_decode_rsb() argument
367 r = fec_alloc_bufs(v, fio); in fec_decode_rsb()
372 fec_init_bufs(v, fio); in fec_decode_rsb()
379 r = fec_decode_bufs(v, fio, rsb, r, pos, neras); in fec_decode_rsb()
383 pos += fio->nbufs << DM_VERITY_FEC_BUF_RS_BITS; in fec_decode_rsb()
387 r = verity_hash(v, verity_io_hash_req(v, io), fio->output, in fec_decode_rsb()
406 struct dm_verity_fec_io *fio = fec_io(io); in fec_bv_copy() local
408 memcpy(data, &fio->output[fio->output_pos], len); in fec_bv_copy()
409 fio->output_pos += len; in fec_bv_copy()
423 struct dm_verity_fec_io *fio = fec_io(io); in verity_fec_decode() local
429 if (fio->level >= DM_VERITY_FEC_MAX_RECURSION) { in verity_fec_decode()
434 fio->level++; in verity_fec_decode()
463 r = fec_decode_rsb(v, io, fio, rsb, offset, false); in verity_fec_decode()
465 r = fec_decode_rsb(v, io, fio, rsb, offset, true); in verity_fec_decode()
471 memcpy(dest, fio->output, 1 << v->data_dev_block_bits); in verity_fec_decode()
473 fio->output_pos = 0; in verity_fec_decode()
478 fio->level--; in verity_fec_decode()
489 struct dm_verity_fec_io *fio = fec_io(io); in verity_fec_finish_io() local
494 mempool_free(fio->rs, &f->rs_pool); in verity_fec_finish_io()
497 mempool_free(fio->bufs[n], &f->prealloc_pool); in verity_fec_finish_io()
499 fec_for_each_extra_buffer(fio, n) in verity_fec_finish_io()
500 mempool_free(fio->bufs[n], &f->extra_pool); in verity_fec_finish_io()
502 mempool_free(fio->output, &f->output_pool); in verity_fec_finish_io()
510 struct dm_verity_fec_io *fio = fec_io(io); in verity_fec_init_io() local
515 fio->rs = NULL; in verity_fec_init_io()
516 memset(fio->bufs, 0, sizeof(fio->bufs)); in verity_fec_init_io()
517 fio->nbufs = 0; in verity_fec_init_io()
518 fio->output = NULL; in verity_fec_init_io()
519 fio->level = 0; in verity_fec_init_io()