From bb0cd0e7ac09c963ba05d0a6c9d6c0dcaa16163a Mon Sep 17 00:00:00 2001 From: Andrea Mazzoleni Date: Tue, 5 Nov 2013 19:40:32 +0100 Subject: [PATCH] Finalizes alternate triple parity support. --- HISTORY | 9 +++-- raid.c | 2 +- selftest.c | 8 ++-- snapraid.1 | 20 ++++++++++ snapraid.d | 21 ++++++++++ snapraid.txt | 39 +++++++++++++++---- speed.c | 107 +++++++++++++++++++++++++++++++-------------------- state.c | 34 +++++++++++++--- 8 files changed, 177 insertions(+), 63 deletions(-) diff --git a/HISTORY b/HISTORY index 342f80da..d11d0d4a 100644 --- a/HISTORY +++ b/HISTORY @@ -3,10 +3,11 @@ SnapRAID HISTORY 5.0 2013/11 (BETA) ================== - * Added support for up to six level of parity. Take care that to get - good performance for triple parity and beyond you need a CPU with - SSSE3 support. - * Faster RAID5 and RAID6 computation for ARM 64 bit CPUs. + * Added support for up to six level of parity. + * Added a specific and faster triple parity format for CPUs that + don't support SSSE3 instructions like ARM and AMD Phenom, Athlon + and Opteron. + * Faster RAID5 and RAID6 implementation for ARM 64 bit CPUs. * In sync, if a silent error is found, directly mark the block as bad like in scrub, and continue with the sync process. * Sort files by inode when listing the directory. This improves diff --git a/raid.c b/raid.c index eff3f12c..c93f2c18 100644 --- a/raid.c +++ b/raid.c @@ -739,7 +739,7 @@ void raidZ3_sse2ext(unsigned char** vbuf, unsigned data, unsigned size) q = vbuf[data+1]; r = vbuf[data+2]; - asm volatile("movdqa %0,%%xmm7" : : "m" (raid_16_const.poly[0])); + asm volatile("movdqa %0,%%xmm7" : : "m" (gfconst16.poly[0])); for(i=0;i