Detect HAVE_LARGE_STACKS at compile time
Move HAVE_LARGE_STACKS definitions to header and set when appropriate. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Allan Jude <allan@klarasystems.com> Reviewed-by: Alexander Motin <mav@FreeBSD.org> Reviewed-by: Ryan Moeller <ryan@iXsystems.com> Signed-off-by: Kevin Bowling <kbowling@FreeBSD.org> Closes #12350
This commit is contained in:
parent
b17b19943e
commit
ca14e08cbf
|
@ -39,7 +39,6 @@ AM_CPPFLAGS = -D_GNU_SOURCE
|
||||||
AM_CPPFLAGS += -D_REENTRANT
|
AM_CPPFLAGS += -D_REENTRANT
|
||||||
AM_CPPFLAGS += -D_FILE_OFFSET_BITS=64
|
AM_CPPFLAGS += -D_FILE_OFFSET_BITS=64
|
||||||
AM_CPPFLAGS += -D_LARGEFILE64_SOURCE
|
AM_CPPFLAGS += -D_LARGEFILE64_SOURCE
|
||||||
AM_CPPFLAGS += -DHAVE_LARGE_STACKS=1
|
|
||||||
AM_CPPFLAGS += -DLIBEXECDIR=\"$(libexecdir)\"
|
AM_CPPFLAGS += -DLIBEXECDIR=\"$(libexecdir)\"
|
||||||
AM_CPPFLAGS += -DRUNSTATEDIR=\"$(runstatedir)\"
|
AM_CPPFLAGS += -DRUNSTATEDIR=\"$(runstatedir)\"
|
||||||
AM_CPPFLAGS += -DSBINDIR=\"$(sbindir)\"
|
AM_CPPFLAGS += -DSBINDIR=\"$(sbindir)\"
|
||||||
|
|
|
@ -19,7 +19,6 @@ AC_DEFUN([ZFS_AC_KERNEL_CONFIG_DEFINED], [
|
||||||
])
|
])
|
||||||
])
|
])
|
||||||
|
|
||||||
ZFS_AC_KERNEL_SRC_CONFIG_THREAD_SIZE
|
|
||||||
ZFS_AC_KERNEL_SRC_CONFIG_DEBUG_LOCK_ALLOC
|
ZFS_AC_KERNEL_SRC_CONFIG_DEBUG_LOCK_ALLOC
|
||||||
ZFS_AC_KERNEL_SRC_CONFIG_TRIM_UNUSED_KSYMS
|
ZFS_AC_KERNEL_SRC_CONFIG_TRIM_UNUSED_KSYMS
|
||||||
ZFS_AC_KERNEL_SRC_CONFIG_ZLIB_INFLATE
|
ZFS_AC_KERNEL_SRC_CONFIG_ZLIB_INFLATE
|
||||||
|
@ -29,42 +28,12 @@ AC_DEFUN([ZFS_AC_KERNEL_CONFIG_DEFINED], [
|
||||||
ZFS_LINUX_TEST_COMPILE_ALL([config])
|
ZFS_LINUX_TEST_COMPILE_ALL([config])
|
||||||
AC_MSG_RESULT([done])
|
AC_MSG_RESULT([done])
|
||||||
|
|
||||||
ZFS_AC_KERNEL_CONFIG_THREAD_SIZE
|
|
||||||
ZFS_AC_KERNEL_CONFIG_DEBUG_LOCK_ALLOC
|
ZFS_AC_KERNEL_CONFIG_DEBUG_LOCK_ALLOC
|
||||||
ZFS_AC_KERNEL_CONFIG_TRIM_UNUSED_KSYMS
|
ZFS_AC_KERNEL_CONFIG_TRIM_UNUSED_KSYMS
|
||||||
ZFS_AC_KERNEL_CONFIG_ZLIB_INFLATE
|
ZFS_AC_KERNEL_CONFIG_ZLIB_INFLATE
|
||||||
ZFS_AC_KERNEL_CONFIG_ZLIB_DEFLATE
|
ZFS_AC_KERNEL_CONFIG_ZLIB_DEFLATE
|
||||||
])
|
])
|
||||||
|
|
||||||
dnl #
|
|
||||||
dnl # Check configured THREAD_SIZE
|
|
||||||
dnl #
|
|
||||||
dnl # The stack size will vary by architecture, but as of Linux 3.15 on x86_64
|
|
||||||
dnl # the default thread stack size was increased to 16K from 8K. Therefore,
|
|
||||||
dnl # on newer kernels and some architectures stack usage optimizations can be
|
|
||||||
dnl # conditionally applied to improve performance without negatively impacting
|
|
||||||
dnl # stability.
|
|
||||||
dnl #
|
|
||||||
AC_DEFUN([ZFS_AC_KERNEL_SRC_CONFIG_THREAD_SIZE], [
|
|
||||||
ZFS_LINUX_TEST_SRC([config_thread_size], [
|
|
||||||
#include <linux/module.h>
|
|
||||||
],[
|
|
||||||
#if (THREAD_SIZE < 16384)
|
|
||||||
#error "THREAD_SIZE is less than 16K"
|
|
||||||
#endif
|
|
||||||
])
|
|
||||||
])
|
|
||||||
|
|
||||||
AC_DEFUN([ZFS_AC_KERNEL_CONFIG_THREAD_SIZE], [
|
|
||||||
AC_MSG_CHECKING([whether kernel was built with 16K or larger stacks])
|
|
||||||
ZFS_LINUX_TEST_RESULT([config_thread_size], [
|
|
||||||
AC_MSG_RESULT([yes])
|
|
||||||
AC_DEFINE(HAVE_LARGE_STACKS, 1, [kernel has large stacks])
|
|
||||||
],[
|
|
||||||
AC_MSG_RESULT([no])
|
|
||||||
])
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl #
|
dnl #
|
||||||
dnl # Check CONFIG_DEBUG_LOCK_ALLOC
|
dnl # Check CONFIG_DEBUG_LOCK_ALLOC
|
||||||
dnl #
|
dnl #
|
||||||
|
|
|
@ -41,6 +41,10 @@
|
||||||
#include <sys/ccompat.h>
|
#include <sys/ccompat.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
|
||||||
|
#if KSTACK_PAGES * PAGE_SIZE >= 16384
|
||||||
|
#define HAVE_LARGE_STACKS 1
|
||||||
|
#endif
|
||||||
|
|
||||||
#define cond_resched() kern_yield(PRI_USER)
|
#define cond_resched() kern_yield(PRI_USER)
|
||||||
|
|
||||||
#define taskq_create_sysdc(a, b, d, e, p, dc, f) \
|
#define taskq_create_sysdc(a, b, d, e, p, dc, f) \
|
||||||
|
|
|
@ -25,5 +25,10 @@
|
||||||
|
|
||||||
#include <linux/dcache_compat.h>
|
#include <linux/dcache_compat.h>
|
||||||
#include <linux/utsname_compat.h>
|
#include <linux/utsname_compat.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
|
||||||
|
#if THREAD_SIZE >= 16384
|
||||||
|
#define HAVE_LARGE_STACKS 1
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#ifndef ZFS_CONTEXT_OS_H_
|
#ifndef ZFS_CONTEXT_OS_H_
|
||||||
#define ZFS_CONTEXT_OS_H_
|
#define ZFS_CONTEXT_OS_H_
|
||||||
|
|
||||||
|
#define HAVE_LARGE_STACKS 1
|
||||||
#define ZFS_EXPORTS_PATH "/etc/zfs/exports"
|
#define ZFS_EXPORTS_PATH "/etc/zfs/exports"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -22,4 +22,7 @@
|
||||||
|
|
||||||
#ifndef ZFS_CONTEXT_OS_H
|
#ifndef ZFS_CONTEXT_OS_H
|
||||||
#define ZFS_CONTEXT_OS_H
|
#define ZFS_CONTEXT_OS_H
|
||||||
|
|
||||||
|
#define HAVE_LARGE_STACKS 1
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue