From: Neil Brown Signed-off-by: Andrew Morton --- 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; }; _