diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-10-07 12:45:43 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-10-07 12:45:43 -0400 |
commit | c23112e0395a89c8a52cd955442240de7fba46aa (patch) | |
tree | b9a8876cfaf5d86fc7a04be1560b2503d2a71969 /lib/raid6/algos.c | |
parent | 4dfddf503670d8def0fddb497e628130fc4522a8 (diff) | |
parent | bb086a89a406b5d877ee616f1490fcc81f8e1b2b (diff) |
Merge tag 'md/4.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shli/md
Pull MD updates from Shaohua Li:
"This update includes:
- new AVX512 instruction based raid6 gen/recovery algorithm
- a couple of md-cluster related bug fixes
- fix a potential deadlock
- set nonrotational bit for raid array with SSD
- set correct max_hw_sectors for raid5/6, which hopefuly can improve
performance a little bit
- other minor fixes"
* tag 'md/4.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shli/md:
md: set rotational bit
raid6/test/test.c: bug fix: Specify aligned(alignment) attributes to the char arrays
raid5: handle register_shrinker failure
raid5: fix to detect failure of register_shrinker
md: fix a potential deadlock
md/bitmap: fix wrong cleanup
raid5: allow arbitrary max_hw_sectors
lib/raid6: Add AVX512 optimized xor_syndrome functions
lib/raid6/test/Makefile: Add avx512 gen_syndrome and recovery functions
lib/raid6: Add AVX512 optimized recovery functions
lib/raid6: Add AVX512 optimized gen_syndrome functions
md-cluster: make resync lock also could be interruptted
md-cluster: introduce dlm_lock_sync_interruptible to fix tasks hang
md-cluster: convert the completion to wait queue
md-cluster: protect md_find_rdev_nr_rcu with rcu lock
md-cluster: clean related infos of cluster
md: changes for MD_STILL_CLOSED flag
md-cluster: remove some unnecessary dlm_unlock_sync
md-cluster: use FORCEUNLOCK in lockres_free
md-cluster: call md_kick_rdev_from_array once ack failed
Diffstat (limited to 'lib/raid6/algos.c')
-rw-r--r-- | lib/raid6/algos.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/raid6/algos.c b/lib/raid6/algos.c index 592ff49df47d..7857049fd7d3 100644 --- a/lib/raid6/algos.c +++ b/lib/raid6/algos.c | |||
@@ -49,6 +49,10 @@ const struct raid6_calls * const raid6_algos[] = { | |||
49 | &raid6_avx2x1, | 49 | &raid6_avx2x1, |
50 | &raid6_avx2x2, | 50 | &raid6_avx2x2, |
51 | #endif | 51 | #endif |
52 | #ifdef CONFIG_AS_AVX512 | ||
53 | &raid6_avx512x1, | ||
54 | &raid6_avx512x2, | ||
55 | #endif | ||
52 | #endif | 56 | #endif |
53 | #if defined(__x86_64__) && !defined(__arch_um__) | 57 | #if defined(__x86_64__) && !defined(__arch_um__) |
54 | &raid6_sse2x1, | 58 | &raid6_sse2x1, |
@@ -59,6 +63,11 @@ const struct raid6_calls * const raid6_algos[] = { | |||
59 | &raid6_avx2x2, | 63 | &raid6_avx2x2, |
60 | &raid6_avx2x4, | 64 | &raid6_avx2x4, |
61 | #endif | 65 | #endif |
66 | #ifdef CONFIG_AS_AVX512 | ||
67 | &raid6_avx512x1, | ||
68 | &raid6_avx512x2, | ||
69 | &raid6_avx512x4, | ||
70 | #endif | ||
62 | #endif | 71 | #endif |
63 | #ifdef CONFIG_ALTIVEC | 72 | #ifdef CONFIG_ALTIVEC |
64 | &raid6_altivec1, | 73 | &raid6_altivec1, |
@@ -92,6 +101,9 @@ void (*raid6_datap_recov)(int, size_t, int, void **); | |||
92 | EXPORT_SYMBOL_GPL(raid6_datap_recov); | 101 | EXPORT_SYMBOL_GPL(raid6_datap_recov); |
93 | 102 | ||
94 | const struct raid6_recov_calls *const raid6_recov_algos[] = { | 103 | const struct raid6_recov_calls *const raid6_recov_algos[] = { |
104 | #ifdef CONFIG_AS_AVX512 | ||
105 | &raid6_recov_avx512, | ||
106 | #endif | ||
95 | #ifdef CONFIG_AS_AVX2 | 107 | #ifdef CONFIG_AS_AVX2 |
96 | &raid6_recov_avx2, | 108 | &raid6_recov_avx2, |
97 | #endif | 109 | #endif |