]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - mm/memcontrol.c
memcg: remove mem_cgroup_uncharge
[linux-2.6-omap-h63xx.git] / mm / memcontrol.c
index 83ba13ad31e16d69d32087bf1a02285b72e3844b..1333d25163bb9a2211a2edaec7f2f1d082566052 100644 (file)
@@ -697,20 +697,22 @@ int mem_cgroup_cache_charge(struct page *page, struct mm_struct *mm,
 
 /*
  * Uncharging is always a welcome operation, we never complain, simply
- * uncharge. This routine should be called with lock_page_cgroup held
+ * uncharge.
  */
-void mem_cgroup_uncharge(struct page_cgroup *pc)
+void mem_cgroup_uncharge_page(struct page *page)
 {
+       struct page_cgroup *pc;
        struct mem_cgroup *mem;
        struct mem_cgroup_per_zone *mz;
-       struct page *page;
        unsigned long flags;
 
        /*
         * Check if our page_cgroup is valid
         */
+       lock_page_cgroup(page);
+       pc = page_get_page_cgroup(page);
        if (!pc)
-               return;
+               goto unlock;
 
        if (atomic_dec_and_test(&pc->ref_cnt)) {
                page = pc->page;
@@ -731,12 +733,8 @@ void mem_cgroup_uncharge(struct page_cgroup *pc)
                }
                lock_page_cgroup(page);
        }
-}
 
-void mem_cgroup_uncharge_page(struct page *page)
-{
-       lock_page_cgroup(page);
-       mem_cgroup_uncharge(page_get_page_cgroup(page));
+unlock:
        unlock_page_cgroup(page);
 }
 
@@ -759,12 +757,7 @@ int mem_cgroup_prepare_migration(struct page *page)
 
 void mem_cgroup_end_migration(struct page *page)
 {
-       struct page_cgroup *pc;
-
-       lock_page_cgroup(page);
-       pc = page_get_page_cgroup(page);
-       mem_cgroup_uncharge(pc);
-       unlock_page_cgroup(page);
+       mem_cgroup_uncharge_page(page);
 }
 /*
  * We know both *page* and *newpage* are now not-on-LRU and Pg_locked.