Whamcloud - gitweb
LU-16258 llite: Explicitly support .splice_write 28/48928/2
authorShaun Tancheff <shaun.tancheff@hpe.com>
Fri, 21 Oct 2022 04:54:49 +0000 (23:54 -0500)
committerOleg Drokin <green@whamcloud.com>
Wed, 2 Nov 2022 07:11:10 +0000 (07:11 +0000)
Linux commit v5.9-rc1-6-g36e2c7421f02
  fs: don't allow splice read/write without explicit ops

Lustre supports splice_write and previously provide handlers
for splice_read.
Explicitly use iter_file_splice_write, if it exists.

HPE-bug-id: LUS-11259
Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Change-Id: I858688fc9b4dd370b6018c3b134f01e580477b25
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/48928
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/autoconf/lustre-core.m4
lustre/llite/file.c

index 2353ae9..e197a80 100644 (file)
@@ -1919,7 +1919,7 @@ vfs_setxattr, [
        __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
 
@@ -2640,6 +2640,27 @@ EXTRA_KCFLAGS="$tmp_flags"
 ]) # 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
@@ -2906,6 +2927,9 @@ AC_DEFUN([LC_PROG_LINUX], [
        # 5.10
        LC_FSCRYPT_IS_NOKEY_NAME
 
+       # 5.10
+       LC_HAVE_ITER_FILE_SPLICE_WRITE
+
        # 5.12
        LC_HAVE_USER_NAMESPACE_ARG
 
index a454902..98c3cc7 100644 (file)
@@ -5707,6 +5707,9 @@ static const struct file_operations ll_file_operations = {
 #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,
@@ -5736,6 +5739,9 @@ static const struct file_operations ll_file_operations_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_flock,
@@ -5768,6 +5774,9 @@ static const struct file_operations ll_file_operations_noflock = {
 #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,