dnl # dnl # Supported symlink APIs dnl # AC_DEFUN([ZFS_AC_KERNEL_PUT_LINK], [ dnl # dnl # 4.5 API change dnl # get_link() uses delayed done, there is no put_link() interface. dnl # ZFS_LINUX_TRY_COMPILE([ #if !defined(HAVE_GET_LINK_DELAYED) #error "Expecting get_link() delayed done" #endif ],[ ],[ AC_DEFINE(HAVE_PUT_LINK_DELAYED, 1, [iops->put_link() delayed]) ],[ dnl # dnl # 4.2 API change dnl # This kernel retired the nameidata structure. dnl # AC_MSG_CHECKING([whether iops->put_link() passes cookie]) ZFS_LINUX_TRY_COMPILE([ #include <linux/fs.h> void put_link(struct inode *ip, void *cookie) { return; } static struct inode_operations iops __attribute__ ((unused)) = { .put_link = put_link, }; ],[ ],[ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_PUT_LINK_COOKIE, 1, [iops->put_link() cookie]) ],[ dnl # dnl # 2.6.32 API dnl # AC_MSG_RESULT(no) AC_MSG_CHECKING( [whether iops->put_link() passes nameidata]) ZFS_LINUX_TRY_COMPILE([ #include <linux/fs.h> void put_link(struct dentry *de, struct nameidata *nd, void *ptr) { return; } static struct inode_operations iops __attribute__ ((unused)) = { .put_link = put_link, }; ],[ ],[ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_PUT_LINK_NAMEIDATA, 1, [iops->put_link() nameidata]) ],[ AC_MSG_ERROR(no; please file a bug report) ]) ]) ]) ])