summaryrefslogtreecommitdiffstats
path: root/restripe.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2009-09-25 17:23:33 +1000
committerNeilBrown <neilb@suse.de>2009-09-25 17:23:33 +1000
commite38cc2d87b319572fe7ff08be5657f563b1ef9e7 (patch)
treeffbefda368a7c13a584bedc083cf272a2a679dd8 /restripe.c
parentf24e2d6c06be176ad35ecf59b8cffd7ea2535ba2 (diff)
downloadmdadm-e38cc2d87b319572fe7ff08be5657f563b1ef9e7.tar.gz
mdadm-e38cc2d87b319572fe7ff08be5657f563b1ef9e7.tar.xz
mdadm-e38cc2d87b319572fe7ff08be5657f563b1ef9e7.zip
Fix raid6 error recovery in 'restripe' code.
Thanks to Matthias Urlichs for discovering and reporting this. Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'restripe.c')
-rw-r--r--restripe.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/restripe.c b/restripe.c
index 9a70cd0..33548e9 100644
--- a/restripe.c
+++ b/restripe.c
@@ -477,8 +477,8 @@ int save_stripes(int *source, unsigned long long *offsets,
for (i = 0; i < data_disks; i++)
bufs[i] = (uint8_t*)buf + chunk_size * ((qdisk+1+i) % raid_disks);
- fdisk[0] = (qdisk + 1 + fdisk[0]) * raid_disks;
- fdisk[1] = (qdisk + 1 + fdisk[1]) * raid_disks;
+ fdisk[0] = (qdisk + 1 + fdisk[0]) % raid_disks;
+ fdisk[1] = (qdisk + 1 + fdisk[1]) % raid_disks;
syndrome_disks = data_disks;
}
bufs[syndrome_disks] = (uint8_t*)buf + chunk_size * disk;