Messages in this thread | | | Date | Wed, 24 Jun 2009 12:36:24 -0700 | From | Andrew Morton <> | Subject | Re: upcoming kerneloops.org item: get_page_from_freelist |
| |
On Wed, 24 Jun 2009 12:16:20 -0700 (PDT) Linus Torvalds <torvalds@linux-foundation.org> wrote:
> Lookie here. This is 2.6.0:mm/page_alloc.c: > > do_retry = 0; > if (!(gfp_mask & __GFP_NORETRY)) { > if ((order <= 3) || (gfp_mask & __GFP_REPEAT)) > do_retry = 1; > if (gfp_mask & __GFP_NOFAIL) > do_retry = 1; > } > if (do_retry) { > blk_congestion_wait(WRITE, HZ/50); > goto rebalance; > }
rebalance: if ((p->flags & (PF_MEMALLOC | PF_MEMDIE)) && !in_interrupt()) { /* go through the zonelist yet again, ignoring mins */ for (i = 0; zones[i] != NULL; i++) { struct zone *z = zones[i];
page = buffered_rmqueue(z, order, cold); if (page) goto got_pg; } goto nopage; }
| |