aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/raid5.h
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2009-07-14 11:50:52 -0700
committerDan Williams <dan.j.williams@intel.com>2009-08-29 19:09:26 -0700
commitd6f38f31f3ad4b0dd33fe970988f14e7c65ef702 (patch)
tree0b881c68e676376f2f0eccb2eb377dc3561d395f /drivers/md/raid5.h
parentmd/raid6: move the spare page to a percpu allocation (diff)
downloadlinux-dev-d6f38f31f3ad4b0dd33fe970988f14e7c65ef702.tar.xz
linux-dev-d6f38f31f3ad4b0dd33fe970988f14e7c65ef702.zip
md/raid5,6: add percpu scribble region for buffer lists
Use percpu memory rather than stack for storing the buffer lists used in parity calculations. Include space for dma address conversions and pass that to async_tx via the async_submit_ctl.scribble pointer. [ Impact: move memory pressure from stack to heap ] Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/md/raid5.h')
-rw-r--r--drivers/md/raid5.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/md/raid5.h b/drivers/md/raid5.h
index 07a7a4102f05..e7baabffee86 100644
--- a/drivers/md/raid5.h
+++ b/drivers/md/raid5.h
@@ -386,7 +386,15 @@ struct raid5_private_data {
/* per cpu variables */
struct raid5_percpu {
struct page *spare_page; /* Used when checking P/Q in raid6 */
+ void *scribble; /* space for constructing buffer
+ * lists and performing address
+ * conversions
+ */
} *percpu;
+ size_t scribble_len; /* size of scribble region must be
+ * associated with conf to handle
+ * cpu hotplug while reshaping
+ */
#ifdef CONFIG_HOTPLUG_CPU
struct notifier_block cpu_notify;
#endif