mirror of
https://git.proxmox.com/git/mirror_zfs
synced 2025-04-28 06:00:44 +00:00
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>
This commit is contained in:
parent
390f6c1190
commit
7ef6b70e96
@ -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
|
||||
])
|
||||
|
@ -189,8 +189,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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user