Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 230828
b: refs/heads/master
c: c06b1fc
h: refs/heads/master
v: v3
  • Loading branch information
Andrew Morton authored and Linus Torvalds committed Jan 14, 2011
1 parent a7376ce commit 4bf732e
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 15 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: fd4a4663db293bfd5dc20fb4113977f62895e550
refs/heads/master: c06b1fca18c3ad868bfcaca230146e3038583422
24 changes: 10 additions & 14 deletions trunk/mm/page_alloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -1809,15 +1809,14 @@ __alloc_pages_direct_compact(gfp_t gfp_mask, unsigned int order,
bool sync_migration)
{
struct page *page;
struct task_struct *tsk = current;

if (!order || compaction_deferred(preferred_zone))
return NULL;

tsk->flags |= PF_MEMALLOC;
current->flags |= PF_MEMALLOC;
*did_some_progress = try_to_compact_pages(zonelist, order, gfp_mask,
nodemask, sync_migration);
tsk->flags &= ~PF_MEMALLOC;
current->flags &= ~PF_MEMALLOC;
if (*did_some_progress != COMPACT_SKIPPED) {

/* Page migration frees to the PCP lists but we want merging */
Expand Down Expand Up @@ -1869,23 +1868,22 @@ __alloc_pages_direct_reclaim(gfp_t gfp_mask, unsigned int order,
{
struct page *page = NULL;
struct reclaim_state reclaim_state;
struct task_struct *p = current;
bool drained = false;

cond_resched();

/* We now go into synchronous reclaim */
cpuset_memory_pressure_bump();
p->flags |= PF_MEMALLOC;
current->flags |= PF_MEMALLOC;
lockdep_set_current_reclaim_state(gfp_mask);
reclaim_state.reclaimed_slab = 0;
p->reclaim_state = &reclaim_state;
current->reclaim_state = &reclaim_state;

*did_some_progress = try_to_free_pages(zonelist, order, gfp_mask, nodemask);

p->reclaim_state = NULL;
current->reclaim_state = NULL;
lockdep_clear_current_reclaim_state();
p->flags &= ~PF_MEMALLOC;
current->flags &= ~PF_MEMALLOC;

cond_resched();

Expand Down Expand Up @@ -1950,7 +1948,6 @@ void wake_all_kswapd(unsigned int order, struct zonelist *zonelist,
static inline int
gfp_to_alloc_flags(gfp_t gfp_mask)
{
struct task_struct *p = current;
int alloc_flags = ALLOC_WMARK_MIN | ALLOC_CPUSET;
const gfp_t wait = gfp_mask & __GFP_WAIT;

Expand All @@ -1977,12 +1974,12 @@ gfp_to_alloc_flags(gfp_t gfp_mask)
* See also cpuset_zone_allowed() comment in kernel/cpuset.c.
*/
alloc_flags &= ~ALLOC_CPUSET;
} else if (unlikely(rt_task(p)) && !in_interrupt())
} else if (unlikely(rt_task(current)) && !in_interrupt())
alloc_flags |= ALLOC_HARDER;

if (likely(!(gfp_mask & __GFP_NOMEMALLOC))) {
if (!in_interrupt() &&
((p->flags & PF_MEMALLOC) ||
((current->flags & PF_MEMALLOC) ||
unlikely(test_thread_flag(TIF_MEMDIE))))
alloc_flags |= ALLOC_NO_WATERMARKS;
}
Expand All @@ -2001,7 +1998,6 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
int alloc_flags;
unsigned long pages_reclaimed = 0;
unsigned long did_some_progress;
struct task_struct *p = current;
bool sync_migration = false;

/*
Expand Down Expand Up @@ -2060,7 +2056,7 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
goto nopage;

/* Avoid recursion of direct reclaim */
if (p->flags & PF_MEMALLOC)
if (current->flags & PF_MEMALLOC)
goto nopage;

/* Avoid allocations with no watermarks from looping endlessly */
Expand Down Expand Up @@ -2153,7 +2149,7 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
if (!(gfp_mask & __GFP_NOWARN) && printk_ratelimit()) {
printk(KERN_WARNING "%s: page allocation failure."
" order:%d, mode:0x%x\n",
p->comm, order, gfp_mask);
current->comm, order, gfp_mask);
dump_stack();
show_mem();
}
Expand Down

0 comments on commit 4bf732e

Please sign in to comment.