22 Apr, 2015
1 commit
-
v3: s-o-b comment, explanation of performance and descision for
the start/stop implementationImplementing rmw functionality for RAID6 requires optimized syndrome
calculation. Up to now we can only generate a complete syndrome. The
target P/Q pages are always overwritten. With this patch we provide
a framework for inplace P/Q modification. In the first place simply
fill those functions with NULL values.xor_syndrome() has two additional parameters: start & stop. These
will indicate the first and last page that are changing during a
rmw run. That makes it possible to avoid several unneccessary loops
and speed up calculation. The caller needs to implement the following
logic to make the functions work.1) xor_syndrome(disks, start, stop, ...): "Remove" all data of source
blocks inside P/Q between (and including) start and end.2) modify any block with start
Signed-off-by: NeilBrown
04 Feb, 2015
1 commit
-
Just like for AVX2 (which simply needs an #if -> #ifdef conversion),
SSSE3 assembler support should be checked for before using it.Signed-off-by: Jan Beulich
Cc: Jim Kukunas
Acked-by: Thomas Gleixner
Signed-off-by: NeilBrown
14 Oct, 2014
1 commit
-
Signed-off-by: Anton Blanchard
Signed-off-by: NeilBrown
11 Sep, 2013
1 commit
-
Pull md update from Neil Brown:
"Headline item is multithreading for RAID5 so that more IO/sec can be
supported on fast (SSD) devices. Also TILE-Gx SIMD suppor for RAID6
calculations and an assortment of bug fixes"* tag 'md/3.12' of git://neil.brown.name/md:
raid5: only wakeup necessary threads
md/raid5: flush out all pending requests before proceeding with reshape.
md/raid5: use seqcount to protect access to shape in make_request.
raid5: sysfs entry to control worker thread number
raid5: offload stripe handle to workqueue
raid5: fix stripe release order
raid5: make release_stripe lockless
md: avoid deadlock when dirty buffers during md_stop.
md: Don't test all of mddev->flags at once.
md: Fix apparent cut-and-paste error in super_90_validate
raid6/test: replace echo -e with printf
RAID: add tilegx SIMD implementation of raid6
md: fix safe_mode buglet.
md: don't call md_allow_write in get_bitmap_file.
27 Aug, 2013
1 commit
-
This change adds TILE-Gx SIMD instructions to the software raid
(md), modeling the Altivec implementation. This is only for Syndrome
generation; there is more that could be done to improve recovery,
as in the recent Intel SSE3 recovery implementation.The code unrolls 8 times; this turns out to be the best on tilegx
hardware among the set 1, 2, 4, 8 or 16. The code reads one
cache-line of data from each disk, stores P and Q then goes to the
next cache-line.The test code in sys/linux/lib/raid6/test reports 2008 MB/s data
read rate for syndrome generation using 18 disks (16 data and 2
parity). It was 1512 MB/s before this SIMD optimizations. This is
running on 1 core with all the data in cache.This is based on the paper The Mathematics of RAID-6.
(http://kernel.org/pub/linux/kernel/people/hpa/raid6.pdf).Signed-off-by: Ken Steele
Signed-off-by: Chris Metcalf
Signed-off-by: NeilBrown
09 Jul, 2013
1 commit
-
Rebased/reworked a patch contributed by Rob Herring that uses
NEON intrinsics to perform the RAID-6 syndrome calculations.
It uses the existing unroll.awk code to generate several
unrolled versions of which the best performing one is selected
at boot time.Signed-off-by: Ard Biesheuvel
Acked-by: Nicolas Pitre
Cc: hpa@linux.intel.com
13 Dec, 2012
2 commits
-
Add AVX2 optimized gen_syndrom functions, which is simply based on
sse2.c written by hpa.Signed-off-by: Yuanhan Liu
Reviewed-by: H. Peter Anvin
Signed-off-by: Jim Kukunas
Signed-off-by: NeilBrown -
Optimize RAID6 recovery functions to take advantage of
the 256-bit YMM integer instructions introduced in AVX2.The patch was tested and benchmarked before submission.
However hardware is not yet released so benchmark numbers
cannot be reported.Acked-by: "H. Peter Anvin"
Signed-off-by: Jim Kukunas
Signed-off-by: NeilBrown
22 May, 2012
3 commits
-
Reorders functions in raid6_algos as well as the preference check
to reduce the number of functions tested on initialization.Also, creates symmetry between choosing the gen_syndrome functions
and choosing the recovery functions.Signed-off-by: Jim Kukunas
Signed-off-by: NeilBrown -
Add SSSE3 optimized recovery functions, as well as a system
for selecting the most appropriate recovery functions to use.Originally-by: H. Peter Anvin
Signed-off-by: Jim Kukunas
Signed-off-by: NeilBrown -
drags in headers which are not visible to userspace,
thus breaking the build for the test program.Signed-off-by: Jim Kukunas
Signed-off-by: NeilBrown
01 Nov, 2011
1 commit
-
A pending cleanup will mean that module.h won't be implicitly
everywhere anymore. Make sure the modular drivers in md dir
are actually calling out for explicitly in advance.Signed-off-by: Paul Gortmaker
12 Aug, 2010
2 commits
-
Rename raid6/raid6x86.h to raid6/x86.h
and modify some comments.Signed-off-by: NeilBrown
-
Some bit-rot needs to be cleaned out.
Signed-off-by: NeilBrown
11 Aug, 2010
1 commit
-
Linus asks 'why "raid6" twice?'. No reason.
Signed-off-by: David Woodhouse