Lines Matching refs:node
186 BranchDone(RF_DagNode_t *node)
192 switch (node->status) {
202 for (i = 0; i < node->numSuccedents; i++)
203 if (!BranchDone(node->succedents[i]))
228 NodeReady(RF_DagNode_t *node) in NodeReady() argument
234 switch (node->dagHdr->status) { in NodeReady()
237 if ((node->status == rf_wait) && in NodeReady()
238 (node->numAntecedents == node->numAntDone)) in NodeReady()
242 RF_ASSERT(node->numSuccDone <= node->numSuccedents); in NodeReady()
243 RF_ASSERT(node->numSuccFired <= node->numSuccedents); in NodeReady()
244 RF_ASSERT(node->numSuccFired <= node->numSuccDone); in NodeReady()
245 if ((node->status == rf_good) && in NodeReady()
246 (node->numSuccDone == node->numSuccedents)) in NodeReady()
266 FireNode(RF_DagNode_t *node) in FireNode() argument
268 switch (node->status) { in FireNode()
274 node->dagHdr->raidPtr->raidid, in FireNode()
275 (unsigned long) node, node->name); in FireNode()
278 if (node->flags & RF_DAGNODE_FLAG_YIELD) { in FireNode()
288 (*(node->doFunc)) (node); in FireNode()
295 node->dagHdr->raidPtr->raidid, in FireNode()
296 (unsigned long) node, node->name); in FireNode()
299 if (node->flags & RF_DAGNODE_FLAG_YIELD) in FireNode()
308 (*(node->undoFunc)) (node); in FireNode()
326 RF_DagNode_t *node; in FireNodeArray() local
331 node = nodeList[i]; in FireNodeArray()
332 dstat = node->dagHdr->status; in FireNodeArray()
333 RF_ASSERT((node->status == rf_wait) || in FireNodeArray()
334 (node->status == rf_good)); in FireNodeArray()
335 if (NodeReady(node)) { in FireNodeArray()
338 RF_ASSERT(node->status == rf_wait); in FireNodeArray()
339 if (node->commitNode) in FireNodeArray()
340 node->dagHdr->numCommits++; in FireNodeArray()
341 node->status = rf_fired; in FireNodeArray()
342 for (j = 0; j < node->numAntecedents; j++) in FireNodeArray()
343 node->antecedents[j]->numSuccFired++; in FireNodeArray()
346 RF_ASSERT(node->status == rf_good); in FireNodeArray()
348 RF_ASSERT(node->commitNode == RF_FALSE); in FireNodeArray()
349 node->status = rf_recover; in FireNodeArray()
369 RF_DagNode_t *node, *next; in FireNodeList() local
375 for (node = nodeList; node; node = next) { in FireNodeList()
376 next = node->next; in FireNodeList()
377 dstat = node->dagHdr->status; in FireNodeList()
378 RF_ASSERT((node->status == rf_wait) || in FireNodeList()
379 (node->status == rf_good)); in FireNodeList()
380 if (NodeReady(node)) { in FireNodeList()
383 RF_ASSERT(node->status == rf_wait); in FireNodeList()
384 if (node->commitNode) in FireNodeList()
385 node->dagHdr->numCommits++; in FireNodeList()
386 node->status = rf_fired; in FireNodeList()
387 for (j = 0; j < node->numAntecedents; j++) in FireNodeList()
388 node->antecedents[j]->numSuccFired++; in FireNodeList()
391 RF_ASSERT(node->status == rf_good); in FireNodeList()
393 RF_ASSERT(node->commitNode == RF_FALSE); in FireNodeList()
394 node->status = rf_recover; in FireNodeList()
399 for (node = nodeList; node; node = next) { in FireNodeList()
400 next = node->next; in FireNodeList()
401 if ((node->status == rf_fired) || in FireNodeList()
402 (node->status == rf_recover)) in FireNodeList()
403 FireNode(node); in FireNodeList()
424 PropagateResults(RF_DagNode_t *node, int context) in PropagateResults() argument
437 raidPtr = node->dagHdr->raidPtr; in PropagateResults()
442 for (i = 0; i < node->numAntecedents; i++) { in PropagateResults()
443 a = *(node->antecedents + i); in PropagateResults()
449 switch (node->dagHdr->status) { in PropagateResults()
452 for (i = 0; i < node->numSuccedents; i++) { in PropagateResults()
453 s = *(node->succedents + i); in PropagateResults()
554 for (i = 0; i < node->numAntecedents; i++) { in PropagateResults()
555 a = *(node->antecedents + i); in PropagateResults()
630 ProcessNode(RF_DagNode_t *node, int context) in ProcessNode() argument
635 raidPtr = node->dagHdr->raidPtr; in ProcessNode()
638 switch (node->status) { in ProcessNode()
643 if ((node->dagHdr->numCommits > 0) || in ProcessNode()
644 (node->dagHdr->numCommitNodes == 0)) { in ProcessNode()
646 node->dagHdr->status = rf_rollForward; in ProcessNode()
649 … printf("raid%d: node (%s) returned fail, rolling forward\n", raidPtr->raidid, node->name); in ProcessNode()
654 node->dagHdr->status = rf_rollBackward; in ProcessNode()
657 … printf("raid%d: node (%s) returned fail, rolling backward\n", raidPtr->raidid, node->name); in ProcessNode()
677 PropagateResults(node, context); in ProcessNode()
688 rf_FinishNode(RF_DagNode_t *node, int context) in rf_FinishNode() argument
690 node->dagHdr->numNodesCompleted++; in rf_FinishNode()
691 ProcessNode(node, context); in rf_FinishNode()