Tejun Heo 1ebb7044c9 mempool: fix first round failure behavior
mempool modifies gfp_mask so that the backing allocator doesn't try too
hard or trigger warning message when there's pool to fall back on.  In
addition, for the first try, it removes __GFP_WAIT and IO, so that it
doesn't trigger reclaim or wait when allocation can be fulfilled from
pool; however, when that allocation fails and pool is empty too, it waits
for the pool to be replenished before retrying.

Allocation which could have succeeded after a bit of reclaim has to wait
on the reserved items and it's not like mempool doesn't retry with
__GFP_WAIT and IO.  It just does that *after* someone returns an element,
pointlessly delaying things.

Fix it by retrying immediately if the first round of allocation attempts
w/o __GFP_WAIT and IO fails.

[akpm@linux-foundation.org: shorten the lock hold time]
Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-01-10 16:30:45 -08:00
..
2012-01-03 22:54:56 -05:00
2011-03-31 11:26:23 -03:00
2011-07-26 16:49:47 -07:00
2011-11-02 16:06:57 -07:00
2011-07-20 20:47:46 -04:00
2011-10-31 17:30:44 -07:00
2012-01-10 16:30:44 -08:00
2010-05-21 18:31:21 -04:00
2011-03-10 08:52:27 +01:00
2011-07-25 20:57:09 -07:00
2011-05-20 12:50:29 -07:00
2011-10-31 17:30:44 -07:00
2012-01-03 22:54:07 -05:00
2011-10-31 17:30:50 -07:00
2011-10-31 17:30:51 -07:00