• Home
  • Raw
  • Download

Lines Matching full:disks

38  * blocks[disks-2] and the 'Q' destination address at blocks[disks-1]
52 const unsigned char *scfs, int disks, in do_async_gen_syndrome() argument
62 int src_cnt = disks - 2; in do_async_gen_syndrome()
92 dma_dest[0] = unmap->addr[disks - 2]; in do_async_gen_syndrome()
93 dma_dest[1] = unmap->addr[disks - 1]; in do_async_gen_syndrome()
123 do_sync_gen_syndrome(struct page **blocks, unsigned int offset, int disks, in do_sync_gen_syndrome() argument
128 int start = -1, stop = disks - 3; in do_sync_gen_syndrome()
135 for (i = 0; i < disks; i++) { in do_sync_gen_syndrome()
137 BUG_ON(i > disks - 3); /* P or Q can't be zero */ in do_sync_gen_syndrome()
141 if (i < disks - 2) { in do_sync_gen_syndrome()
151 raid6_call.xor_syndrome(disks, start, stop, len, srcs); in do_sync_gen_syndrome()
153 raid6_call.gen_syndrome(disks, len, srcs); in do_sync_gen_syndrome()
159 * @blocks: source blocks from idx 0..disks-3, P @ disks-2 and Q @ disks-1
161 * @disks: number of blocks (including missing P or Q, see below)
168 * 'disks' note: callers can optionally omit either P or Q (but not
169 * both) from the calculation by setting blocks[disks-2] or
170 * blocks[disks-1] to NULL. When P or Q is omitted 'len' must be <=
172 * synchronous path. 'disks' always accounts for both destination
173 * buffers. If any source buffers (blocks[i] where i < disks - 2) are
179 async_gen_syndrome(struct page **blocks, unsigned int offset, int disks, in async_gen_syndrome() argument
182 int src_cnt = disks - 2; in async_gen_syndrome()
184 &P(blocks, disks), 2, in async_gen_syndrome()
189 BUG_ON(disks > MAX_DISKS || !(P(blocks, disks) || Q(blocks, disks))); in async_gen_syndrome()
192 unmap = dmaengine_get_unmap_data(device->dev, disks, GFP_NOWAIT); in async_gen_syndrome()
205 pr_debug("%s: (async) disks: %d len: %zu\n", in async_gen_syndrome()
206 __func__, disks, len); in async_gen_syndrome()
227 if (P(blocks, disks)) in async_gen_syndrome()
228 unmap->addr[j++] = dma_map_page(device->dev, P(blocks, disks), in async_gen_syndrome()
236 if (Q(blocks, disks)) in async_gen_syndrome()
237 unmap->addr[j++] = dma_map_page(device->dev, Q(blocks, disks), in async_gen_syndrome()
252 pr_debug("%s: (sync) disks: %d len: %zu\n", __func__, disks, len); in async_gen_syndrome()
257 if (!P(blocks, disks)) { in async_gen_syndrome()
258 P(blocks, disks) = pq_scribble_page; in async_gen_syndrome()
261 if (!Q(blocks, disks)) { in async_gen_syndrome()
262 Q(blocks, disks) = pq_scribble_page; in async_gen_syndrome()
265 do_sync_gen_syndrome(blocks, offset, disks, len, submit); in async_gen_syndrome()
272 pq_val_chan(struct async_submit_ctl *submit, struct page **blocks, int disks, size_t len) in pq_val_chan() argument
278 disks, len); in pq_val_chan()
283 * @blocks: source blocks from idx 0..disks-3, P @ disks-2 and Q @ disks-1
285 * @disks: number of blocks (including missing P or Q, see below)
292 * and 'disks' parameters of this routine. The synchronous path
297 async_syndrome_val(struct page **blocks, unsigned int offset, int disks, in async_syndrome_val() argument
301 struct dma_chan *chan = pq_val_chan(submit, blocks, disks, len); in async_syndrome_val()
308 BUG_ON(disks < 4 || disks > MAX_DISKS); in async_syndrome_val()
311 unmap = dmaengine_get_unmap_data(device->dev, disks, GFP_NOWAIT); in async_syndrome_val()
313 if (unmap && disks <= dma_maxpq(device, 0) && in async_syndrome_val()
319 pr_debug("%s: (async) disks: %d len: %zu\n", in async_syndrome_val()
320 __func__, disks, len); in async_syndrome_val()
323 for (i = 0; i < disks-2; i++) in async_syndrome_val()
334 if (!P(blocks, disks)) { in async_syndrome_val()
338 pq[0] = dma_map_page(dev, P(blocks, disks), in async_syndrome_val()
344 if (!Q(blocks, disks)) { in async_syndrome_val()
348 pq[1] = dma_map_page(dev, Q(blocks, disks), in async_syndrome_val()
373 struct page *p_src = P(blocks, disks); in async_syndrome_val()
374 struct page *q_src = Q(blocks, disks); in async_syndrome_val()
381 pr_debug("%s: (sync) disks: %d len: %zu\n", in async_syndrome_val()
382 __func__, disks, len); in async_syndrome_val()
400 tx = async_xor(spare, blocks, offset, disks-2, len, submit); in async_syndrome_val()
408 P(blocks, disks) = NULL; in async_syndrome_val()
409 Q(blocks, disks) = spare; in async_syndrome_val()
411 tx = async_gen_syndrome(blocks, offset, disks, len, submit); in async_syndrome_val()
419 P(blocks, disks) = p_src; in async_syndrome_val()
420 Q(blocks, disks) = q_src; in async_syndrome_val()