<dec f='src/src/sys/dev/raidframe/rf_dagffrd.h' l='40' type='void rf_CreateNonredundantDAG(RF_Raid_t * raidPtr, RF_AccessStripeMap_t * asmap, RF_DagHeader_t * dag_h, void * bp, RF_RaidAccessFlags_t flags, RF_AllocListElem_t * allocList, RF_IoType_t type)'/>
<use f='src/src/sys/dev/raidframe/rf_dagffrd.c' l='82' u='c' c='rf_CreateFaultFreeReadDAG'/>
<def f='src/src/sys/dev/raidframe/rf_dagffrd.c' l='126' ll='300' type='void rf_CreateNonredundantDAG(RF_Raid_t * raidPtr, RF_AccessStripeMap_t * asmap, RF_DagHeader_t * dag_h, void * bp, RF_RaidAccessFlags_t flags, RF_AllocListElem_t * allocList, RF_IoType_t type)'/>
<doc f='src/src/sys/dev/raidframe/rf_dagffrd.c' l='92'>/******************************************************************************
 *
 * creates a DAG to perform a nonredundant read or write of data within one
 * stripe.
 * For reads, this DAG is as follows:
 *
 *                   /---- read ----\
 *    Header -- Block ---- read ---- Commit -- Terminate
 *                   \---- read ----/
 *
 * For writes, this DAG is as follows:
 *
 *                    /---- write ----\
 *    Header -- Commit ---- write ---- Block -- Terminate
 *                    \---- write ----/
 *
 * There is one disk node per stripe unit accessed, and all disk nodes are in
 * parallel.
 *
 * Tricky point here:  The first disk node (read or write) is created
 * normally.  Subsequent disk nodes are created by copying the first one,
 * and modifying a few params.  The &quot;succedents&quot; and &quot;antecedents&quot; fields are
 * _not_ re-created in each node, but rather left pointing to the same array
 * that was malloc&apos;d when the first node was created.  Thus, it&apos;s essential
 * that when this DAG is freed, the succedents and antecedents fields be freed
 * in ONLY ONE of the read nodes.  This does not apply to the &quot;params&quot; field
 * because it is recreated for each READ node.
 *
 * Note that normal-priority accesses do not need to be tagged with their
 * parity stripe ID, because they will never be promoted.  Hence, I&apos;ve
 * commented-out the code to do this, and marked it with UNNEEDED.
 *
 *****************************************************************************/</doc>
<use f='src/src/sys/dev/raidframe/rf_dagffwr.c' l='86' u='c' c='rf_CreateNonRedundantWriteDAG'/>
<use f='src/src/sys/dev/raidframe/rf_dagffwr.c' l='97' u='c' c='rf_CreateRAID0WriteDAG'/>
