Lines Matching +full:- +full:i
3 * Copyright (c) 1995 Carnegie-Mellon University.
23 * Pittsburgh PA 15213-3890
58 * creates a DAG to perform a large-write operation:
61 * H -- NIL- Rod - NIL - Wnd ------ NIL - T
62 * \ Rod / \ Xor - Lpo /
89 int nWndNodes, nRodNodes, i; in rf_CommonCreateParityLoggingLargeWriteDAG() local
90 RF_RaidLayout_t *layoutPtr = &(raidPtr->Layout); in rf_CommonCreateParityLoggingLargeWriteDAG()
96 …RF_StripeNum_t parityStripeID = rf_RaidAddressToParityStripeID(&(raidPtr->Layout), asmap->raidAddr… in rf_CommonCreateParityLoggingLargeWriteDAG()
99 printf("[Creating parity-logging large-write DAG]\n"); in rf_CommonCreateParityLoggingLargeWriteDAG()
101 dag_h->creator = "ParityLoggingLargeWriteDAG"; in rf_CommonCreateParityLoggingLargeWriteDAG()
104 nWndNodes = asmap->numStripeUnitsAccessed; in rf_CommonCreateParityLoggingLargeWriteDAG()
106 i = 0; in rf_CommonCreateParityLoggingLargeWriteDAG()
107 wndNodes = &nodes[i]; in rf_CommonCreateParityLoggingLargeWriteDAG()
108 i += nWndNodes; in rf_CommonCreateParityLoggingLargeWriteDAG()
109 xorNode = &nodes[i]; in rf_CommonCreateParityLoggingLargeWriteDAG()
110 i += 1; in rf_CommonCreateParityLoggingLargeWriteDAG()
111 lpoNode = &nodes[i]; in rf_CommonCreateParityLoggingLargeWriteDAG()
112 i += 1; in rf_CommonCreateParityLoggingLargeWriteDAG()
113 blockNode = &nodes[i]; in rf_CommonCreateParityLoggingLargeWriteDAG()
114 i += 1; in rf_CommonCreateParityLoggingLargeWriteDAG()
115 syncNode = &nodes[i]; in rf_CommonCreateParityLoggingLargeWriteDAG()
116 i += 1; in rf_CommonCreateParityLoggingLargeWriteDAG()
117 unblockNode = &nodes[i]; in rf_CommonCreateParityLoggingLargeWriteDAG()
118 i += 1; in rf_CommonCreateParityLoggingLargeWriteDAG()
119 termNode = &nodes[i]; in rf_CommonCreateParityLoggingLargeWriteDAG()
120 i += 1; in rf_CommonCreateParityLoggingLargeWriteDAG()
122 dag_h->numCommitNodes = nWndNodes + 1; in rf_CommonCreateParityLoggingLargeWriteDAG()
123 dag_h->numCommits = 0; in rf_CommonCreateParityLoggingLargeWriteDAG()
124 dag_h->numSuccedents = 1; in rf_CommonCreateParityLoggingLargeWriteDAG()
140 pda = new_asm_h[asmNum]->stripeMap->physInfo; in rf_CommonCreateParityLoggingLargeWriteDAG()
144 rodNodes[nodeNum].params[1].p = pda->bufPtr; in rf_CommonCreateParityLoggingLargeWriteDAG()
148 pda = pda->next; in rf_CommonCreateParityLoggingLargeWriteDAG()
155 pda = asmap->physInfo; in rf_CommonCreateParityLoggingLargeWriteDAG()
156 for (i = 0; i < nWndNodes; i++) { in rf_CommonCreateParityLoggingLargeWriteDAG()
157 …rf_InitNode(&wndNodes[i], rf_wait, RF_TRUE, rf_DiskWriteFunc, rf_DiskWriteUndoFunc, rf_GenericWake… in rf_CommonCreateParityLoggingLargeWriteDAG()
159 wndNodes[i].params[0].p = pda; in rf_CommonCreateParityLoggingLargeWriteDAG()
160 wndNodes[i].params[1].p = pda->bufPtr; in rf_CommonCreateParityLoggingLargeWriteDAG()
161 wndNodes[i].params[2].v = parityStripeID; in rf_CommonCreateParityLoggingLargeWriteDAG()
162 wndNodes[i].params[3].v = RF_CREATE_PARAM3(RF_IO_NORMAL_PRIORITY, which_ru); in rf_CommonCreateParityLoggingLargeWriteDAG()
163 pda = pda->next; in rf_CommonCreateParityLoggingLargeWriteDAG()
168 xorNode->flags |= RF_DAGNODE_FLAG_YIELD; in rf_CommonCreateParityLoggingLargeWriteDAG()
169 for (i = 0; i < nWndNodes; i++) { in rf_CommonCreateParityLoggingLargeWriteDAG()
170 xorNode->params[2 * i + 0] = wndNodes[i].params[0]; /* pda */ in rf_CommonCreateParityLoggingLargeWriteDAG()
171 xorNode->params[2 * i + 1] = wndNodes[i].params[1]; /* buf ptr */ in rf_CommonCreateParityLoggingLargeWriteDAG()
173 for (i = 0; i < nRodNodes; i++) { in rf_CommonCreateParityLoggingLargeWriteDAG()
174 xorNode->params[2 * (nWndNodes + i) + 0] = rodNodes[i].params[0]; /* pda */ in rf_CommonCreateParityLoggingLargeWriteDAG()
175 xorNode->params[2 * (nWndNodes + i) + 1] = rodNodes[i].params[1]; /* buf ptr */ in rf_CommonCreateParityLoggingLargeWriteDAG()
177 xorNode->params[2 * (nWndNodes + nRodNodes)].p = raidPtr; /* xor node needs to get in rf_CommonCreateParityLoggingLargeWriteDAG()
184 for (i = 0; i < nRodNodes; i++) in rf_CommonCreateParityLoggingLargeWriteDAG()
185 …if (((RF_PhysDiskAddr_t *) rodNodes[i].params[0].p)->numSector == raidPtr->Layout.sectorsPerStripe… in rf_CommonCreateParityLoggingLargeWriteDAG()
187 if (i == nRodNodes) { in rf_CommonCreateParityLoggingLargeWriteDAG()
188 xorNode->results[0] = RF_MallocAndAdd(rf_RaidAddressToByte( in rf_CommonCreateParityLoggingLargeWriteDAG()
189 raidPtr, raidPtr->Layout.sectorsPerStripeUnit), allocList); in rf_CommonCreateParityLoggingLargeWriteDAG()
191 xorNode->results[0] = rodNodes[i].params[1].p; in rf_CommonCreateParityLoggingLargeWriteDAG()
197 lpoNode->params[0].p = asmap->parityInfo; in rf_CommonCreateParityLoggingLargeWriteDAG()
198 lpoNode->params[1].p = xorNode->results[0]; in rf_CommonCreateParityLoggingLargeWriteDAG()
199 RF_ASSERT(asmap->parityInfo->next == NULL); /* parityInfo must in rf_CommonCreateParityLoggingLargeWriteDAG()
206 RF_ASSERT(dag_h->numSuccedents == 1); in rf_CommonCreateParityLoggingLargeWriteDAG()
207 RF_ASSERT(blockNode->numAntecedents == 0); in rf_CommonCreateParityLoggingLargeWriteDAG()
208 dag_h->succedents[0] = blockNode; in rf_CommonCreateParityLoggingLargeWriteDAG()
211 RF_ASSERT(blockNode->numSuccedents == nRodNodes + 1); in rf_CommonCreateParityLoggingLargeWriteDAG()
212 for (i = 0; i < nRodNodes; i++) { in rf_CommonCreateParityLoggingLargeWriteDAG()
213 RF_ASSERT(rodNodes[i].numAntecedents == 1); in rf_CommonCreateParityLoggingLargeWriteDAG()
214 blockNode->succedents[i] = &rodNodes[i]; in rf_CommonCreateParityLoggingLargeWriteDAG()
215 rodNodes[i].antecedents[0] = blockNode; in rf_CommonCreateParityLoggingLargeWriteDAG()
216 rodNodes[i].antType[0] = rf_control; in rf_CommonCreateParityLoggingLargeWriteDAG()
221 RF_ASSERT(syncNode->numAntecedents == nRodNodes + 1); in rf_CommonCreateParityLoggingLargeWriteDAG()
222 blockNode->succedents[nRodNodes] = syncNode; in rf_CommonCreateParityLoggingLargeWriteDAG()
223 syncNode->antecedents[0] = blockNode; in rf_CommonCreateParityLoggingLargeWriteDAG()
224 syncNode->antType[0] = rf_control; in rf_CommonCreateParityLoggingLargeWriteDAG()
227 for (i = 0; i < nRodNodes; i++) { in rf_CommonCreateParityLoggingLargeWriteDAG()
228 rodNodes[i].succedents[0] = syncNode; in rf_CommonCreateParityLoggingLargeWriteDAG()
229 syncNode->antecedents[1 + i] = &rodNodes[i]; in rf_CommonCreateParityLoggingLargeWriteDAG()
230 syncNode->antType[1 + i] = rf_control; in rf_CommonCreateParityLoggingLargeWriteDAG()
234 RF_ASSERT(syncNode->numSuccedents == nWndNodes + 1); in rf_CommonCreateParityLoggingLargeWriteDAG()
235 RF_ASSERT(xorNode->numAntecedents == 1); in rf_CommonCreateParityLoggingLargeWriteDAG()
236 syncNode->succedents[0] = xorNode; in rf_CommonCreateParityLoggingLargeWriteDAG()
237 xorNode->antecedents[0] = syncNode; in rf_CommonCreateParityLoggingLargeWriteDAG()
238 xorNode->antType[0] = rf_trueData; /* carry forward from sync */ in rf_CommonCreateParityLoggingLargeWriteDAG()
241 for (i = 0; i < nWndNodes; i++) { in rf_CommonCreateParityLoggingLargeWriteDAG()
242 RF_ASSERT(wndNodes->numAntecedents == 1); in rf_CommonCreateParityLoggingLargeWriteDAG()
243 syncNode->succedents[1 + i] = &wndNodes[i]; in rf_CommonCreateParityLoggingLargeWriteDAG()
244 wndNodes[i].antecedents[0] = syncNode; in rf_CommonCreateParityLoggingLargeWriteDAG()
245 wndNodes[i].antType[0] = rf_control; in rf_CommonCreateParityLoggingLargeWriteDAG()
249 RF_ASSERT(xorNode->numSuccedents == 1); in rf_CommonCreateParityLoggingLargeWriteDAG()
250 RF_ASSERT(lpoNode->numAntecedents == 1); in rf_CommonCreateParityLoggingLargeWriteDAG()
251 xorNode->succedents[0] = lpoNode; in rf_CommonCreateParityLoggingLargeWriteDAG()
252 lpoNode->antecedents[0] = xorNode; in rf_CommonCreateParityLoggingLargeWriteDAG()
253 lpoNode->antType[0] = rf_trueData; in rf_CommonCreateParityLoggingLargeWriteDAG()
256 RF_ASSERT(unblockNode->numAntecedents == nWndNodes + 1); in rf_CommonCreateParityLoggingLargeWriteDAG()
257 for (i = 0; i < nWndNodes; i++) { in rf_CommonCreateParityLoggingLargeWriteDAG()
258 RF_ASSERT(wndNodes->numSuccedents == 1); in rf_CommonCreateParityLoggingLargeWriteDAG()
259 wndNodes[i].succedents[0] = unblockNode; in rf_CommonCreateParityLoggingLargeWriteDAG()
260 unblockNode->antecedents[i] = &wndNodes[i]; in rf_CommonCreateParityLoggingLargeWriteDAG()
261 unblockNode->antType[i] = rf_control; in rf_CommonCreateParityLoggingLargeWriteDAG()
265 RF_ASSERT(lpoNode->numSuccedents == 1); in rf_CommonCreateParityLoggingLargeWriteDAG()
266 lpoNode->succedents[0] = unblockNode; in rf_CommonCreateParityLoggingLargeWriteDAG()
267 unblockNode->antecedents[nWndNodes] = lpoNode; in rf_CommonCreateParityLoggingLargeWriteDAG()
268 unblockNode->antType[nWndNodes] = rf_control; in rf_CommonCreateParityLoggingLargeWriteDAG()
271 RF_ASSERT(unblockNode->numSuccedents == 1); in rf_CommonCreateParityLoggingLargeWriteDAG()
272 RF_ASSERT(termNode->numAntecedents == 1); in rf_CommonCreateParityLoggingLargeWriteDAG()
273 RF_ASSERT(termNode->numSuccedents == 0); in rf_CommonCreateParityLoggingLargeWriteDAG()
274 unblockNode->succedents[0] = termNode; in rf_CommonCreateParityLoggingLargeWriteDAG()
275 termNode->antecedents[0] = unblockNode; in rf_CommonCreateParityLoggingLargeWriteDAG()
276 termNode->antType[0] = rf_control; in rf_CommonCreateParityLoggingLargeWriteDAG()
284 * creates a DAG to perform a small-write operation (either raid 5 or pq), which is as follows:
299 * +-> Unblock <-+
306 * be two Rop -- X -- Wnp branches. I call this the "double-XOR" case.
307 * The second output from each Rod node goes to the X node. In the double-XOR
309 * There is one Rod -- Wnd -- T branch for each stripe unit being updated.
335 RF_PhysDiskAddr_t *pda = asmap->physInfo; in rf_CommonCreateParityLoggingSmallWriteDAG()
336 int numDataNodes = asmap->numStripeUnitsAccessed; in rf_CommonCreateParityLoggingSmallWriteDAG()
337 int numParityNodes = (asmap->parityInfo->next) ? 2 : 1; in rf_CommonCreateParityLoggingSmallWriteDAG()
338 int i, j, nNodes, totalNumNodes; in rf_CommonCreateParityLoggingSmallWriteDAG() local
342 …RF_StripeNum_t parityStripeID = rf_RaidAddressToParityStripeID(&(raidPtr->Layout), asmap->raidAddr… in rf_CommonCreateParityLoggingSmallWriteDAG()
346 printf("[Creating parity-logging small-write DAG]\n"); in rf_CommonCreateParityLoggingSmallWriteDAG()
349 dag_h->creator = "ParityLoggingSmallWriteDAG"; in rf_CommonCreateParityLoggingSmallWriteDAG()
365 dag_h->numCommitNodes = numDataNodes + numParityNodes; in rf_CommonCreateParityLoggingSmallWriteDAG()
366 dag_h->numCommits = 0; in rf_CommonCreateParityLoggingSmallWriteDAG()
367 dag_h->numSuccedents = 1; in rf_CommonCreateParityLoggingSmallWriteDAG()
371 i = 0; in rf_CommonCreateParityLoggingSmallWriteDAG()
372 blockNode = &nodes[i]; in rf_CommonCreateParityLoggingSmallWriteDAG()
373 i += 1; in rf_CommonCreateParityLoggingSmallWriteDAG()
374 unblockNode = &nodes[i]; in rf_CommonCreateParityLoggingSmallWriteDAG()
375 i += 1; in rf_CommonCreateParityLoggingSmallWriteDAG()
376 readDataNodes = &nodes[i]; in rf_CommonCreateParityLoggingSmallWriteDAG()
377 i += numDataNodes; in rf_CommonCreateParityLoggingSmallWriteDAG()
378 readParityNodes = &nodes[i]; in rf_CommonCreateParityLoggingSmallWriteDAG()
379 i += numParityNodes; in rf_CommonCreateParityLoggingSmallWriteDAG()
380 writeDataNodes = &nodes[i]; in rf_CommonCreateParityLoggingSmallWriteDAG()
381 i += numDataNodes; in rf_CommonCreateParityLoggingSmallWriteDAG()
382 lpuNodes = &nodes[i]; in rf_CommonCreateParityLoggingSmallWriteDAG()
383 i += numParityNodes; in rf_CommonCreateParityLoggingSmallWriteDAG()
384 xorNodes = &nodes[i]; in rf_CommonCreateParityLoggingSmallWriteDAG()
385 i += numParityNodes; in rf_CommonCreateParityLoggingSmallWriteDAG()
386 termNode = &nodes[i]; in rf_CommonCreateParityLoggingSmallWriteDAG()
387 i += 1; in rf_CommonCreateParityLoggingSmallWriteDAG()
389 RF_ASSERT(i == totalNumNodes); in rf_CommonCreateParityLoggingSmallWriteDAG()
402 for (i = 0; i < numDataNodes; i++) { in rf_CommonCreateParityLoggingSmallWriteDAG()
403 …rf_InitNode(&readDataNodes[i], rf_wait, RF_FALSE, rf_DiskReadFunc, rf_DiskReadUndoFunc, rf_Generic… in rf_CommonCreateParityLoggingSmallWriteDAG()
405 readDataNodes[i].params[0].p = pda; /* physical disk addr in rf_CommonCreateParityLoggingSmallWriteDAG()
407 …readDataNodes[i].params[1].p = rf_AllocBuffer(raidPtr, dag_h, pda->numSector << raidPtr->logBytesP… in rf_CommonCreateParityLoggingSmallWriteDAG()
408 readDataNodes[i].params[2].v = parityStripeID; in rf_CommonCreateParityLoggingSmallWriteDAG()
409 readDataNodes[i].params[3].v = RF_CREATE_PARAM3(RF_IO_NORMAL_PRIORITY, which_ru); in rf_CommonCreateParityLoggingSmallWriteDAG()
410 pda = pda->next; in rf_CommonCreateParityLoggingSmallWriteDAG()
411 readDataNodes[i].propList[0] = NULL; in rf_CommonCreateParityLoggingSmallWriteDAG()
412 readDataNodes[i].propList[1] = NULL; in rf_CommonCreateParityLoggingSmallWriteDAG()
416 pda = asmap->parityInfo; in rf_CommonCreateParityLoggingSmallWriteDAG()
417 i = 0; in rf_CommonCreateParityLoggingSmallWriteDAG()
418 for (i = 0; i < numParityNodes; i++) { in rf_CommonCreateParityLoggingSmallWriteDAG()
420 …rf_InitNode(&readParityNodes[i], rf_wait, RF_FALSE, rf_DiskReadFunc, rf_DiskReadUndoFunc, rf_Gener… in rf_CommonCreateParityLoggingSmallWriteDAG()
421 readParityNodes[i].params[0].p = pda; in rf_CommonCreateParityLoggingSmallWriteDAG()
422 …readParityNodes[i].params[1].p = rf_AllocBuffer(raidPtr, dag_h, pda->numSector << raidPtr->logByte… in rf_CommonCreateParityLoggingSmallWriteDAG()
423 readParityNodes[i].params[2].v = parityStripeID; in rf_CommonCreateParityLoggingSmallWriteDAG()
424 readParityNodes[i].params[3].v = RF_CREATE_PARAM3(RF_IO_NORMAL_PRIORITY, which_ru); in rf_CommonCreateParityLoggingSmallWriteDAG()
425 readParityNodes[i].propList[0] = NULL; in rf_CommonCreateParityLoggingSmallWriteDAG()
426 pda = pda->next; in rf_CommonCreateParityLoggingSmallWriteDAG()
430 pda = asmap->physInfo; in rf_CommonCreateParityLoggingSmallWriteDAG()
431 for (i = 0; i < numDataNodes; i++) { in rf_CommonCreateParityLoggingSmallWriteDAG()
433 …rf_InitNode(&writeDataNodes[i], rf_wait, RF_TRUE, rf_DiskWriteFunc, rf_DiskWriteUndoFunc, rf_Gener… in rf_CommonCreateParityLoggingSmallWriteDAG()
434 writeDataNodes[i].params[0].p = pda; /* physical disk addr in rf_CommonCreateParityLoggingSmallWriteDAG()
436 writeDataNodes[i].params[1].p = pda->bufPtr; /* buffer holding new in rf_CommonCreateParityLoggingSmallWriteDAG()
438 writeDataNodes[i].params[2].v = parityStripeID; in rf_CommonCreateParityLoggingSmallWriteDAG()
439 writeDataNodes[i].params[3].v = RF_CREATE_PARAM3(RF_IO_NORMAL_PRIORITY, which_ru); in rf_CommonCreateParityLoggingSmallWriteDAG()
441 pda = pda->next; in rf_CommonCreateParityLoggingSmallWriteDAG()
446 /* we use the simple XOR func in the double-XOR case, and when we're in rf_CommonCreateParityLoggingSmallWriteDAG()
453 …if ((numParityNodes == 2) || ((numDataNodes == 1) && (asmap->totalSectorsAccessed < raidPtr->Layou… in rf_CommonCreateParityLoggingSmallWriteDAG()
454 func = pfuncs->simple; in rf_CommonCreateParityLoggingSmallWriteDAG()
456 name = pfuncs->SimpleName; in rf_CommonCreateParityLoggingSmallWriteDAG()
458 func = pfuncs->regular; in rf_CommonCreateParityLoggingSmallWriteDAG()
460 name = pfuncs->RegularName; in rf_CommonCreateParityLoggingSmallWriteDAG()
464 if (numParityNodes == 2) { /* double-xor case */ in rf_CommonCreateParityLoggingSmallWriteDAG()
465 for (i = 0; i < numParityNodes; i++) { in rf_CommonCreateParityLoggingSmallWriteDAG()
466 …rf_InitNode(&xorNodes[i], rf_wait, RF_TRUE, func, undoFunc, NULL, 1, nNodes, 7, 1, dag_h, name, al… in rf_CommonCreateParityLoggingSmallWriteDAG()
468 xorNodes[i].flags |= RF_DAGNODE_FLAG_YIELD; in rf_CommonCreateParityLoggingSmallWriteDAG()
469 xorNodes[i].params[0] = readDataNodes[i].params[0]; in rf_CommonCreateParityLoggingSmallWriteDAG()
470 xorNodes[i].params[1] = readDataNodes[i].params[1]; in rf_CommonCreateParityLoggingSmallWriteDAG()
471 xorNodes[i].params[2] = readParityNodes[i].params[0]; in rf_CommonCreateParityLoggingSmallWriteDAG()
472 xorNodes[i].params[3] = readParityNodes[i].params[1]; in rf_CommonCreateParityLoggingSmallWriteDAG()
473 xorNodes[i].params[4] = writeDataNodes[i].params[0]; in rf_CommonCreateParityLoggingSmallWriteDAG()
474 xorNodes[i].params[5] = writeDataNodes[i].params[1]; in rf_CommonCreateParityLoggingSmallWriteDAG()
475 xorNodes[i].params[6].p = raidPtr; in rf_CommonCreateParityLoggingSmallWriteDAG()
476 xorNodes[i].results[0] = readParityNodes[i].params[1].p; /* use old parity buf as in rf_CommonCreateParityLoggingSmallWriteDAG()
483 for (i = 0; i < numDataNodes + 1; i++) { in rf_CommonCreateParityLoggingSmallWriteDAG()
485 xorNodes[0].params[2 * i + 0] = readDataNodes[i].params[0]; /* pda */ in rf_CommonCreateParityLoggingSmallWriteDAG()
486 xorNodes[0].params[2 * i + 1] = readDataNodes[i].params[1]; /* buffer pointer */ in rf_CommonCreateParityLoggingSmallWriteDAG()
488 for (i = 0; i < numDataNodes; i++) { in rf_CommonCreateParityLoggingSmallWriteDAG()
490 xorNodes[0].params[2 * (numDataNodes + 1 + i) + 0] = writeDataNodes[i].params[0]; /* pda */ in rf_CommonCreateParityLoggingSmallWriteDAG()
491 …xorNodes[0].params[2 * (numDataNodes + 1 + i) + 1] = writeDataNodes[i].params[1]; /* buffer pointe… in rf_CommonCreateParityLoggingSmallWriteDAG()
499 pda = asmap->parityInfo; in rf_CommonCreateParityLoggingSmallWriteDAG()
500 for (i = 0; i < numParityNodes; i++) { in rf_CommonCreateParityLoggingSmallWriteDAG()
502 …rf_InitNode(&lpuNodes[i], rf_wait, RF_FALSE, rf_ParityLogUpdateFunc, rf_ParityLogUpdateUndoFunc, r… in rf_CommonCreateParityLoggingSmallWriteDAG()
503 lpuNodes[i].params[0].p = pda; /* PhysDiskAddr of parity */ in rf_CommonCreateParityLoggingSmallWriteDAG()
504 lpuNodes[i].params[1].p = xorNodes[i].results[0]; /* buffer pointer to in rf_CommonCreateParityLoggingSmallWriteDAG()
506 pda = pda->next; in rf_CommonCreateParityLoggingSmallWriteDAG()
513 RF_ASSERT(dag_h->numSuccedents == 1); in rf_CommonCreateParityLoggingSmallWriteDAG()
514 RF_ASSERT(blockNode->numAntecedents == 0); in rf_CommonCreateParityLoggingSmallWriteDAG()
515 dag_h->succedents[0] = blockNode; in rf_CommonCreateParityLoggingSmallWriteDAG()
518 RF_ASSERT(blockNode->numSuccedents == (numDataNodes + numParityNodes)); in rf_CommonCreateParityLoggingSmallWriteDAG()
519 for (i = 0; i < numDataNodes; i++) { in rf_CommonCreateParityLoggingSmallWriteDAG()
520 blockNode->succedents[i] = &readDataNodes[i]; in rf_CommonCreateParityLoggingSmallWriteDAG()
521 RF_ASSERT(readDataNodes[i].numAntecedents == 1); in rf_CommonCreateParityLoggingSmallWriteDAG()
522 readDataNodes[i].antecedents[0] = blockNode; in rf_CommonCreateParityLoggingSmallWriteDAG()
523 readDataNodes[i].antType[0] = rf_control; in rf_CommonCreateParityLoggingSmallWriteDAG()
527 for (i = 0; i < numParityNodes; i++) { in rf_CommonCreateParityLoggingSmallWriteDAG()
528 blockNode->succedents[numDataNodes + i] = &readParityNodes[i]; in rf_CommonCreateParityLoggingSmallWriteDAG()
529 RF_ASSERT(readParityNodes[i].numAntecedents == 1); in rf_CommonCreateParityLoggingSmallWriteDAG()
530 readParityNodes[i].antecedents[0] = blockNode; in rf_CommonCreateParityLoggingSmallWriteDAG()
531 readParityNodes[i].antType[0] = rf_control; in rf_CommonCreateParityLoggingSmallWriteDAG()
535 for (i = 0; i < numDataNodes; i++) { in rf_CommonCreateParityLoggingSmallWriteDAG()
536 RF_ASSERT(readDataNodes[i].numSuccedents == numDataNodes + numParityNodes); in rf_CommonCreateParityLoggingSmallWriteDAG()
539 readDataNodes[i].succedents[j] = &writeDataNodes[j]; in rf_CommonCreateParityLoggingSmallWriteDAG()
540 writeDataNodes[j].antecedents[i] = &readDataNodes[i]; in rf_CommonCreateParityLoggingSmallWriteDAG()
541 if (i == j) in rf_CommonCreateParityLoggingSmallWriteDAG()
542 writeDataNodes[j].antType[i] = rf_antiData; in rf_CommonCreateParityLoggingSmallWriteDAG()
544 writeDataNodes[j].antType[i] = rf_control; in rf_CommonCreateParityLoggingSmallWriteDAG()
549 for (i = 0; i < numDataNodes; i++) in rf_CommonCreateParityLoggingSmallWriteDAG()
552 readDataNodes[i].succedents[numDataNodes + j] = &xorNodes[j]; in rf_CommonCreateParityLoggingSmallWriteDAG()
553 xorNodes[j].antecedents[i] = &readDataNodes[i]; in rf_CommonCreateParityLoggingSmallWriteDAG()
554 xorNodes[j].antType[i] = rf_trueData; in rf_CommonCreateParityLoggingSmallWriteDAG()
558 for (i = 0; i < numParityNodes; i++) { in rf_CommonCreateParityLoggingSmallWriteDAG()
559 RF_ASSERT(readParityNodes[i].numSuccedents == numDataNodes + numParityNodes); in rf_CommonCreateParityLoggingSmallWriteDAG()
561 readParityNodes[i].succedents[j] = &writeDataNodes[j]; in rf_CommonCreateParityLoggingSmallWriteDAG()
562 writeDataNodes[j].antecedents[numDataNodes + i] = &readParityNodes[i]; in rf_CommonCreateParityLoggingSmallWriteDAG()
563 writeDataNodes[j].antType[numDataNodes + i] = rf_control; in rf_CommonCreateParityLoggingSmallWriteDAG()
568 for (i = 0; i < numParityNodes; i++) in rf_CommonCreateParityLoggingSmallWriteDAG()
570 readParityNodes[i].succedents[numDataNodes + j] = &xorNodes[j]; in rf_CommonCreateParityLoggingSmallWriteDAG()
571 xorNodes[j].antecedents[numDataNodes + i] = &readParityNodes[i]; in rf_CommonCreateParityLoggingSmallWriteDAG()
572 xorNodes[j].antType[numDataNodes + i] = rf_trueData; in rf_CommonCreateParityLoggingSmallWriteDAG()
576 for (i = 0; i < numParityNodes; i++) { in rf_CommonCreateParityLoggingSmallWriteDAG()
577 RF_ASSERT(xorNodes[i].numSuccedents == 1); in rf_CommonCreateParityLoggingSmallWriteDAG()
578 RF_ASSERT(lpuNodes[i].numAntecedents == 1); in rf_CommonCreateParityLoggingSmallWriteDAG()
579 xorNodes[i].succedents[0] = &lpuNodes[i]; in rf_CommonCreateParityLoggingSmallWriteDAG()
580 lpuNodes[i].antecedents[0] = &xorNodes[i]; in rf_CommonCreateParityLoggingSmallWriteDAG()
581 lpuNodes[i].antType[0] = rf_trueData; in rf_CommonCreateParityLoggingSmallWriteDAG()
584 for (i = 0; i < numDataNodes; i++) { in rf_CommonCreateParityLoggingSmallWriteDAG()
586 RF_ASSERT(writeDataNodes[i].numSuccedents == 1); in rf_CommonCreateParityLoggingSmallWriteDAG()
587 RF_ASSERT(unblockNode->numAntecedents == (numDataNodes + (nfaults * numParityNodes))); in rf_CommonCreateParityLoggingSmallWriteDAG()
588 writeDataNodes[i].succedents[0] = unblockNode; in rf_CommonCreateParityLoggingSmallWriteDAG()
589 unblockNode->antecedents[i] = &writeDataNodes[i]; in rf_CommonCreateParityLoggingSmallWriteDAG()
590 unblockNode->antType[i] = rf_control; in rf_CommonCreateParityLoggingSmallWriteDAG()
594 for (i = 0; i < numParityNodes; i++) { in rf_CommonCreateParityLoggingSmallWriteDAG()
595 RF_ASSERT(lpuNodes[i].numSuccedents == 1); in rf_CommonCreateParityLoggingSmallWriteDAG()
596 lpuNodes[i].succedents[0] = unblockNode; in rf_CommonCreateParityLoggingSmallWriteDAG()
597 unblockNode->antecedents[numDataNodes + i] = &lpuNodes[i]; in rf_CommonCreateParityLoggingSmallWriteDAG()
598 unblockNode->antType[numDataNodes + i] = rf_control; in rf_CommonCreateParityLoggingSmallWriteDAG()
602 RF_ASSERT(unblockNode->numSuccedents == 1); in rf_CommonCreateParityLoggingSmallWriteDAG()
603 RF_ASSERT(termNode->numAntecedents == 1); in rf_CommonCreateParityLoggingSmallWriteDAG()
604 RF_ASSERT(termNode->numSuccedents == 0); in rf_CommonCreateParityLoggingSmallWriteDAG()
605 unblockNode->succedents[0] = termNode; in rf_CommonCreateParityLoggingSmallWriteDAG()
606 termNode->antecedents[0] = unblockNode; in rf_CommonCreateParityLoggingSmallWriteDAG()
607 termNode->antType[0] = rf_control; in rf_CommonCreateParityLoggingSmallWriteDAG()
622 dag_h->creator = "ParityLoggingSmallWriteDAG"; in rf_CreateParityLoggingSmallWriteDAG()
638 dag_h->creator = "ParityLoggingSmallWriteDAG"; in rf_CreateParityLoggingLargeWriteDAG()