<dec f='src/src/sys/dev/raidframe/rf_states.h' l='42' type='int rf_State_CreateDAG(RF_RaidAccessDesc_t * desc)'/>
<use f='src/src/sys/dev/raidframe/rf_states.c' l='126' u='c' c='rf_ContinueRaidAccess'/>
<def f='src/src/sys/dev/raidframe/rf_states.c' l='470' ll='544' type='int rf_State_CreateDAG(RF_RaidAccessDesc_t * desc)'/>
<doc f='src/src/sys/dev/raidframe/rf_states.c' l='449'>/*
 * the following three states create, execute, and post-process dags
 * the error recovery unit is a single dag.
 * by default, SelectAlgorithm creates an array of dags, one per parity stripe
 * in some tricky cases, multiple dags per stripe are created
 *   - dags within a parity stripe are executed sequentially (arbitrary order)
 *   - dags for distinct parity stripes are executed concurrently
 *
 * repeat until all dags complete successfully -or- dag selection fails
 *
 * while !done
 *   create dag(s) (SelectAlgorithm)
 *   if dag
 *     execute dag (DispatchDAG)
 *     if dag successful
 *       done (SUCCESS)
 *     else
 *       !done (RETRY - start over with new dags)
 *   else
 *     done (FAIL)
 */</doc>
