Lines Matching defs:ractl

193  * @ractl: Readahead control.
205 void page_cache_ra_unbounded(struct readahead_control *ractl,
208 struct address_space *mapping = ractl->mapping;
209 unsigned long index = readahead_index(ractl);
242 read_pages(ractl);
243 ractl->_index++;
244 i = ractl->_index + ractl->_nr_pages - index - 1;
257 read_pages(ractl);
258 ractl->_index++;
259 i = ractl->_index + ractl->_nr_pages - index - 1;
264 ractl->_workingset |= folio_test_workingset(folio);
265 ractl->_nr_pages++;
273 read_pages(ractl);
285 static void do_page_cache_ra(struct readahead_control *ractl,
288 struct inode *inode = ractl->mapping->host;
289 unsigned long index = readahead_index(ractl);
303 page_cache_ra_unbounded(ractl, nr_to_read, lookahead_size);
310 void force_page_cache_ra(struct readahead_control *ractl,
313 struct address_space *mapping = ractl->mapping;
314 struct file_ra_state *ra = ractl->ra;
325 index = readahead_index(ractl);
333 ractl->_index = index;
334 do_page_cache_ra(ractl, this_chunk, 0);
468 static inline int ra_alloc_folio(struct readahead_control *ractl, pgoff_t index,
479 err = filemap_add_folio(ractl->mapping, folio, index, gfp);
485 ractl->_nr_pages += 1UL << order;
486 ractl->_workingset |= folio_test_workingset(folio);
490 void page_cache_ra_order(struct readahead_control *ractl,
493 struct address_space *mapping = ractl->mapping;
494 pgoff_t index = readahead_index(ractl);
524 err = ra_alloc_folio(ractl, index, mark, order, gfp);
535 read_pages(ractl);
547 do_page_cache_ra(ractl, ra->size, ra->async_size);
553 static void ondemand_readahead(struct readahead_control *ractl,
556 struct backing_dev_info *bdi = inode_to_bdi(ractl->mapping->host);
557 struct file_ra_state *ra = ractl->ra;
560 pgoff_t index = readahead_index(ractl);
600 start = page_cache_next_miss(ractl->mapping, index + 1,
634 if (try_context_readahead(ractl->mapping, ra, index, req_size,
642 do_page_cache_ra(ractl, req_size, 0);
668 ractl->_index = ra->start;
669 page_cache_ra_order(ractl, ra, order);
672 void page_cache_sync_ra(struct readahead_control *ractl,
675 bool do_forced_ra = ractl->file && (ractl->file->f_mode & FMODE_RANDOM);
683 if (!ractl->ra->ra_pages || blk_cgroup_congested()) {
684 if (!ractl->file)
692 force_page_cache_ra(ractl, req_count);
696 ondemand_readahead(ractl, NULL, req_count);
700 void page_cache_async_ra(struct readahead_control *ractl,
704 if (!ractl->ra->ra_pages)
718 ondemand_readahead(ractl, folio, req_count);
763 * @ractl: The request to be expanded
776 * The caller must check for this by examining the revised @ractl object for a
779 void readahead_expand(struct readahead_control *ractl,
782 struct address_space *mapping = ractl->mapping;
783 struct file_ra_state *ra = ractl->ra;
790 while (ractl->_index > new_index) {
791 unsigned long index = ractl->_index - 1;
805 !ractl->_workingset) {
806 ractl->_workingset = true;
807 psi_memstall_enter(&ractl->_pflags);
809 ractl->_nr_pages++;
810 ractl->_index = folio->index;
813 new_len += new_start - readahead_pos(ractl);
817 while (ractl->_nr_pages < new_nr_pages) {
818 unsigned long index = ractl->_index + ractl->_nr_pages;
832 !ractl->_workingset) {
833 ractl->_workingset = true;
834 psi_memstall_enter(&ractl->_pflags);
836 ractl->_nr_pages++;