This source file includes following definitions.
- RF_CREATE_DAG_FUNC_DECL
- RF_CREATE_DAG_FUNC_DECL
- RF_CREATE_DAG_FUNC_DECL
- RF_CREATE_DAG_FUNC_DECL
- RF_CREATE_DAG_FUNC_DECL
- RF_CREATE_DAG_FUNC_DECL
- RF_CREATE_DAG_FUNC_DECL
- RF_CREATE_DAG_FUNC_DECL
- RF_CREATE_DAG_FUNC_DECL
- RF_CREATE_DAG_FUNC_DECL
- RF_CREATE_DAG_FUNC_DECL
- RF_CREATE_DAG_FUNC_DECL
- RF_CREATE_DAG_FUNC_DECL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 #include "rf_archs.h"
32
33 #if (RF_INCLUDE_DECL_PQ > 0) || (RF_INCLUDE_RAID6 > 0)
34
35 #include "rf_types.h"
36 #include "rf_raid.h"
37 #include "rf_dag.h"
38 #include "rf_dagutils.h"
39 #include "rf_dagfuncs.h"
40 #include "rf_dagffrd.h"
41 #include "rf_dagffwr.h"
42 #include "rf_dagdegrd.h"
43 #include "rf_dagdegwr.h"
44 #include "rf_etimer.h"
45 #include "rf_pqdeg.h"
46 #include "rf_general.h"
47 #include "rf_pqdegdags.h"
48 #include "rf_pq.h"
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 RF_CREATE_DAG_FUNC_DECL(rf_PQ_100_CreateReadDAG)
71 {
72 rf_CreateDegradedReadDAG(raidPtr, asmap, dag_h, bp, flags, allocList,
73 &rf_pRecoveryFuncs);
74 }
75
76
77
78
79
80
81
82
83 RF_CREATE_DAG_FUNC_DECL(rf_PQ_101_CreateReadDAG)
84 {
85 rf_CreateDegradedReadDAG(raidPtr, asmap, dag_h, bp, flags, allocList,
86 &rf_pRecoveryFuncs);
87 }
88
89
90
91
92
93
94 RF_CREATE_DAG_FUNC_DECL(rf_PQ_110_CreateReadDAG)
95 {
96 RF_PhysDiskAddr_t *temp;
97
98 temp = asmap->parityInfo;
99 asmap->parityInfo = asmap->qInfo;
100 asmap->qInfo = temp;
101 rf_CreateDegradedReadDAG(raidPtr, asmap, dag_h, bp, flags, allocList,
102 &rf_qRecoveryFuncs);
103 }
104
105
106
107
108
109
110 RF_CREATE_DAG_FUNC_DECL(rf_CreateDoubleDegradedReadDAG);
111 RF_CREATE_DAG_FUNC_DECL(rf_CreateDoubleDegradedReadDAG)
112 {
113 rf_PQ_DoubleDegRead(raidPtr, asmap, dag_h, bp, flags, allocList);
114 }
115
116 RF_CREATE_DAG_FUNC_DECL(rf_PQ_200_CreateReadDAG);
117 RF_CREATE_DAG_FUNC_DECL(rf_PQ_200_CreateReadDAG)
118 {
119 rf_CreateDoubleDegradedReadDAG(raidPtr, asmap, dag_h, bp, flags,
120 allocList);
121 }
122
123
124
125
126 RF_CREATE_DAG_FUNC_DECL(rf_PQ_100_CreateWriteDAG);
127 RF_CREATE_DAG_FUNC_DECL(rf_PQ_100_CreateWriteDAG)
128 {
129 if (asmap->numStripeUnitsAccessed != 1 &&
130 asmap->failedPDAs[0]->numSector !=
131 raidPtr->Layout.sectorsPerStripeUnit)
132 RF_PANIC();
133 rf_CommonCreateSimpleDegradedWriteDAG(raidPtr, asmap, dag_h, bp,
134 flags, allocList, 2, (int (*) (RF_DagNode_t *))
135 rf_Degraded_100_PQFunc, RF_FALSE);
136 }
137
138
139 RF_CREATE_DAG_FUNC_DECL(rf_PQ_010_CreateSmallWriteDAG)
140 {
141 RF_PhysDiskAddr_t *temp;
142
143 temp = asmap->parityInfo;
144 asmap->parityInfo = asmap->qInfo;
145 asmap->qInfo = temp;
146 rf_CommonCreateSmallWriteDAG(raidPtr, asmap, dag_h, bp, flags,
147 allocList, &rf_qFuncs, NULL);
148 }
149
150
151 RF_CREATE_DAG_FUNC_DECL(rf_PQ_001_CreateSmallWriteDAG)
152 {
153 rf_CommonCreateSmallWriteDAG(raidPtr, asmap, dag_h, bp, flags,
154 allocList, &rf_pFuncs, NULL);
155 }
156
157
158 RF_CREATE_DAG_FUNC_DECL(rf_PQ_010_CreateLargeWriteDAG)
159 {
160 RF_PhysDiskAddr_t *temp;
161
162 temp = asmap->parityInfo;
163 asmap->parityInfo = asmap->qInfo;
164 asmap->qInfo = temp;
165 rf_CommonCreateLargeWriteDAG(raidPtr, asmap, dag_h, bp, flags,
166 allocList, 1, rf_RegularQFunc, RF_FALSE);
167 }
168
169
170 RF_CREATE_DAG_FUNC_DECL(rf_PQ_001_CreateLargeWriteDAG)
171 {
172 rf_CommonCreateLargeWriteDAG(raidPtr, asmap, dag_h, bp, flags,
173 allocList, 1, rf_RegularPFunc, RF_FALSE);
174 }
175
176
177
178
179
180 RF_CREATE_DAG_FUNC_DECL(rf_PQ_011_CreateWriteDAG)
181 {
182 rf_CreateNonRedundantWriteDAG(raidPtr, asmap, dag_h, bp, flags,
183 allocList, RF_IO_TYPE_WRITE);
184 }
185
186
187
188
189
190
191
192
193
194 RF_CREATE_DAG_FUNC_DECL(rf_PQ_110_CreateWriteDAG)
195 {
196 RF_PhysDiskAddr_t *temp;
197
198 if (asmap->numStripeUnitsAccessed != 1 &&
199 asmap->failedPDAs[0]->numSector !=
200 raidPtr->Layout.sectorsPerStripeUnit) {
201 RF_PANIC();
202 }
203
204 temp = asmap->parityInfo;
205 asmap->parityInfo = asmap->qInfo;
206 asmap->qInfo = temp;
207 rf_CommonCreateSimpleDegradedWriteDAG(raidPtr, asmap, dag_h, bp, flags,
208 allocList, 1, (int (*) (RF_DagNode_t *))
209 rf_PQ_DegradedWriteQFunc, RF_FALSE);
210
211 }
212
213
214 RF_CREATE_DAG_FUNC_DECL(rf_PQ_101_CreateWriteDAG)
215 {
216 if (asmap->numStripeUnitsAccessed != 1 &&
217 asmap->failedPDAs[0]->numSector !=
218 raidPtr->Layout.sectorsPerStripeUnit)
219 RF_PANIC();
220 rf_CommonCreateSimpleDegradedWriteDAG(raidPtr, asmap, dag_h, bp, flags,
221 allocList, 1, rf_RecoveryXorFunc, RF_FALSE);
222 }
223
224 #endif