git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vm: fix vm_pgoff wrap in stack expansion
[pandora-kernel.git]
/
mm
/
truncate.c
diff --git
a/mm/truncate.c
b/mm/truncate.c
index
d64296b
..
a956675
100644
(file)
--- a/
mm/truncate.c
+++ b/
mm/truncate.c
@@
-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);
cancel_dirty_page(page, PAGE_CACHE_SIZE);
clear_page_mlock(page);
- remove_from_page_cache(page);
ClearPageMappedToDisk(page);
ClearPageMappedToDisk(page);
- page_cache_release(page); /* pagecache ref */
+ delete_from_page_cache(page);
return 0;
}
return 0;
}
@@
-322,11
+321,12
@@
EXPORT_SYMBOL(truncate_inode_pages);
* pagetables.
*/
unsigned long invalidate_mapping_pages(struct address_space *mapping,
* pagetables.
*/
unsigned long invalidate_mapping_pages(struct address_space *mapping,
-
pgoff_t start, pgoff_t end)
+ pgoff_t start, pgoff_t end)
{
struct pagevec pvec;
pgoff_t next = start;
{
struct pagevec pvec;
pgoff_t next = start;
- unsigned long ret = 0;
+ unsigned long ret;
+ unsigned long count = 0;
int i;
pagevec_init(&pvec, 0);
int i;
pagevec_init(&pvec, 0);
@@
-353,9
+353,15
@@
unsigned long invalidate_mapping_pages(struct address_space *mapping,
if (lock_failed)
continue;
if (lock_failed)
continue;
- ret += invalidate_inode_page(page);
-
+ ret = invalidate_inode_page(page);
unlock_page(page);
unlock_page(page);
+ /*
+ * Invalidation is a hint that the page is no longer
+ * of interest and try to speed up its reclaim.
+ */
+ if (!ret)
+ deactivate_page(page);
+ count += ret;
if (next > end)
break;
}
if (next > end)
break;
}
@@
-363,7
+369,7
@@
unsigned long invalidate_mapping_pages(struct address_space *mapping,
mem_cgroup_uncharge_end();
cond_resched();
}
mem_cgroup_uncharge_end();
cond_resched();
}
- return
re
t;
+ return
coun
t;
}
EXPORT_SYMBOL(invalidate_mapping_pages);
}
EXPORT_SYMBOL(invalidate_mapping_pages);
@@
-389,7
+395,7
@@
invalidate_complete_page2(struct address_space *mapping, struct page *page)
clear_page_mlock(page);
BUG_ON(page_has_private(page));
clear_page_mlock(page);
BUG_ON(page_has_private(page));
- __
remov
e_from_page_cache(page);
+ __
delet
e_from_page_cache(page);
spin_unlock_irq(&mapping->tree_lock);
mem_cgroup_uncharge_cache_page(page);
spin_unlock_irq(&mapping->tree_lock);
mem_cgroup_uncharge_cache_page(page);