int main(int argc, char *argv[]) { const struct raid6_calls *const *algo; int i, j; int err = 0; makedata(); for (algo = raid6_algos; *algo; algo++) { if (!(*algo)->valid || (*algo)->valid()) { raid6_call = **algo; /* */ memset(data[NDISKS-2], 0xee, 2*PAGE_SIZE); /* */ 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"); } printf("\n"); /* */ raid6_select_algo(); if (err) printf("\n*** ERRORS FOUND ***\n"); return err; }
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 (ra = raid6_recov_algos; *ra; ra++) { if ((*ra)->valid && !(*ra)->valid()) continue; raid6_2data_recov = (*ra)->data2; raid6_datap_recov = (*ra)->datap; printf("using recovery %s\n", (*ra)->name); for (algo = raid6_algos; *algo; algo++) { if (!(*algo)->valid || (*algo)->valid()) { raid6_call = **algo; /* 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"); } printf("\n"); /* Pick the best algorithm test */ raid6_select_algo(); if (err) printf("\n*** ERRORS FOUND ***\n"); return err; }
static int test(int disks, int *tests) { struct dma_async_tx_descriptor *tx; struct async_submit_ctl submit; struct completion cmp; int err = 0; int i, j; recovi = data[disks]; recovj = data[disks+1]; spare = data[disks+2]; makedata(disks); /* Nuke syndromes */ memset(page_address(data[disks-2]), 0xee, PAGE_SIZE); memset(page_address(data[disks-1]), 0xee, PAGE_SIZE); /* Generate assumed good syndrome */ init_completion(&cmp); init_async_submit(&submit, ASYNC_TX_ACK, NULL, callback, &cmp, addr_conv); tx = async_gen_syndrome(dataptrs, 0, disks, PAGE_SIZE, &submit); async_tx_issue_pending(tx); if (wait_for_completion_timeout(&cmp, msecs_to_jiffies(3000)) == 0) { pr("error: initial gen_syndrome(%d) timed out\n", disks); return 1; } pr("testing the %d-disk case...\n", disks); for (i = 0; i < disks-1; i++) for (j = i+1; j < disks; j++) { (*tests)++; err += test_disks(i, j, disks); } return err; }