ceph: use __page_cache_alloc and add_to_page_cache_lru
Following Nick Piggin patches in btrfs, pagecache pages should be allocated with __page_cache_alloc, so they obey pagecache memory policies. Also, using add_to_page_cache_lru instead of using a private pagevec where applicable. Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net> Signed-off-by: Sage Weil <sage@newdream.net>
This commit is contained in:
@@ -274,7 +274,6 @@ static int ceph_readpages(struct file *file, struct address_space *mapping,
|
||||
struct ceph_osd_client *osdc = &ceph_inode_to_client(inode)->osdc;
|
||||
int rc = 0;
|
||||
struct page **pages;
|
||||
struct pagevec pvec;
|
||||
loff_t offset;
|
||||
u64 len;
|
||||
|
||||
@@ -297,8 +296,6 @@ static int ceph_readpages(struct file *file, struct address_space *mapping,
|
||||
if (rc < 0)
|
||||
goto out;
|
||||
|
||||
/* set uptodate and add to lru in pagevec-sized chunks */
|
||||
pagevec_init(&pvec, 0);
|
||||
for (; !list_empty(page_list) && len > 0;
|
||||
rc -= PAGE_CACHE_SIZE, len -= PAGE_CACHE_SIZE) {
|
||||
struct page *page =
|
||||
@@ -312,7 +309,7 @@ static int ceph_readpages(struct file *file, struct address_space *mapping,
|
||||
zero_user_segment(page, s, PAGE_CACHE_SIZE);
|
||||
}
|
||||
|
||||
if (add_to_page_cache(page, mapping, page->index, GFP_NOFS)) {
|
||||
if (add_to_page_cache_lru(page, mapping, page->index, GFP_NOFS)) {
|
||||
page_cache_release(page);
|
||||
dout("readpages %p add_to_page_cache failed %p\n",
|
||||
inode, page);
|
||||
@@ -323,10 +320,8 @@ static int ceph_readpages(struct file *file, struct address_space *mapping,
|
||||
flush_dcache_page(page);
|
||||
SetPageUptodate(page);
|
||||
unlock_page(page);
|
||||
if (pagevec_add(&pvec, page) == 0)
|
||||
pagevec_lru_add_file(&pvec); /* add to lru */
|
||||
page_cache_release(page);
|
||||
}
|
||||
pagevec_lru_add_file(&pvec);
|
||||
rc = 0;
|
||||
|
||||
out:
|
||||
|
Reference in New Issue
Block a user