From: Matthew Wilcox <willy@infradead.org>
To: linux-fsdevel@vger.kernel.org
Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
linux-btrfs@vger.kernel.org, linux-erofs@lists.ozlabs.org,
linux-ext4@vger.kernel.org,
linux-f2fs-devel@lists.sourceforge.net, cluster-devel@redhat.com,
ocfs2-devel@oss.oracle.com, linux-xfs@vger.kernel.org
Subject: [PATCH v6 01/19] mm: Return void from various readahead functions
Date: Mon, 17 Feb 2020 10:45:42 -0800 [thread overview]
Message-ID: <20200217184613.19668-2-willy@infradead.org> (raw)
In-Reply-To: <20200217184613.19668-1-willy@infradead.org>
From: "Matthew Wilcox (Oracle)" <willy@infradead.org>
ondemand_readahead has two callers, neither of which use the return value.
That means that both ra_submit and __do_page_cache_readahead() can return
void, and we don't need to worry that a present page in the readahead
window causes us to return a smaller nr_pages than we ought to have.
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
---
mm/internal.h | 8 ++++----
mm/readahead.c | 24 ++++++++++--------------
2 files changed, 14 insertions(+), 18 deletions(-)
diff --git a/mm/internal.h b/mm/internal.h
index 3cf20ab3ca01..f779f058118b 100644
--- a/mm/internal.h
+++ b/mm/internal.h
@@ -49,18 +49,18 @@ void unmap_page_range(struct mmu_gather *tlb,
unsigned long addr, unsigned long end,
struct zap_details *details);
-extern unsigned int __do_page_cache_readahead(struct address_space *mapping,
+extern void __do_page_cache_readahead(struct address_space *mapping,
struct file *filp, pgoff_t offset, unsigned long nr_to_read,
unsigned long lookahead_size);
/*
* Submit IO for the read-ahead request in file_ra_state.
*/
-static inline unsigned long ra_submit(struct file_ra_state *ra,
+static inline void ra_submit(struct file_ra_state *ra,
struct address_space *mapping, struct file *filp)
{
- return __do_page_cache_readahead(mapping, filp,
- ra->start, ra->size, ra->async_size);
+ __do_page_cache_readahead(mapping, filp,
+ ra->start, ra->size, ra->async_size);
}
/*
diff --git a/mm/readahead.c b/mm/readahead.c
index 2fe72cd29b47..8ce46d69e6ae 100644
--- a/mm/readahead.c
+++ b/mm/readahead.c
@@ -149,10 +149,8 @@ static int read_pages(struct address_space *mapping, struct file *filp,
* the pages first, then submits them for I/O. This avoids the very bad
* behaviour which would occur if page allocations are causing VM writeback.
* We really don't want to intermingle reads and writes like that.
- *
- * Returns the number of pages requested, or the maximum amount of I/O allowed.
*/
-unsigned int __do_page_cache_readahead(struct address_space *mapping,
+void __do_page_cache_readahead(struct address_space *mapping,
struct file *filp, pgoff_t offset, unsigned long nr_to_read,
unsigned long lookahead_size)
{
@@ -166,7 +164,7 @@ unsigned int __do_page_cache_readahead(struct address_space *mapping,
gfp_t gfp_mask = readahead_gfp_mask(mapping);
if (isize == 0)
- goto out;
+ return;
end_index = ((isize - 1) >> PAGE_SHIFT);
@@ -211,8 +209,6 @@ unsigned int __do_page_cache_readahead(struct address_space *mapping,
if (nr_pages)
read_pages(mapping, filp, &page_pool, nr_pages, gfp_mask);
BUG_ON(!list_empty(&page_pool));
-out:
- return nr_pages;
}
/*
@@ -378,11 +374,10 @@ static int try_context_readahead(struct address_space *mapping,
/*
* A minimal readahead algorithm for trivial sequential/random reads.
*/
-static unsigned long
-ondemand_readahead(struct address_space *mapping,
- struct file_ra_state *ra, struct file *filp,
- bool hit_readahead_marker, pgoff_t offset,
- unsigned long req_size)
+static void ondemand_readahead(struct address_space *mapping,
+ struct file_ra_state *ra, struct file *filp,
+ bool hit_readahead_marker, pgoff_t offset,
+ unsigned long req_size)
{
struct backing_dev_info *bdi = inode_to_bdi(mapping->host);
unsigned long max_pages = ra->ra_pages;
@@ -428,7 +423,7 @@ ondemand_readahead(struct address_space *mapping,
rcu_read_unlock();
if (!start || start - offset > max_pages)
- return 0;
+ return;
ra->start = start;
ra->size = start - offset; /* old async_size */
@@ -464,7 +459,8 @@ ondemand_readahead(struct address_space *mapping,
* standalone, small random read
* Read as is, and do not pollute the readahead state.
*/
- return __do_page_cache_readahead(mapping, filp, offset, req_size, 0);
+ __do_page_cache_readahead(mapping, filp, offset, req_size, 0);
+ return;
initial_readahead:
ra->start = offset;
@@ -489,7 +485,7 @@ ondemand_readahead(struct address_space *mapping,
}
}
- return ra_submit(ra, mapping, filp);
+ ra_submit(ra, mapping, filp);
}
/**
--
2.25.0
next prev parent reply other threads:[~2020-02-17 18:46 UTC|newest]
Thread overview: 111+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-17 18:45 [PATCH v6 00/19] Change readahead API Matthew Wilcox
2020-02-17 18:45 ` Matthew Wilcox [this message]
2020-02-18 4:47 ` [PATCH v6 01/19] mm: Return void from various readahead functions Dave Chinner
2020-02-18 21:05 ` John Hubbard
2020-02-18 21:21 ` Matthew Wilcox
2020-02-18 21:52 ` John Hubbard
2020-02-17 18:45 ` [PATCH v6 02/19] mm: Ignore return value of ->readpages Matthew Wilcox
2020-02-18 4:48 ` Dave Chinner
2020-02-18 21:33 ` John Hubbard
2020-02-17 18:45 ` [PATCH v6 03/19] mm: Use readahead_control to pass arguments Matthew Wilcox
2020-02-18 5:03 ` Dave Chinner
2020-02-18 13:56 ` Matthew Wilcox
2020-02-18 22:46 ` Dave Chinner
2020-02-18 22:52 ` Matthew Wilcox
2020-02-18 22:22 ` John Hubbard
2020-02-17 18:45 ` [PATCH v6 04/19] mm: Rearrange readahead loop Matthew Wilcox
2020-02-18 5:08 ` Dave Chinner
2020-02-18 13:57 ` Matthew Wilcox
2020-02-18 22:48 ` Dave Chinner
2020-02-18 22:33 ` John Hubbard
2020-02-17 18:45 ` [PATCH v6 04/16] mm: Tweak readahead loop slightly Matthew Wilcox
2020-02-18 22:57 ` John Hubbard
2020-02-18 23:00 ` John Hubbard
2020-02-17 18:45 ` [PATCH v6 05/16] mm: Put readahead pages in cache earlier Matthew Wilcox
2020-02-17 18:45 ` [PATCH v6 05/19] mm: Remove 'page_offset' from readahead loop Matthew Wilcox
2020-02-18 5:14 ` Dave Chinner
2020-02-18 23:08 ` John Hubbard
2020-02-17 18:45 ` [PATCH v6 06/16] mm: Add readahead address space operation Matthew Wilcox
2020-02-17 18:45 ` [PATCH v6 06/19] mm: rename readahead loop variable to 'i' Matthew Wilcox
2020-02-18 5:33 ` Dave Chinner
2020-02-18 23:11 ` John Hubbard
2020-02-17 18:45 ` [PATCH v6 07/16] mm: Add page_cache_readahead_limit Matthew Wilcox
2020-02-17 18:45 ` [PATCH v6 07/19] mm: Put readahead pages in cache earlier Matthew Wilcox
2020-02-18 6:14 ` Dave Chinner
2020-02-18 15:42 ` Matthew Wilcox
2020-02-19 0:59 ` Dave Chinner
2020-02-19 0:01 ` John Hubbard
2020-02-19 1:02 ` Matthew Wilcox
2020-02-19 1:13 ` John Hubbard
2020-02-19 3:24 ` John Hubbard
2020-02-19 14:41 ` Matthew Wilcox
2020-02-19 14:52 ` Christoph Hellwig
2020-02-19 15:01 ` Matthew Wilcox
2020-02-19 20:24 ` John Hubbard
2020-02-17 18:45 ` [PATCH v6 08/16] fs: Convert mpage_readpages to mpage_readahead Matthew Wilcox
2020-02-17 18:45 ` [PATCH v6 08/19] mm: Add readahead address space operation Matthew Wilcox
2020-02-18 6:21 ` Dave Chinner
2020-02-18 16:10 ` Matthew Wilcox
2020-02-19 1:04 ` Dave Chinner
2020-02-19 0:12 ` John Hubbard
2020-02-19 3:10 ` Eric Biggers
2020-02-19 3:35 ` Eric Biggers
2020-02-19 16:52 ` Matthew Wilcox
2020-02-17 18:45 ` [PATCH v6 09/16] btrfs: Convert from readpages to readahead Matthew Wilcox
2020-02-17 18:45 ` [PATCH v6 09/19] mm: Add page_cache_readahead_limit Matthew Wilcox
2020-02-18 6:31 ` Dave Chinner
2020-02-18 19:54 ` Matthew Wilcox
2020-02-19 1:08 ` Dave Chinner
2020-02-19 1:32 ` John Hubbard
2020-02-19 2:23 ` Matthew Wilcox
2020-02-19 2:46 ` John Hubbard
2020-02-17 18:45 ` [PATCH v6 10/16] erofs: Convert uncompressed files from readpages to readahead Matthew Wilcox
2020-02-17 18:45 ` [PATCH v6 10/19] fs: Convert mpage_readpages to mpage_readahead Matthew Wilcox
2020-02-18 1:51 ` [Ocfs2-devel] " Joseph Qi
2020-02-18 6:37 ` Dave Chinner
2020-02-19 2:48 ` John Hubbard
2020-02-19 3:28 ` Eric Biggers
2020-02-19 3:47 ` Matthew Wilcox
2020-02-19 3:55 ` Eric Biggers
2020-02-17 18:45 ` [PATCH v6 11/19] btrfs: Convert from readpages to readahead Matthew Wilcox
2020-02-18 6:57 ` Dave Chinner
2020-02-18 21:12 ` Matthew Wilcox
2020-02-19 1:23 ` Dave Chinner
2020-02-17 18:46 ` [PATCH v6 11/16] erofs: Convert compressed files " Matthew Wilcox
2020-02-19 2:34 ` Gao Xiang
2020-02-17 18:46 ` [PATCH v6 12/19] erofs: Convert uncompressed " Matthew Wilcox
2020-02-19 2:39 ` Gao Xiang
2020-02-19 3:04 ` Dave Chinner
2020-02-17 18:46 ` [PATCH v6 12/16] ext4: Convert " Matthew Wilcox
2020-02-17 18:46 ` [PATCH v6 13/19] erofs: Convert compressed files " Matthew Wilcox
2020-02-19 3:08 ` Dave Chinner
2020-02-17 18:46 ` [PATCH v6 13/16] f2fs: Convert " Matthew Wilcox
2020-02-17 18:46 ` [PATCH v6 14/19] ext4: " Matthew Wilcox
2020-02-19 3:16 ` Dave Chinner
2020-02-19 3:29 ` Eric Biggers
2020-02-17 18:46 ` [PATCH v6 14/16] fuse: " Matthew Wilcox
2020-02-17 18:46 ` [PATCH v6 15/19] f2fs: " Matthew Wilcox
2020-02-17 18:46 ` [PATCH v6 15/16] iomap: " Matthew Wilcox
2020-02-17 18:46 ` [PATCH v6 16/19] fuse: " Matthew Wilcox
2020-02-19 3:22 ` Dave Chinner
2020-02-17 18:46 ` [PATCH v6 16/16] mm: Use memalloc_nofs_save in readahead path Matthew Wilcox
2020-02-17 18:46 ` [PATCH v6 17/19] iomap: Restructure iomap_readpages_actor Matthew Wilcox
2020-02-19 3:17 ` John Hubbard
2020-02-19 5:35 ` Matthew Wilcox
2020-02-19 3:29 ` Dave Chinner
2020-02-19 6:04 ` Matthew Wilcox
2020-02-19 6:40 ` Dave Chinner
2020-02-19 17:06 ` Matthew Wilcox
2020-02-17 18:46 ` [PATCH v6 18/19] iomap: Convert from readpages to readahead Matthew Wilcox
2020-02-19 3:40 ` Dave Chinner
2020-02-17 18:46 ` [PATCH v6 19/19] mm: Use memalloc_nofs_save in readahead path Matthew Wilcox
2020-02-19 3:43 ` Dave Chinner
2020-02-19 5:22 ` Matthew Wilcox
2020-02-17 18:48 ` [PATCH v6 00/19] Change readahead API Matthew Wilcox
2020-02-18 4:56 ` Dave Chinner
2020-02-18 13:42 ` Matthew Wilcox
2020-02-18 21:26 ` Dave Chinner
2020-02-19 3:45 ` Dave Chinner
2020-02-19 3:48 ` Matthew Wilcox
2020-02-19 3:57 ` Dave Chinner
2020-02-18 20:49 ` John Hubbard
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200217184613.19668-2-willy@infradead.org \
--to=willy@infradead.org \
--cc=cluster-devel@redhat.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-erofs@lists.ozlabs.org \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-f2fs-devel@lists.sourceforge.net \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-xfs@vger.kernel.org \
--cc=ocfs2-devel@oss.oracle.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).