1dnl # 2dnl # 3.4.0 API change 3dnl # Added d_make_root() to replace previous d_alloc_root() function. 4dnl # 5AC_DEFUN([ZFS_AC_KERNEL_SRC_D_MAKE_ROOT], [ 6 ZFS_LINUX_TEST_SRC([d_make_root], [ 7 #include <linux/dcache.h> 8 ], [ 9 d_make_root(NULL); 10 ]) 11]) 12 13AC_DEFUN([ZFS_AC_KERNEL_D_MAKE_ROOT], [ 14 AC_MSG_CHECKING([whether d_make_root() is available]) 15 ZFS_LINUX_TEST_RESULT_SYMBOL([d_make_root], 16 [d_make_root], [fs/dcache.c], [ 17 AC_MSG_RESULT(yes) 18 AC_DEFINE(HAVE_D_MAKE_ROOT, 1, [d_make_root() is available]) 19 ], [ 20 AC_MSG_RESULT(no) 21 ]) 22]) 23 24dnl # 25dnl # 2.6.28 API change 26dnl # Added d_obtain_alias() helper function. 27dnl # 28AC_DEFUN([ZFS_AC_KERNEL_SRC_D_OBTAIN_ALIAS], [ 29 ZFS_LINUX_TEST_SRC([d_obtain_alias], [ 30 #include <linux/dcache.h> 31 ], [ 32 d_obtain_alias(NULL); 33 ]) 34]) 35 36AC_DEFUN([ZFS_AC_KERNEL_D_OBTAIN_ALIAS], [ 37 AC_MSG_CHECKING([whether d_obtain_alias() is available]) 38 ZFS_LINUX_TEST_RESULT_SYMBOL([d_obtain_alias], 39 [d_obtain_alias], [fs/dcache.c], [ 40 AC_MSG_RESULT(yes) 41 ], [ 42 ZFS_LINUX_TEST_ERROR([d_obtain_alias()]) 43 ]) 44]) 45 46dnl # 47dnl # 2.6.12 API change 48dnl # d_prune_aliases() helper function available. 49dnl # 50AC_DEFUN([ZFS_AC_KERNEL_SRC_D_PRUNE_ALIASES], [ 51 ZFS_LINUX_TEST_SRC([d_prune_aliases], [ 52 #include <linux/dcache.h> 53 ], [ 54 struct inode *ip = NULL; 55 d_prune_aliases(ip); 56 ]) 57]) 58 59AC_DEFUN([ZFS_AC_KERNEL_D_PRUNE_ALIASES], [ 60 AC_MSG_CHECKING([whether d_prune_aliases() is available]) 61 ZFS_LINUX_TEST_RESULT_SYMBOL([d_prune_aliases], 62 [d_prune_aliases], [fs/dcache.c], [ 63 AC_MSG_RESULT(yes) 64 AC_DEFINE(HAVE_D_PRUNE_ALIASES, 1, 65 [d_prune_aliases() is available]) 66 ], [ 67 ZFS_LINUX_TEST_ERROR([d_prune_aliases()]) 68 ]) 69]) 70 71dnl # 72dnl # 2.6.38 API change 73dnl # Added d_set_d_op() helper function. 74dnl # 75AC_DEFUN([ZFS_AC_KERNEL_SRC_D_SET_D_OP], [ 76 ZFS_LINUX_TEST_SRC([d_set_d_op], [ 77 #include <linux/dcache.h> 78 ], [ 79 d_set_d_op(NULL, NULL); 80 ]) 81]) 82 83AC_DEFUN([ZFS_AC_KERNEL_D_SET_D_OP], [ 84 AC_MSG_CHECKING([whether d_set_d_op() is available]) 85 ZFS_LINUX_TEST_RESULT_SYMBOL([d_set_d_op], 86 [d_set_d_op], [fs/dcache.c], [ 87 AC_MSG_RESULT(yes) 88 ], [ 89 ZFS_LINUX_TEST_ERROR([d_set_d_op]) 90 ]) 91]) 92 93dnl # 94dnl # 3.6 API change 95dnl # 96AC_DEFUN([ZFS_AC_KERNEL_SRC_D_REVALIDATE_NAMEIDATA], [ 97 ZFS_LINUX_TEST_SRC([dentry_operations_revalidate], [ 98 #include <linux/dcache.h> 99 #include <linux/sched.h> 100 101 static int revalidate (struct dentry *dentry, 102 struct nameidata *nidata) { return 0; } 103 104 static const struct dentry_operations 105 dops __attribute__ ((unused)) = { 106 .d_revalidate = revalidate, 107 }; 108 ],[]) 109]) 110 111AC_DEFUN([ZFS_AC_KERNEL_D_REVALIDATE_NAMEIDATA], [ 112 AC_MSG_CHECKING([whether dops->d_revalidate() takes struct nameidata]) 113 ZFS_LINUX_TEST_RESULT([dentry_operations_revalidate], [ 114 AC_MSG_RESULT(yes) 115 AC_DEFINE(HAVE_D_REVALIDATE_NAMEIDATA, 1, 116 [dops->d_revalidate() operation takes nameidata]) 117 ],[ 118 AC_MSG_RESULT(no) 119 ]) 120]) 121 122dnl # 123dnl # 2.6.30 API change 124dnl # The 'struct dentry_operations' was constified in the dentry structure. 125dnl # 126AC_DEFUN([ZFS_AC_KERNEL_SRC_CONST_DENTRY_OPERATIONS], [ 127 ZFS_LINUX_TEST_SRC([dentry_operations_const], [ 128 #include <linux/dcache.h> 129 130 const struct dentry_operations test_d_op = { 131 .d_revalidate = NULL, 132 }; 133 ],[ 134 struct dentry d __attribute__ ((unused)); 135 d.d_op = &test_d_op; 136 ]) 137]) 138 139AC_DEFUN([ZFS_AC_KERNEL_CONST_DENTRY_OPERATIONS], [ 140 AC_MSG_CHECKING([whether dentry uses const struct dentry_operations]) 141 ZFS_LINUX_TEST_RESULT([dentry_operations_const], [ 142 AC_MSG_RESULT(yes) 143 AC_DEFINE(HAVE_CONST_DENTRY_OPERATIONS, 1, 144 [dentry uses const struct dentry_operations]) 145 ],[ 146 ZFS_LINUX_TEST_ERROR([const dentry_operations]) 147 ]) 148]) 149 150dnl # 151dnl # 2.6.38 API change 152dnl # Added sb->s_d_op default dentry_operations member 153dnl # 154AC_DEFUN([ZFS_AC_KERNEL_SRC_S_D_OP], [ 155 ZFS_LINUX_TEST_SRC([super_block_s_d_op], [ 156 #include <linux/fs.h> 157 ],[ 158 struct super_block sb __attribute__ ((unused)); 159 sb.s_d_op = NULL; 160 ]) 161]) 162 163AC_DEFUN([ZFS_AC_KERNEL_S_D_OP], [ 164 AC_MSG_CHECKING([whether super_block has s_d_op]) 165 ZFS_LINUX_TEST_RESULT([super_block_s_d_op], [ 166 AC_MSG_RESULT(yes) 167 ], [ 168 ZFS_LINUX_TEST_ERROR([super_block s_d_op]) 169 ]) 170]) 171 172AC_DEFUN([ZFS_AC_KERNEL_SRC_DENTRY], [ 173 ZFS_AC_KERNEL_SRC_D_MAKE_ROOT 174 ZFS_AC_KERNEL_SRC_D_OBTAIN_ALIAS 175 ZFS_AC_KERNEL_SRC_D_PRUNE_ALIASES 176 ZFS_AC_KERNEL_SRC_D_SET_D_OP 177 ZFS_AC_KERNEL_SRC_D_REVALIDATE_NAMEIDATA 178 ZFS_AC_KERNEL_SRC_CONST_DENTRY_OPERATIONS 179 ZFS_AC_KERNEL_SRC_S_D_OP 180]) 181 182AC_DEFUN([ZFS_AC_KERNEL_DENTRY], [ 183 ZFS_AC_KERNEL_D_MAKE_ROOT 184 ZFS_AC_KERNEL_D_OBTAIN_ALIAS 185 ZFS_AC_KERNEL_D_PRUNE_ALIASES 186 ZFS_AC_KERNEL_D_SET_D_OP 187 ZFS_AC_KERNEL_D_REVALIDATE_NAMEIDATA 188 ZFS_AC_KERNEL_CONST_DENTRY_OPERATIONS 189 ZFS_AC_KERNEL_S_D_OP 190]) 191