]> git.proxmox.com Git - mirror_zfs.git/blame - config/kernel-global_page_state.m4
Improve error message for zfs create with @ or # in name
[mirror_zfs.git] / config / kernel-global_page_state.m4
CommitLineData
e9a77290 1dnl #
2dnl # 4.8 API change
3dnl #
4dnl # 75ef71840539 mm, vmstat: add infrastructure for per-node vmstats
5dnl # 599d0c954f91 mm, vmscan: move LRU lists to node
6dnl #
7AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_NODE_PAGE_STATE], [
8 AC_MSG_CHECKING([whether global_node_page_state() exists])
9 ZFS_LINUX_TRY_COMPILE([
10 #include <linux/mm.h>
11 #include <linux/vmstat.h>
12 ],[
13 (void) global_node_page_state(0);
14 ],[
15 AC_MSG_RESULT(yes)
16 AC_DEFINE(ZFS_GLOBAL_NODE_PAGE_STATE, 1, [global_node_page_state() exists])
17 ],[
18 AC_MSG_RESULT(no)
19 ])
20])
21
22dnl #
23dnl # 4.14 API change
24dnl #
25dnl # c41f012ade0b mm: rename global_page_state to global_zone_page_state
26dnl #
27AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_ZONE_PAGE_STATE], [
28 AC_MSG_CHECKING([whether global_zone_page_state() exists])
29 ZFS_LINUX_TRY_COMPILE([
30 #include <linux/mm.h>
31 #include <linux/vmstat.h>
32 ],[
33 (void) global_zone_page_state(0);
34 ],[
35 AC_MSG_RESULT(yes)
36 AC_DEFINE(ZFS_GLOBAL_ZONE_PAGE_STATE, 1, [global_zone_page_state() exists])
37 ],[
38 AC_MSG_RESULT(no)
39 ])
40])
41
42dnl #
43dnl # Create a define and autoconf variable for an enum member
44dnl #
45AC_DEFUN([ZFS_AC_KERNEL_ENUM_MEMBER], [
46 AC_MSG_CHECKING([whether enum $2 contains $1])
47 AS_IF([AC_TRY_COMMAND("${srcdir}/scripts/enum-extract.pl" "$2" "$3" | egrep -qx $1)],[
48 AC_MSG_RESULT([yes])
49 AC_DEFINE(m4_join([_], [ZFS_ENUM], m4_toupper($2), $1), 1, [enum $2 contains $1])
50 m4_join([_], [ZFS_ENUM], m4_toupper($2), $1)=1
51 ],[
52 AC_MSG_RESULT([no])
53 ])
54])
55
56dnl #
57dnl # Sanity check helpers
58dnl #
59AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_ERROR],[
60 AC_MSG_RESULT(no)
61 AC_MSG_RESULT([$1 in either node_stat_item or zone_stat_item: $2])
62 AC_MSG_RESULT([configure needs updating, see: config/kernel-global_page_state.m4])
63 AC_MSG_FAILURE([SHUT 'ER DOWN CLANCY, SHE'S PUMPIN' MUD!])
64])
65
66AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_CHECK], [
67 enum_check_a="m4_join([_], [$ZFS_ENUM_NODE_STAT_ITEM], $1)"
68 enum_check_b="m4_join([_], [$ZFS_ENUM_ZONE_STAT_ITEM], $1)"
69 AS_IF([test -n "$enum_check_a" -a -n "$enum_check_b"],[
70 ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_ERROR([$1], [DUPLICATE])
71 ])
72 AS_IF([test -z "$enum_check_a" -a -z "$enum_check_b"],[
73 ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_ERROR([$1], [NOT FOUND])
74 ])
75])
76
77dnl #
78dnl # Ensure the config tests are finding one and only one of each enum of interest
79dnl #
80AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_ZONE_PAGE_STATE_SANITY], [
81 AC_MSG_CHECKING([global_page_state enums are sane])
82
83 ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_CHECK([NR_FILE_PAGES])
84 ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_CHECK([NR_INACTIVE_ANON])
85 ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_CHECK([NR_INACTIVE_FILE])
86 ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_CHECK([NR_SLAB_RECLAIMABLE])
87
88 AC_MSG_RESULT(yes)
89])
90
91dnl #
92dnl # enum members in which we're interested
93dnl #
94AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_PAGE_STATE], [
95 ZFS_AC_KERNEL_GLOBAL_NODE_PAGE_STATE
96 ZFS_AC_KERNEL_GLOBAL_ZONE_PAGE_STATE
97
98 ZFS_AC_KERNEL_ENUM_MEMBER([NR_FILE_PAGES], [node_stat_item], [$LINUX/include/linux/mmzone.h])
99 ZFS_AC_KERNEL_ENUM_MEMBER([NR_INACTIVE_ANON], [node_stat_item], [$LINUX/include/linux/mmzone.h])
100 ZFS_AC_KERNEL_ENUM_MEMBER([NR_INACTIVE_FILE], [node_stat_item], [$LINUX/include/linux/mmzone.h])
101 ZFS_AC_KERNEL_ENUM_MEMBER([NR_SLAB_RECLAIMABLE], [node_stat_item], [$LINUX/include/linux/mmzone.h])
102
103 ZFS_AC_KERNEL_ENUM_MEMBER([NR_FILE_PAGES], [zone_stat_item], [$LINUX/include/linux/mmzone.h])
104 ZFS_AC_KERNEL_ENUM_MEMBER([NR_INACTIVE_ANON], [zone_stat_item], [$LINUX/include/linux/mmzone.h])
105 ZFS_AC_KERNEL_ENUM_MEMBER([NR_INACTIVE_FILE], [zone_stat_item], [$LINUX/include/linux/mmzone.h])
106 ZFS_AC_KERNEL_ENUM_MEMBER([NR_SLAB_RECLAIMABLE], [zone_stat_item], [$LINUX/include/linux/mmzone.h])
107
108 ZFS_AC_KERNEL_GLOBAL_ZONE_PAGE_STATE_SANITY
109])