]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
readahead: simplify gotos in page_cache_sync_ra()
authorJan Kara <jack@suse.cz>
Tue, 25 Jun 2024 10:19:00 +0000 (12:19 +0200)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 4 Jul 2024 02:30:28 +0000 (19:30 -0700)
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>
mm/readahead.c

index 12c0d2215329185ff8edd496008ac73e7d1cd0da..d68d5ce657a7d7cdb416d6c8a9a03cbb87a2ab4d 100644 (file)
@@ -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);