Lines Matching full:ra
36 * memset *ra to zero.
39 file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping) in file_ra_state_init() argument
41 ra->ra_pages = inode_to_bdi(mapping->host)->ra_pages; in file_ra_state_init()
42 ra->prev_pos = -1; in file_ra_state_init()
289 struct file_ra_state *ra, unsigned long nr_to_read) in force_page_cache_ra() argument
307 max_pages = max_t(unsigned long, bdi->io_pages, ra->ra_pages); in force_page_cache_ra()
339 * for 128k (32 page) max ra
360 static unsigned long get_next_ra_size(struct file_ra_state *ra, in get_next_ra_size() argument
363 unsigned long cur = ra->size; in get_next_ra_size()
433 struct file_ra_state *ra, in try_context_readahead() argument
456 ra->start = index; in try_context_readahead()
457 ra->size = min(size + req_size, max); in try_context_readahead()
458 ra->async_size = 1; in try_context_readahead()
467 struct file_ra_state *ra, bool hit_readahead_marker, in ondemand_readahead() argument
471 unsigned long max_pages = ra->ra_pages; in ondemand_readahead()
495 if ((index == (ra->start + ra->size - ra->async_size) || in ondemand_readahead()
496 index == (ra->start + ra->size))) { in ondemand_readahead()
497 ra->start += ra->size; in ondemand_readahead()
498 ra->size = get_next_ra_size(ra, max_pages); in ondemand_readahead()
499 ra->async_size = ra->size; in ondemand_readahead()
520 ra->start = start; in ondemand_readahead()
521 ra->size = start - index; /* old async_size */ in ondemand_readahead()
522 ra->size += req_size; in ondemand_readahead()
523 ra->size = get_next_ra_size(ra, max_pages); in ondemand_readahead()
524 ra->async_size = ra->size; in ondemand_readahead()
539 prev_index = (unsigned long long)ra->prev_pos >> PAGE_SHIFT; in ondemand_readahead()
547 if (try_context_readahead(ractl->mapping, ra, index, req_size, in ondemand_readahead()
559 ra->start = index; in ondemand_readahead()
560 ra->size = get_init_ra_size(req_size, max_pages); in ondemand_readahead()
561 ra->async_size = ra->size > req_size ? ra->size - req_size : ra->size; in ondemand_readahead()
570 if (index == ra->start && ra->size == ra->async_size) { in ondemand_readahead()
571 add_pages = get_next_ra_size(ra, max_pages); in ondemand_readahead()
572 if (ra->size + add_pages <= max_pages) { in ondemand_readahead()
573 ra->async_size = add_pages; in ondemand_readahead()
574 ra->size += add_pages; in ondemand_readahead()
576 ra->size = max_pages; in ondemand_readahead()
577 ra->async_size = max_pages >> 1; in ondemand_readahead()
581 ractl->_index = ra->start; in ondemand_readahead()
582 do_page_cache_ra(ractl, ra->size, ra->async_size); in ondemand_readahead()
586 struct file_ra_state *ra, unsigned long req_count) in page_cache_sync_ra() argument
596 if (!ra->ra_pages || blk_cgroup_congested()) { in page_cache_sync_ra()
605 force_page_cache_ra(ractl, ra, req_count); in page_cache_sync_ra()
610 ondemand_readahead(ractl, ra, false, req_count); in page_cache_sync_ra()
615 struct file_ra_state *ra, struct page *page, in page_cache_async_ra() argument
619 if (!ra->ra_pages) in page_cache_async_ra()
640 ondemand_readahead(ractl, ra, true, req_count); in page_cache_async_ra()