Skip to content
This repository has been archived by the owner on Feb 26, 2020. It is now read-only.

Commit

Permalink
Linux 4.11 compat: remove stub for __put_task_struct
Browse files Browse the repository at this point in the history
In some kernel older than 2.6.35, something in spl or zfs needed to
link against __put_task_struct() even though it should never be called
by zfs.

Which kernel that was, and what code needed to link against
__put_task_struct(), is unknown to me.

This is no longer the case.  spl/zfs build and the modules install
successfully on a RHEL6 derivative with kernel
2.6.32-642.13.1.1chaos.ch5.5.x86_64 without the stub, as well as
4.8.0-22-generic under Ubuntu and 4.11 kernel built from
github/torvalds/linux.

This came up with the linux 4.11 kernel because the prototype for
__put_task_struct() is in a new include file and so the config check
failed to detect the exported symbol.

Removing the unnecessary stub and corresponding config check.

Signed-off-by: Olaf Faaland <[email protected]>
  • Loading branch information
ofaaland committed Mar 14, 2017
1 parent 21bb330 commit eff53ab
Show file tree
Hide file tree
Showing 2 changed files with 0 additions and 36 deletions.
20 changes: 0 additions & 20 deletions config/spl-build.m4
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ AC_DEFUN([SPL_AC_CONFIG_KERNEL], [
SPL_AC_INODE_TRUNCATE_RANGE
SPL_AC_FS_STRUCT_SPINLOCK
SPL_AC_KUIDGID_T
SPL_AC_PUT_TASK_STRUCT
SPL_AC_KERNEL_FALLOCATE
SPL_AC_CONFIG_ZLIB_INFLATE
SPL_AC_CONFIG_ZLIB_DEFLATE
Expand Down Expand Up @@ -1083,25 +1082,6 @@ AC_DEFUN([SPL_AC_KUIDGID_T], [
])
])

dnl #
dnl # 2.6.39 API change,
dnl # __put_task_struct() was exported by the mainline kernel.
dnl #
AC_DEFUN([SPL_AC_PUT_TASK_STRUCT],
[AC_MSG_CHECKING([whether __put_task_struct() is available])
SPL_LINUX_TRY_COMPILE_SYMBOL([
#include <linux/sched.h>
], [
__put_task_struct(NULL);
], [__put_task_struct], [], [
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_PUT_TASK_STRUCT, 1,
[__put_task_struct() is available])
], [
AC_MSG_RESULT(no)
])
])

dnl #
dnl # 2.6.35 API change,
dnl # Unused 'struct dentry *' removed from vfs_fsync() prototype.
Expand Down
16 changes: 0 additions & 16 deletions module/spl/spl-generic.c
Original file line number Diff line number Diff line change
Expand Up @@ -459,22 +459,6 @@ ddi_copyout(const void *from, void *to, size_t len, int flags)
}
EXPORT_SYMBOL(ddi_copyout);

#ifndef HAVE_PUT_TASK_STRUCT
/*
* This is only a stub function which should never be used. The SPL should
* never be putting away the last reference on a task structure so this will
* not be called. However, we still need to define it so the module does not
* have undefined symbol at load time. That all said if this impossible
* thing does somehow happen PANIC immediately so we know about it.
*/
void
__put_task_struct(struct task_struct *t)
{
PANIC("Unexpectly put last reference on task %d\n", (int)t->pid);
}
EXPORT_SYMBOL(__put_task_struct);
#endif /* HAVE_PUT_TASK_STRUCT */

/*
* Read the unique system identifier from the /etc/hostid file.
*
Expand Down

0 comments on commit eff53ab

Please sign in to comment.