From: Neil Brown <neilb@cse.unsw.edu.au>


Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/include/linux/raid/raid1.h |   16 ++++++++++++++++
 1 files changed, 16 insertions(+)

diff -puN include/linux/raid/raid1.h~md-8-of-8-support-reshaping-raid1-arrays-adding-or-removing-drives-fix include/linux/raid/raid1.h
--- 25/include/linux/raid/raid1.h~md-8-of-8-support-reshaping-raid1-arrays-adding-or-removing-drives-fix	2004-05-28 01:47:39.411981392 -0700
+++ 25-akpm/include/linux/raid/raid1.h	2004-05-28 01:47:39.415980784 -0700
@@ -10,6 +10,20 @@ struct mirror_info {
 	sector_t	head_position;
 };
 
+/*
+ * memory pools need a pointer to the mddev, so they can force an unplug
+ * when memory is tight, and a count of the number of drives that the
+ * pool was allocated for, so they know how much to allocate and free.
+ * mddev->raid_disks cannot be used, as it can change while a pool is active
+ * These two datums are stored in a kmalloced struct.
+ */
+
+struct pool_info {
+	mddev_t *mddev;
+	int	raid_disks;
+};
+
+
 typedef struct r1bio_s r1bio_t;
 
 struct r1_private_data_s {
@@ -31,6 +45,8 @@ struct r1_private_data_s {
 	wait_queue_head_t	wait_idle;
 	wait_queue_head_t	wait_resume;
 
+	struct pool_info	*poolinfo;
+
 	mempool_t *r1bio_pool;
 	mempool_t *r1buf_pool;
 };
_