Lines Matching refs: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);
241 read_pages(ractl);
242 ractl->_index++;
243 i = ractl->_index + ractl->_nr_pages - index - 1;
253 read_pages(ractl);
254 ractl->_index++;
255 i = ractl->_index + ractl->_nr_pages - index - 1;
260 ractl->_workingset |= folio_test_workingset(folio);
261 ractl->_nr_pages++;
269 read_pages(ractl);
281 static void do_page_cache_ra(struct readahead_control *ractl,
284 struct inode *inode = ractl->mapping->host;
285 unsigned long index = readahead_index(ractl);
299 page_cache_ra_unbounded(ractl, nr_to_read, lookahead_size);
306 void force_page_cache_ra(struct readahead_control *ractl,
309 struct address_space *mapping = ractl->mapping;
310 struct file_ra_state *ra = ractl->ra;
321 index = readahead_index(ractl);
329 ractl->_index = index;
330 do_page_cache_ra(ractl, this_chunk, 0);
464 static inline int ra_alloc_folio(struct readahead_control *ractl, pgoff_t index,
475 err = filemap_add_folio(ractl->mapping, folio, index, gfp);
481 ractl->_nr_pages += 1UL << order;
482 ractl->_workingset |= folio_test_workingset(folio);
486 void page_cache_ra_order(struct readahead_control *ractl,
489 struct address_space *mapping = ractl->mapping;
490 pgoff_t index = readahead_index(ractl);
524 err = ra_alloc_folio(ractl, index, mark, order, gfp);
535 read_pages(ractl);
546 do_page_cache_ra(ractl, ra->size, ra->async_size);
552 static void ondemand_readahead(struct readahead_control *ractl,
555 struct backing_dev_info *bdi = inode_to_bdi(ractl->mapping->host);
556 struct file_ra_state *ra = ractl->ra;
559 pgoff_t index = readahead_index(ractl);
599 start = page_cache_next_miss(ractl->mapping, index + 1,
633 if (try_context_readahead(ractl->mapping, ra, index, req_size,
641 do_page_cache_ra(ractl, req_size, 0);
667 ractl->_index = ra->start;
668 page_cache_ra_order(ractl, ra, order);
671 void page_cache_sync_ra(struct readahead_control *ractl,
674 bool do_forced_ra = ractl->file && (ractl->file->f_mode & FMODE_RANDOM);
682 if (!ractl->ra->ra_pages || blk_cgroup_congested()) {
683 if (!ractl->file)
691 force_page_cache_ra(ractl, req_count);
695 ondemand_readahead(ractl, NULL, req_count);
699 void page_cache_async_ra(struct readahead_control *ractl,
703 if (!ractl->ra->ra_pages)
717 ondemand_readahead(ractl, folio, req_count);
762 * @ractl: The request to be expanded
775 * The caller must check for this by examining the revised @ractl object for a
778 void readahead_expand(struct readahead_control *ractl,
781 struct address_space *mapping = ractl->mapping;
782 struct file_ra_state *ra = ractl->ra;
789 while (ractl->_index > new_index) {
790 unsigned long index = ractl->_index - 1;
804 !ractl->_workingset) {
805 ractl->_workingset = true;
806 psi_memstall_enter(&ractl->_pflags);
808 ractl->_nr_pages++;
809 ractl->_index = folio->index;
812 new_len += new_start - readahead_pos(ractl);
816 while (ractl->_nr_pages < new_nr_pages) {
817 unsigned long index = ractl->_index + ractl->_nr_pages;
831 !ractl->_workingset) {
832 ractl->_workingset = true;
833 psi_memstall_enter(&ractl->_pflags);
835 ractl->_nr_pages++;