... rather than relying on the caller getting them in the
correct order.
This is better engineering and fixes a bug, but because the
failed_slotX numbers are used later with assumption that
they weren't swapped
Signed-off-by: NeilBrown <neilb@suse.de>
failed_data, (uint8_t**)blocks, 1);
} else {
printf("Repairing D and D\n");
- if (failed_slot1 > failed_slot2) {
- int t = failed_slot1;
- failed_slot1 = failed_slot2;
- failed_slot2 = t;
- }
raid6_2data_recov(syndrome_disks+2, chunk_size,
failed_slot1, failed_slot2,
(uint8_t**)blocks, 1);
const uint8_t *pbmul; /* P multiplier table for B data */
const uint8_t *qmul; /* Q multiplier table (for both) */
+ if (faila > failb) {
+ int t = faila;
+ faila = failb;
+ failb = t;
+ }
+
if (neg_offset) {
p = ptrs[-1];
q = ptrs[-2];
raid6_datap_recov(syndrome_disks+2, chunk_size,
fdisk[0], bufs, 0);
else {
- if (fdisk[0] > fdisk[1]) {
- int t = fdisk[0];
- fdisk[0] = fdisk[1];
- fdisk[1] = t;
- }
/* Two data blocks failed, P,Q OK */
raid6_2data_recov(syndrome_disks+2, chunk_size,
fdisk[0], fdisk[1], bufs, 0);