Lines Matching refs:chunk

13  * pcl_free - Release all memory associated with a parsed chunk list
14 * @pcl: parsed chunk list
20 struct svc_rdma_chunk *chunk;
22 chunk = pcl_first_chunk(pcl);
23 list_del(&chunk->ch_list);
24 kfree(chunk);
30 struct svc_rdma_chunk *chunk;
32 chunk = kmalloc(struct_size(chunk, ch_segments, segcount), GFP_KERNEL);
33 if (!chunk)
36 chunk->ch_position = position;
37 chunk->ch_length = 0;
38 chunk->ch_payload_length = 0;
39 chunk->ch_segcount = 0;
40 return chunk;
56 struct svc_rdma_chunk *chunk)
61 if (pos->ch_position > chunk->ch_position)
64 __list_add(&chunk->ch_list, pos->ch_list.prev, &pos->ch_list);
69 struct svc_rdma_chunk *chunk,
74 segment = &chunk->ch_segments[chunk->ch_segcount];
79 trace_svcrdma_decode_rseg(&rctxt->rc_cid, chunk, segment);
81 chunk->ch_length += length;
82 chunk->ch_segcount++;
86 * pcl_alloc_call - Construct a parsed chunk list for the Call body
97 * %true: Parsed chunk list was successfully constructed, and
109 struct svc_rdma_chunk *chunk;
120 chunk = pcl_alloc_chunk(segcount, position);
121 if (!chunk)
123 pcl_insert_position(pcl, chunk);
125 chunk = list_first_entry(&pcl->cl_chunks,
130 pcl_set_read_segment(rctxt, chunk, handle, length, offset);
137 * pcl_alloc_read - Construct a parsed chunk list for normal Read chunks
148 * %true: Parsed chunk list was successfully constructed, and
154 * - Check for chunk range overlaps
163 struct svc_rdma_chunk *chunk;
173 chunk = pcl_lookup_position(pcl, position);
174 if (!chunk) {
175 chunk = pcl_alloc_chunk(segcount, position);
176 if (!chunk)
178 pcl_insert_position(pcl, chunk);
181 pcl_set_read_segment(rctxt, chunk, handle, length, offset);
188 * pcl_alloc_write - Construct a parsed chunk list from a Write list
190 * @pcl: Parsed chunk list to populate
198 * %true: Parsed chunk list was successfully constructed.
205 struct svc_rdma_chunk *chunk;
213 chunk = pcl_alloc_chunk(segcount, 0);
214 if (!chunk)
216 list_add_tail(&chunk->ch_list, &pcl->cl_chunks);
219 segment = &chunk->ch_segments[j];
223 trace_svcrdma_decode_wseg(&rctxt->rc_cid, chunk, j);
225 chunk->ch_length += segment->rs_length;
226 chunk->ch_segcount++;
270 struct svc_rdma_chunk *chunk, *next;
274 chunk = pcl_first_chunk(pcl);
277 if (!chunk || !chunk->ch_payload_length)
281 ret = pcl_process_region(xdr, 0, chunk->ch_position, actor, data);
286 while ((next = pcl_next_chunk(pcl, chunk))) {
290 start = pcl_chunk_end_offset(chunk);
296 chunk = next;
300 start = pcl_chunk_end_offset(chunk);