mirror of
https://git.proxmox.com/git/zfsonlinux
synced 2025-10-04 08:18:36 +00:00
cherry-pick fixes for Linux 6.14 compat
The 6.13 kernel is supported without any additional changes required and 6.14 needs only two smaller ones, so backport them to 2.2.7 to be able to provide a more recent opt-in kernel soonish. Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
parent
3db234ab64
commit
7cbbd2bfe5
103
debian/patches/0014-Linux-6.14-dops-d_revalidate-now-takes-four-args.patch
vendored
Normal file
103
debian/patches/0014-Linux-6.14-dops-d_revalidate-now-takes-four-args.patch
vendored
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Rob Norris <robn@despairlabs.com>
|
||||||
|
Date: Wed, 5 Feb 2025 17:14:20 +1100
|
||||||
|
Subject: [PATCH] Linux 6.14: dops->d_revalidate now takes four args
|
||||||
|
|
||||||
|
This is a convenience for filesystems that need the inode of their
|
||||||
|
parent or their own name, as its often complicated to get that
|
||||||
|
information. We don't need those things, so this is just detecting which
|
||||||
|
prototype is expected and adjusting our callback to match.
|
||||||
|
|
||||||
|
Sponsored-by: https://despairlabs.com/sponsor/
|
||||||
|
Signed-off-by: Rob Norris <robn@despairlabs.com>
|
||||||
|
Reviewed-by: Alexander Motin <mav@FreeBSD.org>
|
||||||
|
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
|
||||||
|
(cherry picked from commit 7ef6b70e960a7cc504242952699057f0ee616449)
|
||||||
|
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||||
|
---
|
||||||
|
config/kernel-automount.m4 | 41 ++++++++++++++++++++++++++++++--
|
||||||
|
module/os/linux/zfs/zpl_ctldir.c | 6 +++++
|
||||||
|
2 files changed, 45 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/config/kernel-automount.m4 b/config/kernel-automount.m4
|
||||||
|
index 52f1931b7..b5f1392d0 100644
|
||||||
|
--- a/config/kernel-automount.m4
|
||||||
|
+++ b/config/kernel-automount.m4
|
||||||
|
@@ -5,7 +5,7 @@ dnl # solution to handling automounts. Prior to this cifs/nfs clients
|
||||||
|
dnl # which required automount support would abuse the follow_link()
|
||||||
|
dnl # operation on directories for this purpose.
|
||||||
|
dnl #
|
||||||
|
-AC_DEFUN([ZFS_AC_KERNEL_SRC_AUTOMOUNT], [
|
||||||
|
+AC_DEFUN([ZFS_AC_KERNEL_SRC_D_AUTOMOUNT], [
|
||||||
|
ZFS_LINUX_TEST_SRC([dentry_operations_d_automount], [
|
||||||
|
#include <linux/dcache.h>
|
||||||
|
static struct vfsmount *d_automount(struct path *p) { return NULL; }
|
||||||
|
@@ -15,7 +15,7 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_AUTOMOUNT], [
|
||||||
|
])
|
||||||
|
])
|
||||||
|
|
||||||
|
-AC_DEFUN([ZFS_AC_KERNEL_AUTOMOUNT], [
|
||||||
|
+AC_DEFUN([ZFS_AC_KERNEL_D_AUTOMOUNT], [
|
||||||
|
AC_MSG_CHECKING([whether dops->d_automount() exists])
|
||||||
|
ZFS_LINUX_TEST_RESULT([dentry_operations_d_automount], [
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
@@ -23,3 +23,40 @@ AC_DEFUN([ZFS_AC_KERNEL_AUTOMOUNT], [
|
||||||
|
ZFS_LINUX_TEST_ERROR([dops->d_automount()])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
+
|
||||||
|
+dnl #
|
||||||
|
+dnl # 6.14 API change
|
||||||
|
+dnl # dops->d_revalidate now has four args.
|
||||||
|
+dnl #
|
||||||
|
+AC_DEFUN([ZFS_AC_KERNEL_SRC_D_REVALIDATE_4ARGS], [
|
||||||
|
+ ZFS_LINUX_TEST_SRC([dentry_operations_d_revalidate_4args], [
|
||||||
|
+ #include <linux/dcache.h>
|
||||||
|
+ static int d_revalidate(struct inode *dir,
|
||||||
|
+ const struct qstr *name, struct dentry *dentry,
|
||||||
|
+ unsigned int fl) { return 0; }
|
||||||
|
+ struct dentry_operations dops __attribute__ ((unused)) = {
|
||||||
|
+ .d_revalidate = d_revalidate,
|
||||||
|
+ };
|
||||||
|
+ ])
|
||||||
|
+])
|
||||||
|
+
|
||||||
|
+AC_DEFUN([ZFS_AC_KERNEL_D_REVALIDATE_4ARGS], [
|
||||||
|
+ AC_MSG_CHECKING([whether dops->d_revalidate() takes 4 args])
|
||||||
|
+ ZFS_LINUX_TEST_RESULT([dentry_operations_d_revalidate_4args], [
|
||||||
|
+ AC_MSG_RESULT(yes)
|
||||||
|
+ AC_DEFINE(HAVE_D_REVALIDATE_4ARGS, 1,
|
||||||
|
+ [dops->d_revalidate() takes 4 args])
|
||||||
|
+ ],[
|
||||||
|
+ AC_MSG_RESULT(no)
|
||||||
|
+ ])
|
||||||
|
+])
|
||||||
|
+
|
||||||
|
+AC_DEFUN([ZFS_AC_KERNEL_SRC_AUTOMOUNT], [
|
||||||
|
+ ZFS_AC_KERNEL_SRC_D_AUTOMOUNT
|
||||||
|
+ ZFS_AC_KERNEL_SRC_D_REVALIDATE_4ARGS
|
||||||
|
+])
|
||||||
|
+
|
||||||
|
+AC_DEFUN([ZFS_AC_KERNEL_AUTOMOUNT], [
|
||||||
|
+ ZFS_AC_KERNEL_D_AUTOMOUNT
|
||||||
|
+ ZFS_AC_KERNEL_D_REVALIDATE_4ARGS
|
||||||
|
+])
|
||||||
|
diff --git a/module/os/linux/zfs/zpl_ctldir.c b/module/os/linux/zfs/zpl_ctldir.c
|
||||||
|
index 56a30be51..d6a755af6 100644
|
||||||
|
--- a/module/os/linux/zfs/zpl_ctldir.c
|
||||||
|
+++ b/module/os/linux/zfs/zpl_ctldir.c
|
||||||
|
@@ -185,8 +185,14 @@ zpl_snapdir_automount(struct path *path)
|
||||||
|
* as of the 3.18 kernel revaliding the mountpoint dentry will result in
|
||||||
|
* the snapshot being immediately unmounted.
|
||||||
|
*/
|
||||||
|
+#ifdef HAVE_D_REVALIDATE_4ARGS
|
||||||
|
+static int
|
||||||
|
+zpl_snapdir_revalidate(struct inode *dir, const struct qstr *name,
|
||||||
|
+ struct dentry *dentry, unsigned int flags)
|
||||||
|
+#else
|
||||||
|
static int
|
||||||
|
zpl_snapdir_revalidate(struct dentry *dentry, unsigned int flags)
|
||||||
|
+#endif
|
||||||
|
{
|
||||||
|
return (!!dentry->d_inode);
|
||||||
|
}
|
44
debian/patches/0015-Linux-6.14-BLK_MQ_F_SHOULD_MERGE-was-removed.patch
vendored
Normal file
44
debian/patches/0015-Linux-6.14-BLK_MQ_F_SHOULD_MERGE-was-removed.patch
vendored
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Rob Norris <robn@despairlabs.com>
|
||||||
|
Date: Wed, 5 Feb 2025 17:52:45 +1100
|
||||||
|
Subject: [PATCH] Linux 6.14: BLK_MQ_F_SHOULD_MERGE was removed
|
||||||
|
|
||||||
|
According to the upstream change, all callers set it, and all block
|
||||||
|
devices either honoured it or ignored it, so removing it entirely allows
|
||||||
|
a bunch of handling for the "unset" case to be removed, and it becomes
|
||||||
|
effectively implied.
|
||||||
|
|
||||||
|
We follow suit, and keep setting it for older kernels.
|
||||||
|
|
||||||
|
Sponsored-by: https://despairlabs.com/sponsor/
|
||||||
|
Signed-off-by: Rob Norris <robn@despairlabs.com>
|
||||||
|
Reviewed-by: Alexander Motin <mav@FreeBSD.org>
|
||||||
|
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
|
||||||
|
(cherry picked from commit 2ca91ba3cf209c6f1db42247ff2ca3f9ce4f2d4d)
|
||||||
|
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||||
|
---
|
||||||
|
module/os/linux/zfs/zvol_os.c | 11 ++++++++++-
|
||||||
|
1 file changed, 10 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/module/os/linux/zfs/zvol_os.c b/module/os/linux/zfs/zvol_os.c
|
||||||
|
index 01f812b8e..4c61ae232 100644
|
||||||
|
--- a/module/os/linux/zfs/zvol_os.c
|
||||||
|
+++ b/module/os/linux/zfs/zvol_os.c
|
||||||
|
@@ -202,7 +202,16 @@ static int zvol_blk_mq_alloc_tag_set(zvol_state_t *zv)
|
||||||
|
* We need BLK_MQ_F_BLOCKING here since we do blocking calls in
|
||||||
|
* zvol_request_impl()
|
||||||
|
*/
|
||||||
|
- zso->tag_set.flags = BLK_MQ_F_SHOULD_MERGE | BLK_MQ_F_BLOCKING;
|
||||||
|
+ zso->tag_set.flags = BLK_MQ_F_BLOCKING;
|
||||||
|
+
|
||||||
|
+#ifdef BLK_MQ_F_SHOULD_MERGE
|
||||||
|
+ /*
|
||||||
|
+ * Linux 6.14 removed BLK_MQ_F_SHOULD_MERGE and made it implicit.
|
||||||
|
+ * For older kernels, we set it.
|
||||||
|
+ */
|
||||||
|
+ zso->tag_set.flags |= BLK_MQ_F_SHOULD_MERGE;
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
zso->tag_set.driver_data = zv;
|
||||||
|
|
||||||
|
return (blk_mq_alloc_tag_set(&zso->tag_set));
|
2
debian/patches/series
vendored
2
debian/patches/series
vendored
@ -11,3 +11,5 @@
|
|||||||
0011-zpool-status-tighten-bounds-for-noalloc-stat-availab.patch
|
0011-zpool-status-tighten-bounds-for-noalloc-stat-availab.patch
|
||||||
0012-linux-zvols-correctly-detect-flush-requests.patch
|
0012-linux-zvols-correctly-detect-flush-requests.patch
|
||||||
0013-contrib-initramfs-use-LVM-autoactivation-for-activat.patch
|
0013-contrib-initramfs-use-LVM-autoactivation-for-activat.patch
|
||||||
|
0014-Linux-6.14-dops-d_revalidate-now-takes-four-args.patch
|
||||||
|
0015-Linux-6.14-BLK_MQ_F_SHOULD_MERGE-was-removed.patch
|
||||||
|
Loading…
Reference in New Issue
Block a user