aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/raid5.h
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2009-07-14 11:48:22 -0700
committerDan Williams <dan.j.williams@intel.com>2009-08-29 19:09:26 -0700
commit36d1c6476be51101778882897b315bd928c8c7b5 (patch)
tree55b4ecd93ce9c22722c9c9da0dd28a2d2f7c082d /drivers/md/raid5.h
parenta11034b4282515fd7d9f6fdc0a1380781da461c3 (diff)
downloadkernel_samsung_smdk4412-36d1c6476be51101778882897b315bd928c8c7b5.zip
kernel_samsung_smdk4412-36d1c6476be51101778882897b315bd928c8c7b5.tar.gz
kernel_samsung_smdk4412-36d1c6476be51101778882897b315bd928c8c7b5.tar.bz2
md/raid6: move the spare page to a percpu allocation
In preparation for asynchronous handling of raid6 operations move the spare page to a percpu allocation to allow multiple simultaneous synchronous raid6 recovery operations. Make this allocation cpu hotplug aware to maximize allocation efficiency. Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/md/raid5.h')
-rw-r--r--drivers/md/raid5.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/md/raid5.h b/drivers/md/raid5.h
index 52ba999..07a7a41 100644
--- a/drivers/md/raid5.h
+++ b/drivers/md/raid5.h
@@ -383,8 +383,13 @@ struct raid5_private_data {
* (fresh device added).
* Cleared when a sync completes.
*/
-
- struct page *spare_page; /* Used when checking P/Q in raid6 */
+ /* per cpu variables */
+ struct raid5_percpu {
+ struct page *spare_page; /* Used when checking P/Q in raid6 */
+ } *percpu;
+#ifdef CONFIG_HOTPLUG_CPU
+ struct notifier_block cpu_notify;
+#endif
/*
* Free stripes pool