summaryrefslogtreecommitdiff
path: root/mm/readahead.c
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2024-06-25 12:19:00 +0200
committerAndrew Morton <akpm@linux-foundation.org>2024-07-03 19:30:28 -0700
commit58540f5cde404f512c80fb7b868b12005f0e2747 (patch)
treed90fcde45b3aff901e30e3921e28c30cdfa5d422 /mm/readahead.c
parenta6eccd5be3e99fd7e707edd73e959d38722bbade (diff)
downloadlwn-58540f5cde404f512c80fb7b868b12005f0e2747.tar.gz
lwn-58540f5cde404f512c80fb7b868b12005f0e2747.zip
readahead: simplify gotos in page_cache_sync_ra()
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>
Diffstat (limited to 'mm/readahead.c')
-rw-r--r--mm/readahead.c26
1 files changed, 9 insertions, 17 deletions
diff --git a/mm/readahead.c b/mm/readahead.c
index 12c0d2215329..d68d5ce657a7 100644
--- a/mm/readahead.c
+++ b/mm/readahead.c
@@ -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)
@@ -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);