Commit 58540f5c authored by Jan Kara's avatar Jan Kara Committed by Andrew Morton
Browse files

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: default avatarJan Kara <jack@suse.cz>
Reviewed-by: default avatarJosef Bacik <josef@toxicpanda.com>
Tested-by: default avatarZhang Peng <zhangpengpeng0808@gmail.com>
Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent a6eccd5b
Loading
Loading
Loading
Loading
+9 −17
Original line number Diff line number Diff line
@@ -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);