aboutsummaryrefslogtreecommitdiffstats
path: root/mm/readahead.c
diff options
context:
space:
mode:
authorSteven Whitehouse <swhiteho@redhat.com>2006-07-03 10:25:08 -0400
committerSteven Whitehouse <swhiteho@redhat.com>2006-07-03 10:25:08 -0400
commit0a1340c185734a57fbf4775927966ad4a1347b02 (patch)
treed9ed8f0dd809a7c542a3356601125ea5b5aaa804 /mm/readahead.c
parentaf18ddb8864b096e3ed4732e2d4b21c956dcfe3a (diff)
parent29454dde27d8e340bb1987bad9aa504af7081eba (diff)
Merge rsync://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Conflicts: include/linux/kernel.h
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,