summaryrefslogtreecommitdiffstats
path: root/mm/truncate.c
diff options
context:
space:
mode:
authorJohannes Weiner <hannes@cmpxchg.org>2016-03-15 17:57:22 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2016-03-15 19:55:16 -0400
commit62cccb8c8e7a3ca233f49d5e7dcb1557d25465cd (patch)
tree43a902faf461c65393a4efebf9ff9622017b92b1 /mm/truncate.c
parent6a93ca8fde3cfce0f00f02281139a377c83e8d8c (diff)
mm: simplify lock_page_memcg()
Now that migration doesn't clear page->mem_cgroup of live pages anymore, it's safe to make lock_page_memcg() and the memcg stat functions take pages, and spare the callers from memcg objects. [akpm@linux-foundation.org: fix warnings] Signed-off-by: Johannes Weiner <hannes@cmpxchg.org> Suggested-by: Vladimir Davydov <vdavydov@virtuozzo.com> Acked-by: Vladimir Davydov <vdavydov@virtuozzo.com> Cc: Michal Hocko <mhocko@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/truncate.c')
-rw-r--r--mm/truncate.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/mm/truncate.c b/mm/truncate.c
index 51a24f6a555d..87311af936f2 100644
--- a/mm/truncate.c
+++ b/mm/truncate.c
@@ -519,7 +519,6 @@ EXPORT_SYMBOL(invalidate_mapping_pages);
519static int 519static int
520invalidate_complete_page2(struct address_space *mapping, struct page *page) 520invalidate_complete_page2(struct address_space *mapping, struct page *page)
521{ 521{
522 struct mem_cgroup *memcg;
523 unsigned long flags; 522 unsigned long flags;
524 523
525 if (page->mapping != mapping) 524 if (page->mapping != mapping)
@@ -528,15 +527,15 @@ invalidate_complete_page2(struct address_space *mapping, struct page *page)
528 if (page_has_private(page) && !try_to_release_page(page, GFP_KERNEL)) 527 if (page_has_private(page) && !try_to_release_page(page, GFP_KERNEL))
529 return 0; 528 return 0;
530 529
531 memcg = lock_page_memcg(page); 530 lock_page_memcg(page);
532 spin_lock_irqsave(&mapping->tree_lock, flags); 531 spin_lock_irqsave(&mapping->tree_lock, flags);
533 if (PageDirty(page)) 532 if (PageDirty(page))
534 goto failed; 533 goto failed;
535 534
536 BUG_ON(page_has_private(page)); 535 BUG_ON(page_has_private(page));
537 __delete_from_page_cache(page, NULL, memcg); 536 __delete_from_page_cache(page, NULL);
538 spin_unlock_irqrestore(&mapping->tree_lock, flags); 537 spin_unlock_irqrestore(&mapping->tree_lock, flags);
539 unlock_page_memcg(memcg); 538 unlock_page_memcg(page);
540 539
541 if (mapping->a_ops->freepage) 540 if (mapping->a_ops->freepage)
542 mapping->a_ops->freepage(page); 541 mapping->a_ops->freepage(page);
@@ -545,7 +544,7 @@ invalidate_complete_page2(struct address_space *mapping, struct page *page)
545 return 1; 544 return 1;
546failed: 545failed:
547 spin_unlock_irqrestore(&mapping->tree_lock, flags); 546 spin_unlock_irqrestore(&mapping->tree_lock, flags);
548 unlock_page_memcg(memcg); 547 unlock_page_memcg(page);
549 return 0; 548 return 0;
550} 549}
551 550