]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - mm/truncate.c
mm: change __remove_from_page_cache()
[mv-sheeva.git] / mm / truncate.c
index 49feb46e77b8802803d20009f758ec65d2db0835..3d2ae1f423dc9b82854d023c0e498410318d76e1 100644 (file)
@@ -106,9 +106,8 @@ truncate_complete_page(struct address_space *mapping, struct page *page)
        cancel_dirty_page(page, PAGE_CACHE_SIZE);
 
        clear_page_mlock(page);
-       remove_from_page_cache(page);
        ClearPageMappedToDisk(page);
-       page_cache_release(page);       /* pagecache ref */
+       delete_from_page_cache(page);
        return 0;
 }
 
@@ -225,6 +224,7 @@ void truncate_inode_pages_range(struct address_space *mapping,
        next = start;
        while (next <= end &&
               pagevec_lookup(&pvec, mapping, next, PAGEVEC_SIZE)) {
+               mem_cgroup_uncharge_start();
                for (i = 0; i < pagevec_count(&pvec); i++) {
                        struct page *page = pvec.pages[i];
                        pgoff_t page_index = page->index;
@@ -247,6 +247,7 @@ void truncate_inode_pages_range(struct address_space *mapping,
                        unlock_page(page);
                }
                pagevec_release(&pvec);
+               mem_cgroup_uncharge_end();
                cond_resched();
        }
 
@@ -387,7 +388,7 @@ invalidate_complete_page2(struct address_space *mapping, struct page *page)
 
        clear_page_mlock(page);
        BUG_ON(page_has_private(page));
-       __remove_from_page_cache(page);
+       __delete_from_page_cache(page);
        spin_unlock_irq(&mapping->tree_lock);
        mem_cgroup_uncharge_cache_page(page);