Lines Matching refs:chunk
19 struct chunk { struct
54 struct chunk *parity_chunk;
73 struct chunk *chunk; member
100 struct chunk chunks[0];
162 raid5f_chunk_stripe_req(struct chunk *chunk) in raid5f_chunk_stripe_req() argument
164 return SPDK_CONTAINEROF((chunk - chunk->index), struct stripe_request, chunks); in raid5f_chunk_stripe_req()
286 struct chunk *chunk; in raid5f_xor_stripe() local
287 struct chunk *dest_chunk = NULL; in raid5f_xor_stripe()
298 dest_chunk = stripe_req->reconstruct.chunk; in raid5f_xor_stripe()
304 FOR_EACH_CHUNK(stripe_req, chunk) { in raid5f_xor_stripe()
305 if (chunk == dest_chunk) { in raid5f_xor_stripe()
308 r5ch->chunk_xor_iovs[c] = chunk->iovs; in raid5f_xor_stripe()
309 r5ch->chunk_xor_iovcnt[c] = chunk->iovcnt; in raid5f_xor_stripe()
332 FOR_EACH_CHUNK(stripe_req, chunk) { in raid5f_xor_stripe()
333 if (chunk != dest_chunk) { in raid5f_xor_stripe()
334 stripe_req->chunk_xor_md_buffers[c] = chunk->md_buf; in raid5f_xor_stripe()
387 struct chunk *chunk = cb_arg; in raid5f_chunk_complete_bdev_io() local
388 struct stripe_request *stripe_req = raid5f_chunk_stripe_req(chunk); in raid5f_chunk_complete_bdev_io()
425 raid5f_chunk_submit(struct chunk *chunk) in raid5f_chunk_submit() argument
427 struct stripe_request *stripe_req = raid5f_chunk_stripe_req(chunk); in raid5f_chunk_submit()
430 struct raid_base_bdev_info *base_info = &raid_bdev->base_bdev_info[chunk->index]; in raid5f_chunk_submit()
432 chunk->index); in raid5f_chunk_submit()
438 io_opts.metadata = chunk->md_buf; in raid5f_chunk_submit()
449 ret = raid_bdev_writev_blocks_ext(base_info, base_ch, chunk->iovs, chunk->iovcnt, in raid5f_chunk_submit()
451 raid5f_chunk_complete_bdev_io, chunk, &io_opts); in raid5f_chunk_submit()
454 if (chunk == stripe_req->reconstruct.chunk) { in raid5f_chunk_submit()
461 ret = raid_bdev_readv_blocks_ext(base_info, base_ch, chunk->iovs, chunk->iovcnt, in raid5f_chunk_submit()
463 raid5f_chunk_complete_bdev_io, chunk, &io_opts); in raid5f_chunk_submit()
503 raid5f_chunk_set_iovcnt(struct chunk *chunk, int iovcnt) in raid5f_chunk_set_iovcnt() argument
505 if (iovcnt > chunk->iovcnt_max) { in raid5f_chunk_set_iovcnt()
506 struct iovec *iovs = chunk->iovs; in raid5f_chunk_set_iovcnt()
512 chunk->iovs = iovs; in raid5f_chunk_set_iovcnt()
513 chunk->iovcnt_max = iovcnt; in raid5f_chunk_set_iovcnt()
515 chunk->iovcnt = iovcnt; in raid5f_chunk_set_iovcnt()
526 struct chunk *chunk; in raid5f_stripe_request_map_iovecs() local
532 FOR_EACH_DATA_CHUNK(stripe_req, chunk) { in raid5f_stripe_request_map_iovecs()
548 ret = raid5f_chunk_set_iovcnt(chunk, chunk_iovcnt); in raid5f_stripe_request_map_iovecs()
554 chunk->md_buf = raid_io->md_buf + in raid5f_stripe_request_map_iovecs()
559 struct iovec *chunk_iov = &chunk->iovs[i]; in raid5f_stripe_request_map_iovecs()
591 struct chunk *start = &stripe_req->chunks[raid_io->base_bdev_io_submitted]; in raid5f_stripe_request_submit_chunks()
592 struct chunk *chunk; in raid5f_stripe_request_submit_chunks() local
594 FOR_EACH_CHUNK_FROM(stripe_req, chunk, start) { in raid5f_stripe_request_submit_chunks()
595 if (spdk_unlikely(raid5f_chunk_submit(chunk) != 0)) { in raid5f_stripe_request_submit_chunks()
713 struct chunk *chunk; in raid5f_submit_reconstruct_read() local
725 stripe_req->reconstruct.chunk = &stripe_req->chunks[chunk_idx]; in raid5f_submit_reconstruct_read()
730 FOR_EACH_CHUNK(stripe_req, chunk) { in raid5f_submit_reconstruct_read()
731 if (chunk == stripe_req->reconstruct.chunk) { in raid5f_submit_reconstruct_read()
735 ret = raid5f_chunk_set_iovcnt(chunk, raid_io->iovcnt); in raid5f_submit_reconstruct_read()
741 chunk->iovs[i] = raid_io->iovs[i]; in raid5f_submit_reconstruct_read()
744 chunk->md_buf = raid_io_md; in raid5f_submit_reconstruct_read()
746 struct iovec *iov = &chunk->iovs[0]; in raid5f_submit_reconstruct_read()
750 chunk->iovcnt = 1; in raid5f_submit_reconstruct_read()
753 chunk->md_buf = stripe_req->reconstruct.chunk_md_buffers[buf_idx]; in raid5f_submit_reconstruct_read()
837 struct chunk *chunk; in raid5f_stripe_request_free() local
839 FOR_EACH_CHUNK(stripe_req, chunk) { in raid5f_stripe_request_free()
840 free(chunk->iovs); in raid5f_stripe_request_free()
882 struct chunk *chunk; in raid5f_stripe_request_alloc() local
885 stripe_req = calloc(1, sizeof(*stripe_req) + sizeof(*chunk) * raid_bdev->num_base_bdevs); in raid5f_stripe_request_alloc()
893 FOR_EACH_CHUNK(stripe_req, chunk) { in raid5f_stripe_request_alloc()
894 chunk->index = chunk - stripe_req->chunks; in raid5f_stripe_request_alloc()
895 chunk->iovcnt_max = 4; in raid5f_stripe_request_alloc()
896 chunk->iovs = calloc(chunk->iovcnt_max, sizeof(chunk->iovs[0])); in raid5f_stripe_request_alloc()
897 if (!chunk->iovs) { in raid5f_stripe_request_alloc()