mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +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_HAVE_GENERIC_SETXATTR
 | 
			
		||||
	ZFS_AC_KERNEL_CURRENT_TIME
 | 
			
		||||
	ZFS_AC_KERNEL_VM_NODE_STAT
 | 
			
		||||
 | 
			
		||||
	AS_IF([test "$LINUX_OBJ" != "$LINUX"], [
 | 
			
		||||
		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
 | 
			
		||||
	 * 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) *
 | 
			
		||||
	    zfs_arc_pc_percent;
 | 
			
		||||
#endif
 | 
			
		||||
	min = MAX(arc_c_min, MIN(arc_c_max, min));
 | 
			
		||||
 | 
			
		||||
	if (arc_dirty >= min)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user