Skip to content

Commit

Permalink
config: detect {=> kthread_}complete_and_exit() rename for linux 5.16
Browse files Browse the repository at this point in the history
Upstream commit cead18552660702a4a46f58e65188fe5f36e9dfe
("exit: Rename complete_and_exit to kthread_complete_and_exit")

Ref: http://build.zfsonlinux.org/builders/Kernel.org%20Built-in%20x86_64%20%28BUILD%29/builds/43905/steps/shell_1/logs/make
Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
  • Loading branch information
nabijaczleweli committed Jan 19, 2022
1 parent e1c720d commit ea9b1da
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 3 deletions.
24 changes: 24 additions & 0 deletions config/kernel-kthread.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
AC_DEFUN([ZFS_AC_KERNEL_KTHREAD], [
dnl #
dnl # 5.16 API,
dnl # cead18552660702a4a46f58e65188fe5f36e9dfe ("exit: Rename complete_and_exit to kthread_complete_and_exit")
dnl #
dnl # Also moves the definition from i/l/kernel.h to i/l/kthread.h
dnl #
AC_MSG_CHECKING([whether kthread_complete_and_exit() is available])
ZFS_LINUX_TEST_RESULT([kthread_complete_and_exit], [
AC_MSG_RESULT(yes)
AC_DEFINE(ZFS_KTHREAD_COMPLETE_AND_EXIT, kthread_complete_and_exit, [kthread_complete_and_exit() available])
], [
AC_MSG_RESULT(no)
AC_DEFINE(ZFS_KTHREAD_COMPLETE_AND_EXIT, complete_and_exit, [using complete_and_exit() instead])
])
])

AC_DEFUN([ZFS_AC_KERNEL_SRC_KTHREAD], [
ZFS_LINUX_TEST_SRC([kthread_complete_and_exit], [
#include <linux/kthread.h>
], [
kthread_complete_and_exit(NULL, 0);
])
])
2 changes: 2 additions & 0 deletions config/kernel.m4
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_SRC], [
ZFS_AC_KERNEL_SRC_VFS_SET_PAGE_DIRTY_NOBUFFERS
ZFS_AC_KERNEL_SRC_STANDALONE_LINUX_STDARG
ZFS_AC_KERNEL_SRC_PAGEMAP_FOLIO_WAIT_BIT
ZFS_AC_KERNEL_SRC_KTHREAD
AC_MSG_CHECKING([for available kernel interfaces])
ZFS_LINUX_TEST_COMPILE_ALL([kabi])
Expand Down Expand Up @@ -243,6 +244,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_RESULT], [
ZFS_AC_KERNEL_VFS_SET_PAGE_DIRTY_NOBUFFERS
ZFS_AC_KERNEL_STANDALONE_LINUX_STDARG
ZFS_AC_KERNEL_PAGEMAP_FOLIO_WAIT_BIT
ZFS_AC_KERNEL_KTHREAD
])

dnl #
Expand Down
2 changes: 1 addition & 1 deletion include/os/linux/spl/sys/thread.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ typedef void (*thread_func_t)(void *);
extern kthread_t *__thread_create(caddr_t stk, size_t stksize,
thread_func_t func, const char *name, void *args, size_t len, proc_t *pp,
int state, pri_t pri);
extern void __thread_exit(void);
extern void __thread_exit(void) __noreturn;
extern struct task_struct *spl_kthread_create(int (*func)(void *),
void *data, const char namefmt[], ...);

Expand Down
4 changes: 2 additions & 2 deletions module/os/linux/spl/spl-thread.c
Original file line number Diff line number Diff line change
Expand Up @@ -62,11 +62,11 @@ thread_generic_wrapper(void *arg)
return (0);
}

void
void __noreturn
__thread_exit(void)
{
tsd_exit();
complete_and_exit(NULL, 0);
ZFS_KTHREAD_COMPLETE_AND_EXIT(NULL, 0);
/* Unreachable */
}
EXPORT_SYMBOL(__thread_exit);
Expand Down

0 comments on commit ea9b1da

Please sign in to comment.