Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 151538
b: refs/heads/master
c: da456f1
h: refs/heads/master
v: v3
  • Loading branch information
Mel Gorman authored and Linus Torvalds committed Jun 17, 2009
1 parent 5ee1dd8 commit ea63ce7
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 10 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: ed0ae21dc5fe3b9ad4cf1c7bb2bfd2ad596c481c
refs/heads/master: da456f14d2f2d7350f2b9440af79c85a34c7eed5
11 changes: 3 additions & 8 deletions trunk/mm/internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -157,14 +157,9 @@ static inline void mlock_migrate_page(struct page *newpage, struct page *page)
*/
static inline void free_page_mlock(struct page *page)
{
if (unlikely(TestClearPageMlocked(page))) {
unsigned long flags;

local_irq_save(flags);
__dec_zone_page_state(page, NR_MLOCK);
__count_vm_event(UNEVICTABLE_MLOCKFREED);
local_irq_restore(flags);
}
__ClearPageMlocked(page);
__dec_zone_page_state(page, NR_MLOCK);
__count_vm_event(UNEVICTABLE_MLOCKFREED);
}

#else /* CONFIG_HAVE_MLOCKED_PAGE_BIT */
Expand Down
8 changes: 7 additions & 1 deletion trunk/mm/page_alloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -495,7 +495,6 @@ static inline void __free_one_page(struct page *page,

static inline int free_pages_check(struct page *page)
{
free_page_mlock(page);
if (unlikely(page_mapcount(page) |
(page->mapping != NULL) |
(page_count(page) != 0) |
Expand Down Expand Up @@ -552,6 +551,7 @@ static void __free_pages_ok(struct page *page, unsigned int order)
unsigned long flags;
int i;
int bad = 0;
int clearMlocked = PageMlocked(page);

for (i = 0 ; i < (1 << order) ; ++i)
bad += free_pages_check(page + i);
Expand All @@ -567,6 +567,8 @@ static void __free_pages_ok(struct page *page, unsigned int order)
kernel_map_pages(page, 1 << order, 0);

local_irq_save(flags);
if (unlikely(clearMlocked))
free_page_mlock(page);
__count_vm_events(PGFREE, 1 << order);
free_one_page(page_zone(page), page, order,
get_pageblock_migratetype(page));
Expand Down Expand Up @@ -1013,6 +1015,7 @@ static void free_hot_cold_page(struct page *page, int cold)
struct zone *zone = page_zone(page);
struct per_cpu_pages *pcp;
unsigned long flags;
int clearMlocked = PageMlocked(page);

if (PageAnon(page))
page->mapping = NULL;
Expand All @@ -1028,7 +1031,10 @@ static void free_hot_cold_page(struct page *page, int cold)

pcp = &zone_pcp(zone, get_cpu())->pcp;
local_irq_save(flags);
if (unlikely(clearMlocked))
free_page_mlock(page);
__count_vm_event(PGFREE);

if (cold)
list_add_tail(&page->lru, &pcp->list);
else
Expand Down

0 comments on commit ea63ce7

Please sign in to comment.