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