-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
linux: implement filesystem-side copy/clone functions for EL7
Redhat have backported copy_file_range and clone_file_range to the EL7 kernel using an "extended file operations" wrapper structure. This connects all that up to let cloning work there too. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Kay Pedersen <mail@mkwg.de> Signed-off-by: Rob Norris <rob.norris@klarasystems.com> Sponsored-By: OpenDrives Inc. Sponsored-By: Klara Inc. Closes #15050
- Loading branch information
1 parent
3366cea
commit 2768dc0
Showing
7 changed files
with
90 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
dnl # | ||
dnl # EL7 have backported copy_file_range and clone_file_range and | ||
dnl # added them to an "extended" file_operations struct. | ||
dnl # | ||
dnl # We're testing for both functions in one here, because they will only | ||
dnl # ever appear together and we don't want to match a similar method in | ||
dnl # some future vendor kernel. | ||
dnl # | ||
AC_DEFUN([ZFS_AC_KERNEL_SRC_VFS_FILE_OPERATIONS_EXTEND], [ | ||
ZFS_LINUX_TEST_SRC([vfs_file_operations_extend], [ | ||
#include <linux/fs.h> | ||
static ssize_t test_copy_file_range(struct file *src_file, | ||
loff_t src_off, struct file *dst_file, loff_t dst_off, | ||
size_t len, unsigned int flags) { | ||
(void) src_file; (void) src_off; | ||
(void) dst_file; (void) dst_off; | ||
(void) len; (void) flags; | ||
return (0); | ||
} | ||
static int test_clone_file_range(struct file *src_file, | ||
loff_t src_off, struct file *dst_file, loff_t dst_off, | ||
u64 len) { | ||
(void) src_file; (void) src_off; | ||
(void) dst_file; (void) dst_off; | ||
(void) len; | ||
return (0); | ||
} | ||
static const struct file_operations_extend | ||
fops __attribute__ ((unused)) = { | ||
.kabi_fops = {}, | ||
.copy_file_range = test_copy_file_range, | ||
.clone_file_range = test_clone_file_range, | ||
}; | ||
],[]) | ||
]) | ||
AC_DEFUN([ZFS_AC_KERNEL_VFS_FILE_OPERATIONS_EXTEND], [ | ||
AC_MSG_CHECKING([whether file_operations_extend takes \ | ||
.copy_file_range() and .clone_file_range()]) | ||
ZFS_LINUX_TEST_RESULT([vfs_file_operations_extend], [ | ||
AC_MSG_RESULT([yes]) | ||
AC_DEFINE(HAVE_VFS_FILE_OPERATIONS_EXTEND, 1, | ||
[file_operations_extend takes .copy_file_range() | ||
and .clone_file_range()]) | ||
],[ | ||
AC_MSG_RESULT([no]) | ||
]) | ||
]) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters