Skip to content

Commit

Permalink
readahead: simplify gotos in page_cache_sync_ra()
Browse files Browse the repository at this point in the history
Unify all conditions for initial readahead to simplify goto logic in
page_cache_sync_ra().  No functional changes.

Link: https://lkml.kernel.org/r/20240625101909.12234-10-jack@suse.cz
Signed-off-by: Jan Kara <jack@suse.cz>
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Tested-by: Zhang Peng <zhangpengpeng0808@gmail.com>
Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
  • Loading branch information
jankara authored and akpm00 committed Jul 4, 2024
1 parent a6eccd5 commit 58540f5
Showing 1 changed file with 9 additions and 17 deletions.
26 changes: 9 additions & 17 deletions mm/readahead.c
Original file line number Diff line number Diff line change
Expand Up @@ -532,20 +532,19 @@ void page_cache_sync_ra(struct readahead_control *ractl,
}

max_pages = ractl_max_pages(ractl, req_count);
prev_index = (unsigned long long)ra->prev_pos >> PAGE_SHIFT;
/*
* start of file or oversized read
*/
if (!index || req_count > max_pages)
goto initial_readahead;

/*
* sequential cache miss
* A start of file, oversized read, or sequential cache miss:
* trivial case: (index - prev_index) == 1
* unaligned reads: (index - prev_index) == 0
*/
prev_index = (unsigned long long)ra->prev_pos >> PAGE_SHIFT;
if (index - prev_index <= 1UL)
goto initial_readahead;
if (!index || req_count > max_pages || index - prev_index <= 1UL) {
ra->start = index;
ra->size = get_init_ra_size(req_count, max_pages);
ra->async_size = ra->size > req_count ? ra->size - req_count :
ra->size >> 1;
goto readit;
}

/*
* Query the page cache and look for the traces(cached history pages)
Expand All @@ -572,13 +571,6 @@ void page_cache_sync_ra(struct readahead_control *ractl,
ra->start = index;
ra->size = min(contig_count + req_count, max_pages);
ra->async_size = 1;
goto readit;

initial_readahead:
ra->start = index;
ra->size = get_init_ra_size(req_count, max_pages);
ra->async_size = ra->size > req_count ? ra->size - req_count :
ra->size >> 1;
readit:
ractl->_index = ra->start;
page_cache_ra_order(ractl, ra, 0);
Expand Down

0 comments on commit 58540f5

Please sign in to comment.