aboutsummaryrefslogtreecommitdiffstats
path: root/module
diff options
context:
space:
mode:
authorRiccardo Schirone <[email protected]>2022-04-02 01:15:25 +0200
committerBrian Behlendorf <[email protected]>2022-04-06 13:15:27 -0700
commit35ddd8ee2e5fdbaa5b0d94c063bbc1a79ab12cb1 (patch)
tree027fd97aa560ed0bf718cc65cd6fa0b383b80822 /module
parent10a9f5fc47acc6c9d3475023001264ca5fb741a6 (diff)
Linux 5.18 compat: use address_space_operations->readahead
->readpages was removed and replaced by ->readahead. Define zpl_readahead for kernels that don't have ->readpages. Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Riccardo Schirone <[email protected]> Closes #13278
Diffstat (limited to 'module')
-rw-r--r--module/os/linux/zfs/zpl_file.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/module/os/linux/zfs/zpl_file.c b/module/os/linux/zfs/zpl_file.c
index f1241c443..4965815ec 100644
--- a/module/os/linux/zfs/zpl_file.c
+++ b/module/os/linux/zfs/zpl_file.c
@@ -647,12 +647,29 @@ zpl_readpage_filler(void *data, struct page *pp)
* paging. For simplicity, the code relies on read_cache_pages() to
* correctly lock each page for IO and call zpl_readpage().
*/
+#ifdef HAVE_VFS_READPAGES
static int
zpl_readpages(struct file *filp, struct address_space *mapping,
struct list_head *pages, unsigned nr_pages)
{
return (read_cache_pages(mapping, pages, zpl_readpage_filler, NULL));
}
+#else
+static void
+zpl_readahead(struct readahead_control *ractl)
+{
+ struct page *page;
+
+ while ((page = readahead_page(ractl)) != NULL) {
+ int ret;
+
+ ret = zpl_readpage_filler(NULL, page);
+ put_page(page);
+ if (ret)
+ break;
+ }
+}
+#endif
static int
zpl_putpage(struct page *pp, struct writeback_control *wbc, void *data)
@@ -1027,7 +1044,11 @@ zpl_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
const struct address_space_operations zpl_address_space_operations = {
+#ifdef HAVE_VFS_READPAGES
.readpages = zpl_readpages,
+#else
+ .readahead = zpl_readahead,
+#endif
.readpage = zpl_readpage,
.writepage = zpl_writepage,
.writepages = zpl_writepages,