| 1 |
|
| 2 | |
| 3 | * Copyright 2003 H. Peter Anvin - All Rights Reserved
|
| 4 |
|
| 5 | #ifndef _PQ_IMPL_H
|
| 6 | #define _PQ_IMPL_H
|
| 7 |
|
| 8 | #include <linux/init.h>
|
| 9 | #include <linux/raid/pq_tables.h>
|
| 10 |
|
| 11 |
|
| 12 | struct raid6_calls {
|
| 13 | const char *name;
|
| 14 | void (*gen_syndrome)(int disks, size_t bytes, void **ptrs);
|
| 15 | void (*xor_syndrome)(int disks, int start, int stop, size_t bytes,
|
| 16 | void **ptrs);
|
| 17 | };
|
| 18 |
|
| 19 | struct raid6_recov_calls {
|
| 20 | const char *name;
|
| 21 | void (*data2)(int disks, size_t bytes, int faila, int failb,
|
| 22 | void **ptrs);
|
| 23 | void (*datap)(int disks, size_t bytes, int faila, void **ptrs);
|
| 24 | };
|
| 25 |
|
| 26 | void __init raid6_algo_add(const struct raid6_calls *algo);
|
| 27 | void __init raid6_algo_add_default(void);
|
| 28 | void __init raid6_recov_algo_add(const struct raid6_recov_calls *algo);
|
| 29 |
|
| 30 |
|
| 31 | const struct raid6_calls *raid6_algo_find(unsigned int idx);
|
| 32 | const struct raid6_recov_calls *raid6_recov_algo_find(unsigned int idx);
|
| 33 |
|
| 34 |
|
| 35 | extern const struct raid6_calls raid6_intx1;
|
| 36 | extern const struct raid6_calls raid6_intx2;
|
| 37 | extern const struct raid6_calls raid6_intx4;
|
| 38 | extern const struct raid6_calls raid6_intx8;
|
| 39 | extern const struct raid6_recov_calls raid6_recov_intx1;
|
| 40 |
|
| 41 | #endif
|