Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 14725
b: refs/heads/master
c: 3148890
h: refs/heads/master
i:
  14723: 5df6e04
v: v3
  • Loading branch information
Nick Piggin authored and Linus Torvalds committed Nov 28, 2005
1 parent 3ed3606 commit 0cf4344
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 8 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: aa877b3dc9f2a1fdffac4ea36bee97c21db11a69
refs/heads/master: 3148890bfa4f36c9949871264e06ef4d449eeff9
24 changes: 17 additions & 7 deletions trunk/mm/page_alloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -773,9 +773,12 @@ buffered_rmqueue(struct zone *zone, int order, gfp_t gfp_flags)
}

#define ALLOC_NO_WATERMARKS 0x01 /* don't check watermarks at all */
#define ALLOC_HARDER 0x02 /* try to alloc harder */
#define ALLOC_HIGH 0x04 /* __GFP_HIGH set */
#define ALLOC_CPUSET 0x08 /* check for correct cpuset */
#define ALLOC_WMARK_MIN 0x02 /* use pages_min watermark */
#define ALLOC_WMARK_LOW 0x04 /* use pages_low watermark */
#define ALLOC_WMARK_HIGH 0x08 /* use pages_high watermark */
#define ALLOC_HARDER 0x10 /* try to alloc harder */
#define ALLOC_HIGH 0x20 /* __GFP_HIGH set */
#define ALLOC_CPUSET 0x40 /* check for correct cpuset */

/*
* Return 1 if free pages are above 'mark'. This takes into account the order
Expand Down Expand Up @@ -830,7 +833,14 @@ get_page_from_freelist(gfp_t gfp_mask, unsigned int order,
continue;

if (!(alloc_flags & ALLOC_NO_WATERMARKS)) {
if (!zone_watermark_ok(*z, order, (*z)->pages_low,
unsigned long mark;
if (alloc_flags & ALLOC_WMARK_MIN)
mark = (*z)->pages_min;
else if (alloc_flags & ALLOC_WMARK_LOW)
mark = (*z)->pages_low;
else
mark = (*z)->pages_high;
if (!zone_watermark_ok(*z, order, mark,
classzone_idx, alloc_flags))
continue;
}
Expand Down Expand Up @@ -871,7 +881,7 @@ __alloc_pages(gfp_t gfp_mask, unsigned int order,
}

page = get_page_from_freelist(gfp_mask|__GFP_HARDWALL, order,
zonelist, ALLOC_CPUSET);
zonelist, ALLOC_WMARK_LOW|ALLOC_CPUSET);
if (page)
goto got_pg;

Expand All @@ -888,7 +898,7 @@ __alloc_pages(gfp_t gfp_mask, unsigned int order,
* cannot run direct reclaim, or if the caller has realtime scheduling
* policy.
*/
alloc_flags = 0;
alloc_flags = ALLOC_WMARK_MIN;
if ((unlikely(rt_task(p)) && !in_interrupt()) || !wait)
alloc_flags |= ALLOC_HARDER;
if (gfp_mask & __GFP_HIGH)
Expand Down Expand Up @@ -959,7 +969,7 @@ __alloc_pages(gfp_t gfp_mask, unsigned int order,
* under heavy pressure.
*/
page = get_page_from_freelist(gfp_mask|__GFP_HARDWALL, order,
zonelist, ALLOC_CPUSET);
zonelist, ALLOC_WMARK_HIGH|ALLOC_CPUSET);
if (page)
goto got_pg;

Expand Down

0 comments on commit 0cf4344

Please sign in to comment.