Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 01890a4c authored by Benjamin LaHaise's avatar Benjamin LaHaise Committed by Linus Torvalds
Browse files

[PATCH] mempool - only init waitqueue in slow path



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: default avatarBenjamin LaHaise <benjamin.c.lahaise@intel.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 8476994a
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -204,7 +204,7 @@ void * mempool_alloc(mempool_t *pool, unsigned int __nocast gfp_mask)
{
	void *element;
	unsigned long flags;
	DEFINE_WAIT(wait);
	wait_queue_t wait;
	int gfp_temp;

	might_sleep_if(gfp_mask & __GFP_WAIT);
@@ -235,6 +235,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)