From: Benjamin LaHaise <bcrl@kvack.org>

Here's a small patch to improve the performance of mempool_alloc by only 
initializing the wait queue when we're about to wait.

Signed-off-by: Benjamin LaHaise <benjamin.c.lahaise@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 mm/mempool.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletion(-)

diff -puN mm/mempool.c~mempool-only-init-waitqueue-in-slow-path mm/mempool.c
--- 25/mm/mempool.c~mempool-only-init-waitqueue-in-slow-path	2005-06-18 02:49:08.000000000 -0700
+++ 25-akpm/mm/mempool.c	2005-06-18 02:49:08.000000000 -0700
@@ -202,7 +202,7 @@ void * mempool_alloc(mempool_t *pool, un
 {
 	void *element;
 	unsigned long flags;
-	DEFINE_WAIT(wait);
+	wait_queue_t wait;
 	int gfp_temp;
 
 	might_sleep_if(gfp_mask & __GFP_WAIT);
@@ -236,6 +236,7 @@ repeat_alloc:
 
 	/* Now start performing page reclaim */
 	gfp_temp = gfp_mask;
+	init_wait(&wait);
 	prepare_to_wait(&pool->wait, &wait, TASK_UNINTERRUPTIBLE);
 	smp_mb();
 	if (!pool->curr_nr)
_