Skip to content

Commit

Permalink
Linux 6.12: f_version removed from struct file
Browse files Browse the repository at this point in the history
linux/torvalds@11068e0b64cb removes it, suggesting this was a always
there as a helper to handle concurrent seeks, which all filesystems now
handle themselves if necessary.

Without looking into the mechanism, I can imagine how it might have been
used, but we have always set it to zero and never read from it,
presumably because we've always tracked per-caller position through the
znode anyway. So I don't see how there can be any functional change for
us by removing it. I've stayed conservative though and left it in for
older kernels, since its clearly not hurting anything there.

Sponsored-by: https://despairlabs.com/sponsor/
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Rob Norris <robn@despairlabs.com>
Closes openzfs#16582
  • Loading branch information
robn authored and intelfx committed Oct 28, 2024
1 parent 00c75d4 commit 34d24ff
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 0 deletions.
31 changes: 31 additions & 0 deletions config/kernel-file.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
dnl #
dnl # 6.12 removed f_version from struct file
dnl #
AC_DEFUN([ZFS_AC_KERNEL_SRC_FILE_F_VERSION], [
ZFS_LINUX_TEST_SRC([file_f_version], [
#include <linux/fs.h>
static const struct f __attribute__((unused)) = {
.f_version = 0;
};
])
])

AC_DEFUN([ZFS_AC_KERNEL_FILE_F_VERSION], [
AC_MSG_CHECKING([whether file->f_version exists])
ZFS_LINUX_TEST_RESULT([file_f_version], [
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_FILE_F_VERSION, 1,
[file->f_version exists])
], [
AC_MSG_RESULT(no)
])
])

AC_DEFUN([ZFS_AC_KERNEL_FILE], [
ZFS_AC_KERNEL_FILE_F_VERSION
])

AC_DEFUN([ZFS_AC_KERNEL_SRC_FILE], [
ZFS_AC_KERNEL_SRC_FILE_F_VERSION
])
2 changes: 2 additions & 0 deletions config/kernel.m4
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_SRC], [
ZFS_AC_KERNEL_SRC_SYNC_BDEV
ZFS_AC_KERNEL_SRC_MM_PAGE_SIZE
ZFS_AC_KERNEL_SRC_MM_PAGE_MAPPING
ZFS_AC_KERNEL_SRC_FILE
case "$host_cpu" in
powerpc*)
ZFS_AC_KERNEL_SRC_CPU_HAS_FEATURE
Expand Down Expand Up @@ -327,6 +328,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_RESULT], [
ZFS_AC_KERNEL_MM_PAGE_SIZE
ZFS_AC_KERNEL_MM_PAGE_MAPPING
ZFS_AC_KERNEL_1ARG_ASSIGN_STR
ZFS_AC_KERNEL_FILE
case "$host_cpu" in
powerpc*)
ZFS_AC_KERNEL_CPU_HAS_FEATURE
Expand Down
2 changes: 2 additions & 0 deletions include/os/linux/kernel/linux/vfs_compat.h
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,9 @@ lseek_execute(
if (offset != filp->f_pos) {
spin_lock(&filp->f_lock);
filp->f_pos = offset;
#ifdef HAVE_FILE_F_VERSION
filp->f_version = 0;
#endif
spin_unlock(&filp->f_lock);
}

Expand Down

0 comments on commit 34d24ff

Please sign in to comment.