__vfs_setxattr(NULL, NULL, NULL, NULL, 0, 0);
],[
AC_DEFINE(HAVE_VFS_SETXATTR, 1,
- ['__vfs_setxattr is available])
+ ['__vfs_setxattr' is available])
])
]) # LC_VFS_SETXATTR
]) # LC_FSCRYPT_DUMMY_CONTEXT_ENABLED
#
+# LC_HAVE_ITER_FILE_SPLICE_WRITE
+#
+# Linux commit v5.9-rc1-6-g36e2c7421f02
+# fs: don't allow splice read/write without explicit ops
+#
+AC_DEFUN([LC_HAVE_ITER_FILE_SPLICE_WRITE], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_COMPILE([if 'iter_file_splice_write' exists],
+iter_file_splice_write, [
+ #include <linux/fs.h>
+],[
+ (void)iter_file_splice_write(NULL, NULL, NULL, 1, 0);
+],[
+ AC_DEFINE(HAVE_ITER_FILE_SPLICE_WRITE, 1,
+ ['iter_file_splice_write' exists])
+])
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LC_HAVE_ITER_FILE_SPLICE_WRITE
+
+#
# LC_FSCRYPT_IS_NOKEY_NAME
#
# Kernel 5.10-rc4 159e1de201b6fca10bfec50405a3b53a561096a8
# 5.10
LC_FSCRYPT_IS_NOKEY_NAME
+ # 5.10
+ LC_HAVE_ITER_FILE_SPLICE_WRITE
+
# 5.12
LC_HAVE_USER_NAMESPACE_ARG
#else
.splice_read = pcc_file_splice_read,
#endif
+#ifdef HAVE_ITER_FILE_SPLICE_WRITE
+ .splice_write = iter_file_splice_write,
+#endif
.fsync = ll_fsync,
.flush = ll_flush,
.fallocate = ll_fallocate,
#else
.splice_read = pcc_file_splice_read,
#endif
+#ifdef HAVE_ITER_FILE_SPLICE_WRITE
+ .splice_write = iter_file_splice_write,
+#endif
.fsync = ll_fsync,
.flush = ll_flush,
.flock = ll_file_flock,
#else
.splice_read = pcc_file_splice_read,
#endif
+#ifdef HAVE_ITER_FILE_SPLICE_WRITE
+ .splice_write = iter_file_splice_write,
+#endif
.fsync = ll_fsync,
.flush = ll_flush,
.flock = ll_file_noflock,