mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-27 11:29:36 +03:00
Linux 4.8+ compatibility fix for vm stats
vm_node_stat must be used instead of vm_zone_stat. Unfortunately the old code still compiles potentially leading to silent failure of arc_evictable_memory() AKAMAI: CR 3816601: Regression in zfs dropcache test Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Chunwei Chen <tuxoko@gmail.com> Signed-off-by: Debabrata Banerjee <dbanerje@akamai.com> Closes #6528
This commit is contained in:
parent
4810a108e8
commit
89950722c6
22
config/kernel-vm_node_stat.m4
Normal file
22
config/kernel-vm_node_stat.m4
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
dnl #
|
||||||
|
dnl # 4.8 API change
|
||||||
|
dnl # kernel vm counters change
|
||||||
|
dnl #
|
||||||
|
AC_DEFUN([ZFS_AC_KERNEL_VM_NODE_STAT], [
|
||||||
|
AC_MSG_CHECKING([whether to use vm_node_stat based fn's])
|
||||||
|
ZFS_LINUX_TRY_COMPILE([
|
||||||
|
#include <linux/mm.h>
|
||||||
|
#include <linux/vmstat.h>
|
||||||
|
],[
|
||||||
|
int a __attribute__ ((unused)) = NR_VM_NODE_STAT_ITEMS;
|
||||||
|
long x __attribute__ ((unused)) =
|
||||||
|
atomic_long_read(&vm_node_stat[0]);
|
||||||
|
(void) global_node_page_state(0);
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
AC_DEFINE(ZFS_GLOBAL_NODE_PAGE_STATE, 1,
|
||||||
|
[using global_node_page_state()])
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
])
|
||||||
|
])
|
@ -120,6 +120,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
|
|||||||
ZFS_AC_KERNEL_RENAME_WANTS_FLAGS
|
ZFS_AC_KERNEL_RENAME_WANTS_FLAGS
|
||||||
ZFS_AC_KERNEL_HAVE_GENERIC_SETXATTR
|
ZFS_AC_KERNEL_HAVE_GENERIC_SETXATTR
|
||||||
ZFS_AC_KERNEL_CURRENT_TIME
|
ZFS_AC_KERNEL_CURRENT_TIME
|
||||||
|
ZFS_AC_KERNEL_VM_NODE_STAT
|
||||||
|
|
||||||
AS_IF([test "$LINUX_OBJ" != "$LINUX"], [
|
AS_IF([test "$LINUX_OBJ" != "$LINUX"], [
|
||||||
KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ"
|
KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ"
|
||||||
|
@ -4387,8 +4387,13 @@ arc_evictable_memory(void)
|
|||||||
* Scale reported evictable memory in proportion to page cache, cap
|
* Scale reported evictable memory in proportion to page cache, cap
|
||||||
* at specified min/max.
|
* at specified min/max.
|
||||||
*/
|
*/
|
||||||
|
#ifdef ZFS_GLOBAL_NODE_PAGE_STATE
|
||||||
|
uint64_t min = (ptob(global_node_page_state(NR_FILE_PAGES)) / 100) *
|
||||||
|
zfs_arc_pc_percent;
|
||||||
|
#else
|
||||||
uint64_t min = (ptob(global_page_state(NR_FILE_PAGES)) / 100) *
|
uint64_t min = (ptob(global_page_state(NR_FILE_PAGES)) / 100) *
|
||||||
zfs_arc_pc_percent;
|
zfs_arc_pc_percent;
|
||||||
|
#endif
|
||||||
min = MAX(arc_c_min, MIN(arc_c_max, min));
|
min = MAX(arc_c_min, MIN(arc_c_max, min));
|
||||||
|
|
||||||
if (arc_dirty >= min)
|
if (arc_dirty >= min)
|
||||||
|
Loading…
Reference in New Issue
Block a user