|
@@ -90,25 +90,35 @@ static int test_disks(int i, int j)
|
|
|
int main(int argc, char *argv[])
|
|
|
{
|
|
|
const struct raid6_calls *const *algo;
|
|
|
+ const struct raid6_recov_calls *const *ra;
|
|
|
int i, j;
|
|
|
int err = 0;
|
|
|
|
|
|
makedata();
|
|
|
|
|
|
- for (algo = raid6_algos; *algo; algo++) {
|
|
|
- if (!(*algo)->valid || (*algo)->valid()) {
|
|
|
- raid6_call = **algo;
|
|
|
+ for (ra = raid6_recov_algos; *ra; ra++) {
|
|
|
+ if ((*ra)->valid && !(*ra)->valid())
|
|
|
+ continue;
|
|
|
+ raid6_2data_recov = (*ra)->data2;
|
|
|
+ raid6_datap_recov = (*ra)->datap;
|
|
|
|
|
|
- /* Nuke syndromes */
|
|
|
- memset(data[NDISKS-2], 0xee, 2*PAGE_SIZE);
|
|
|
+ printf("using recovery %s\n", (*ra)->name);
|
|
|
|
|
|
- /* Generate assumed good syndrome */
|
|
|
- raid6_call.gen_syndrome(NDISKS, PAGE_SIZE,
|
|
|
- (void **)&dataptrs);
|
|
|
+ for (algo = raid6_algos; *algo; algo++) {
|
|
|
+ if (!(*algo)->valid || (*algo)->valid()) {
|
|
|
+ raid6_call = **algo;
|
|
|
|
|
|
- for (i = 0; i < NDISKS-1; i++)
|
|
|
- for (j = i+1; j < NDISKS; j++)
|
|
|
- err += test_disks(i, j);
|
|
|
+ /* Nuke syndromes */
|
|
|
+ memset(data[NDISKS-2], 0xee, 2*PAGE_SIZE);
|
|
|
+
|
|
|
+ /* Generate assumed good syndrome */
|
|
|
+ raid6_call.gen_syndrome(NDISKS, PAGE_SIZE,
|
|
|
+ (void **)&dataptrs);
|
|
|
+
|
|
|
+ for (i = 0; i < NDISKS-1; i++)
|
|
|
+ for (j = i+1; j < NDISKS; j++)
|
|
|
+ err += test_disks(i, j);
|
|
|
+ }
|
|
|
}
|
|
|
printf("\n");
|
|
|
}
|