Lines Matching refs:ractl

206 void page_cache_ra_unbounded(struct readahead_control *ractl,  in page_cache_ra_unbounded()  argument
209 struct address_space *mapping = ractl->mapping; in page_cache_ra_unbounded()
210 unsigned long index = readahead_index(ractl); in page_cache_ra_unbounded()
242 read_pages(ractl); in page_cache_ra_unbounded()
243 ractl->_index++; in page_cache_ra_unbounded()
244 i = ractl->_index + ractl->_nr_pages - index - 1; in page_cache_ra_unbounded()
254 read_pages(ractl); in page_cache_ra_unbounded()
255 ractl->_index++; in page_cache_ra_unbounded()
256 i = ractl->_index + ractl->_nr_pages - index - 1; in page_cache_ra_unbounded()
261 ractl->_workingset |= folio_test_workingset(folio); in page_cache_ra_unbounded()
262 ractl->_nr_pages++; in page_cache_ra_unbounded()
270 read_pages(ractl); in page_cache_ra_unbounded()
282 static void do_page_cache_ra(struct readahead_control *ractl, in do_page_cache_ra() argument
285 struct inode *inode = ractl->mapping->host; in do_page_cache_ra()
286 unsigned long index = readahead_index(ractl); in do_page_cache_ra()
300 page_cache_ra_unbounded(ractl, nr_to_read, lookahead_size); in do_page_cache_ra()
307 void force_page_cache_ra(struct readahead_control *ractl, in force_page_cache_ra() argument
310 struct address_space *mapping = ractl->mapping; in force_page_cache_ra()
311 struct file_ra_state *ra = ractl->ra; in force_page_cache_ra()
322 index = readahead_index(ractl); in force_page_cache_ra()
330 ractl->_index = index; in force_page_cache_ra()
331 do_page_cache_ra(ractl, this_chunk, 0); in force_page_cache_ra()
478 static inline int ra_alloc_folio(struct readahead_control *ractl, pgoff_t index, in ra_alloc_folio() argument
489 err = filemap_add_folio(ractl->mapping, folio, index, gfp); in ra_alloc_folio()
495 ractl->_nr_pages += 1UL << order; in ra_alloc_folio()
496 ractl->_workingset |= folio_test_workingset(folio); in ra_alloc_folio()
500 void page_cache_ra_order(struct readahead_control *ractl, in page_cache_ra_order() argument
503 struct address_space *mapping = ractl->mapping; in page_cache_ra_order()
504 pgoff_t index = readahead_index(ractl); in page_cache_ra_order()
538 err = ra_alloc_folio(ractl, index, mark, order, gfp); in page_cache_ra_order()
549 read_pages(ractl); in page_cache_ra_order()
560 do_page_cache_ra(ractl, ra->size, ra->async_size); in page_cache_ra_order()
566 static void ondemand_readahead(struct readahead_control *ractl, in ondemand_readahead() argument
569 struct backing_dev_info *bdi = inode_to_bdi(ractl->mapping->host); in ondemand_readahead()
570 struct file_ra_state *ra = ractl->ra; in ondemand_readahead()
573 pgoff_t index = readahead_index(ractl); in ondemand_readahead()
613 start = page_cache_next_miss(ractl->mapping, index + 1, in ondemand_readahead()
647 if (try_context_readahead(ractl->mapping, ra, index, req_size, in ondemand_readahead()
655 do_page_cache_ra(ractl, req_size, 0); in ondemand_readahead()
681 ractl->_index = ra->start; in ondemand_readahead()
682 page_cache_ra_order(ractl, ra, order); in ondemand_readahead()
685 void page_cache_sync_ra(struct readahead_control *ractl, in page_cache_sync_ra() argument
688 bool do_forced_ra = ractl->file && (ractl->file->f_mode & FMODE_RANDOM); in page_cache_sync_ra()
696 if (!ractl->ra->ra_pages || blk_cgroup_congested()) { in page_cache_sync_ra()
697 if (!ractl->file) in page_cache_sync_ra()
705 force_page_cache_ra(ractl, req_count); in page_cache_sync_ra()
709 ondemand_readahead(ractl, NULL, req_count); in page_cache_sync_ra()
713 void page_cache_async_ra(struct readahead_control *ractl, in page_cache_async_ra() argument
717 if (!ractl->ra->ra_pages) in page_cache_async_ra()
731 ondemand_readahead(ractl, folio, req_count); in page_cache_async_ra()
791 void readahead_expand(struct readahead_control *ractl, in readahead_expand() argument
794 struct address_space *mapping = ractl->mapping; in readahead_expand()
795 struct file_ra_state *ra = ractl->ra; in readahead_expand()
802 while (ractl->_index > new_index) { in readahead_expand()
803 unsigned long index = ractl->_index - 1; in readahead_expand()
817 ractl->_nr_pages++; in readahead_expand()
818 ractl->_index = page->index; in readahead_expand()
821 new_len += new_start - readahead_pos(ractl); in readahead_expand()
825 while (ractl->_nr_pages < new_nr_pages) { in readahead_expand()
826 unsigned long index = ractl->_index + ractl->_nr_pages; in readahead_expand()
839 if (unlikely(PageWorkingset(page)) && !ractl->_workingset) { in readahead_expand()
840 ractl->_workingset = true; in readahead_expand()
841 psi_memstall_enter(&ractl->_pflags); in readahead_expand()
843 ractl->_nr_pages++; in readahead_expand()