71 lines
2.6 KiB
Diff
71 lines
2.6 KiB
Diff
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||
|
From: Richard Yao <ryao@gentoo.org>
|
||
|
Date: Tue, 9 Jan 2018 19:18:19 -0500
|
||
|
Subject: [PATCH] Fix incompatibility with Reiser4 patched kernels
|
||
|
MIME-Version: 1.0
|
||
|
Content-Type: text/plain; charset=UTF-8
|
||
|
Content-Transfer-Encoding: 8bit
|
||
|
|
||
|
In ZFSOnLinux, our sources and build system are self contained such that
|
||
|
we do not need to make changes to the Linux kernel sources. Reiser4 on
|
||
|
the other hand exists solely as a kernel tree patch and opts to make
|
||
|
changes to the kernel rather than adapt to it. After Linux 4.1 made a
|
||
|
VFS change that replaced new_sync_read with do_sync_read, Reiser4's
|
||
|
maintainer decided to modify the kernel VFS to export the old function.
|
||
|
This caused our autotools check to misidentify the kernel API as
|
||
|
predating Linux 4.1 on kernels that have been patched with Reiser4
|
||
|
support, which breaks our build.
|
||
|
|
||
|
Reiser4 really should be patched to stop doing this, but lets modify our
|
||
|
check to be more strict to help the affected users of both filesystems.
|
||
|
|
||
|
Also, we were not checking the types of arguments and return value of
|
||
|
new_sync_read() and new_sync_write() . Lets fix that too.
|
||
|
|
||
|
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
|
||
|
Reviewed-by: Giuseppe Di Natale <dinatale2@llnl.gov>
|
||
|
Reviewed-by: George Melikov <mail@gmelikov.ru>
|
||
|
Signed-off-by: Richard Yao <ryao@gentoo.org>
|
||
|
Closes #6241
|
||
|
Closes #7021
|
||
|
(cherry picked from commit ecc8af18125728bf03841ceb48b057e15d96362c)
|
||
|
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
|
||
|
---
|
||
|
config/kernel-vfs-rw-iterate.m4 | 14 +++++++++++---
|
||
|
1 file changed, 11 insertions(+), 3 deletions(-)
|
||
|
|
||
|
diff --git a/config/kernel-vfs-rw-iterate.m4 b/config/kernel-vfs-rw-iterate.m4
|
||
|
index 9f8fe6559..ace54f707 100644
|
||
|
--- a/config/kernel-vfs-rw-iterate.m4
|
||
|
+++ b/config/kernel-vfs-rw-iterate.m4
|
||
|
@@ -32,15 +32,23 @@ dnl #
|
||
|
dnl # Linux 4.1 API
|
||
|
dnl #
|
||
|
AC_DEFUN([ZFS_AC_KERNEL_NEW_SYNC_READ],
|
||
|
- [AC_MSG_CHECKING([whether new_sync_read() is available])
|
||
|
+ [AC_MSG_CHECKING([whether new_sync_read/write() are available])
|
||
|
ZFS_LINUX_TRY_COMPILE([
|
||
|
#include <linux/fs.h>
|
||
|
],[
|
||
|
- new_sync_read(NULL, NULL, 0, NULL);
|
||
|
+ ssize_t ret __attribute__ ((unused));
|
||
|
+ struct file *filp = NULL;
|
||
|
+ char __user *rbuf = NULL;
|
||
|
+ const char __user *wbuf = NULL;
|
||
|
+ size_t len = 0;
|
||
|
+ loff_t ppos;
|
||
|
+
|
||
|
+ ret = new_sync_read(filp, rbuf, len, &ppos);
|
||
|
+ ret = new_sync_write(filp, wbuf, len, &ppos);
|
||
|
],[
|
||
|
AC_MSG_RESULT(yes)
|
||
|
AC_DEFINE(HAVE_NEW_SYNC_READ, 1,
|
||
|
- [new_sync_read() is available])
|
||
|
+ [new_sync_read()/new_sync_write() are available])
|
||
|
],[
|
||
|
AC_MSG_RESULT(no)
|
||
|
])
|
||
|
--
|
||
|
2.14.2
|
||
|
|