xref: /freebsd/sys/contrib/openzfs/config/kernel-follow-down.m4 (revision 22649d4dba730d46244fd2dff4fd174903c8379f)
1dnl # SPDX-License-Identifier: CDDL-1.0
2dnl #
3dnl # 2.6.38 API change
4dnl # follow_down() renamed follow_down_one().  The original follow_down()
5dnl # symbol still exists but will traverse down all the layers.
6dnl #
7AC_DEFUN([ZFS_AC_KERNEL_SRC_FOLLOW_DOWN_ONE], [
8	ZFS_LINUX_TEST_SRC([follow_down_one], [
9		#include <linux/namei.h>
10	],[
11		struct path *p = NULL;
12		follow_down_one(p);
13	])
14])
15
16AC_DEFUN([ZFS_AC_KERNEL_FOLLOW_DOWN_ONE], [
17	AC_MSG_CHECKING([whether follow_down_one() is available])
18	ZFS_LINUX_TEST_RESULT([follow_down_one], [
19		AC_MSG_RESULT(yes)
20	],[
21		ZFS_LINUX_TEST_ERROR([follow_down_one()])
22	])
23])
24
25dnl #
26dnl # 6.3: look_down() gains a second flags param. Before this, we need
27dnl #      vfs_path_lookup() to build an emulation.
28dnl #
29dnl # 3.12: vfs_path_lookup unpublished from linux/namei.h, remains exported
30dnl # 6.4: vfs_path_lookup republished in linux/namei.h
31dnl #
32AC_DEFUN([ZFS_AC_KERNEL_SRC_FOLLOW_DOWN_FLAGS], [
33	ZFS_LINUX_TEST_SRC([follow_down_flags], [
34		#include <linux/namei.h>
35	],[
36		struct path *p = NULL;
37		follow_down(p, 0);
38	])
39])
40
41AC_DEFUN([ZFS_AC_KERNEL_FOLLOW_DOWN_FLAGS], [
42	AC_MSG_CHECKING([whether follow_down() takes a flags parameter])
43	ZFS_LINUX_TEST_RESULT([follow_down_flags], [
44		AC_DEFINE(HAVE_FOLLOW_DOWN_FLAGS, 1,
45			[follow_down() takes a flags parameter])
46		AC_MSG_RESULT(yes)
47	],[
48		AC_MSG_RESULT(no)
49		AC_MSG_CHECKING([whether vfs_path_lookup() is exported])
50		ZFS_CHECK_SYMBOL_EXPORT(
51		    [vfs_path_lookup], [fs/namei.c], [
52			AC_MSG_RESULT(yes)
53			AC_DEFINE(HAVE_VFS_PATH_LOOKUP_EXPORTED, 1,
54			    [vfs_path_lookup() is exported])
55		],[
56			AC_MSG_RESULT(no)
57			ZFS_LINUX_TEST_ERROR([follow_down()])
58		])
59	])
60])
61
62AC_DEFUN([ZFS_AC_KERNEL_SRC_FOLLOW_DOWN], [
63	ZFS_AC_KERNEL_SRC_FOLLOW_DOWN_ONE
64	ZFS_AC_KERNEL_SRC_FOLLOW_DOWN_FLAGS
65])
66
67AC_DEFUN([ZFS_AC_KERNEL_FOLLOW_DOWN], [
68	ZFS_AC_KERNEL_FOLLOW_DOWN_ONE
69	ZFS_AC_KERNEL_FOLLOW_DOWN_FLAGS
70])
71