From: Benjamin LaHaise 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 Signed-off-by: Andrew Morton --- 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-06 00:14:21.000000000 -0700 +++ 25-akpm/mm/mempool.c 2005-06-06 00:14:21.000000000 -0700 @@ -207,7 +207,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); @@ -241,6 +241,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) _