aboutsummaryrefslogtreecommitdiffstats
path: root/mm/readahead.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/readahead.c')
-rw-r--r--mm/readahead.c20
1 files changed, 8 insertions, 12 deletions
diff --git a/mm/readahead.c b/mm/readahead.c
index 0f142a40984b..aa7ec424656a 100644
--- a/mm/readahead.c
+++ b/mm/readahead.c
@@ -118,8 +118,7 @@ static inline unsigned long get_next_ra_size(struct file_ra_state *ra)
118#define list_to_page(head) (list_entry((head)->prev, struct page, lru)) 118#define list_to_page(head) (list_entry((head)->prev, struct page, lru))
119 119
120/** 120/**
121 * read_cache_pages - populate an address space with some pages, and 121 * read_cache_pages - populate an address space with some pages & start reads against them
122 * start reads against them.
123 * @mapping: the address_space 122 * @mapping: the address_space
124 * @pages: The address of a list_head which contains the target pages. These 123 * @pages: The address of a list_head which contains the target pages. These
125 * pages have their ->index populated and are otherwise uninitialised. 124 * pages have their ->index populated and are otherwise uninitialised.
@@ -182,14 +181,11 @@ static int read_pages(struct address_space *mapping, struct file *filp,
182 list_del(&page->lru); 181 list_del(&page->lru);
183 if (!add_to_page_cache(page, mapping, 182 if (!add_to_page_cache(page, mapping,
184 page->index, GFP_KERNEL)) { 183 page->index, GFP_KERNEL)) {
185 ret = mapping->a_ops->readpage(filp, page); 184 mapping->a_ops->readpage(filp, page);
186 if (ret != AOP_TRUNCATED_PAGE) { 185 if (!pagevec_add(&lru_pvec, page))
187 if (!pagevec_add(&lru_pvec, page)) 186 __pagevec_lru_add(&lru_pvec);
188 __pagevec_lru_add(&lru_pvec); 187 } else
189 continue; 188 page_cache_release(page);
190 } /* else fall through to release */
191 }
192 page_cache_release(page);
193 } 189 }
194 pagevec_lru_add(&lru_pvec); 190 pagevec_lru_add(&lru_pvec);
195 ret = 0; 191 ret = 0;
@@ -394,8 +390,8 @@ int do_page_cache_readahead(struct address_space *mapping, struct file *filp,
394 * Read 'nr_to_read' pages starting at page 'offset'. If the flag 'block' 390 * Read 'nr_to_read' pages starting at page 'offset'. If the flag 'block'
395 * is set wait till the read completes. Otherwise attempt to read without 391 * is set wait till the read completes. Otherwise attempt to read without
396 * blocking. 392 * blocking.
397 * Returns 1 meaning 'success' if read is succesfull without switching off 393 * Returns 1 meaning 'success' if read is successful without switching off
398 * readhaead mode. Otherwise return failure. 394 * readahead mode. Otherwise return failure.
399 */ 395 */
400static int 396static int
401blockable_page_cache_readahead(struct address_space *mapping, struct file *filp, 397blockable_page_cache_readahead(struct address_space *mapping, struct file *filp,