aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2020-08-29 20:57:45 -0700
committerGitHub <[email protected]>2020-08-29 20:57:45 -0700
commit3e29e1971bbb4ab63dafeb592b747ef56bad3534 (patch)
tree44499ca4f445fb203e3f0640d8de746607f6ee59
parent62663fb7ec191ca2f872aec1636e94934212936f (diff)
Linux 5.9 compat: NR_SLAB_RECLAIMABLE
Commit dcdc12e added compatibility code to treat NR_SLAB_RECLAIMABLE_B as if it were the same as NR_SLAB_RECLAIMABLE. However, the new value is in bytes while the old value was in pages which means they are not interchangeable. The only place the reclaimable slab size is used is as a component of the calculation done by arc_free_memory(). This function returns the amount of memory the ARC considers to be free or reclaimable at little cost. Rather than switch to a new interface to get this value it has been removed it from the calculation. It is normally a minor component compared to the number of inactive or free pages, and removing it aligns the behavior with the FreeBSD version of arc_free_memory(). Reviewed-by: Matthew Ahrens <[email protected]> Reviewed-by: Coleman Kane <[email protected]> Signed-off-by: Brian Behlendorf <[email protected]> Closes #10834
-rw-r--r--config/kernel-global_page_state.m49
-rw-r--r--include/os/linux/kernel/linux/page_compat.h25
-rw-r--r--include/os/linux/spl/sys/vmsystm.h11
-rw-r--r--module/os/linux/zfs/arc_os.c3
4 files changed, 1 insertions, 47 deletions
diff --git a/config/kernel-global_page_state.m4 b/config/kernel-global_page_state.m4
index 75043f40b..badb5e5d2 100644
--- a/config/kernel-global_page_state.m4
+++ b/config/kernel-global_page_state.m4
@@ -94,9 +94,6 @@ AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_ZONE_PAGE_STATE_SANITY], [
ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_CHECK([NR_FILE_PAGES])
ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_CHECK([NR_INACTIVE_ANON])
ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_CHECK([NR_INACTIVE_FILE])
- AS_IF([test -z "$ZFS_ENUM_NODE_STAT_ITEM_NR_SLAB_RECLAIMABLE_B"],[
- ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_CHECK([NR_SLAB_RECLAIMABLE])
- ])
AC_MSG_RESULT(yes)
])
@@ -119,10 +116,6 @@ AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_PAGE_STATE], [
[node_stat_item], [$LINUX/include/linux/mmzone.h])
ZFS_AC_KERNEL_ENUM_MEMBER([NR_INACTIVE_FILE],
[node_stat_item], [$LINUX/include/linux/mmzone.h])
- ZFS_AC_KERNEL_ENUM_MEMBER([NR_SLAB_RECLAIMABLE],
- [node_stat_item], [$LINUX/include/linux/mmzone.h])
- ZFS_AC_KERNEL_ENUM_MEMBER([NR_SLAB_RECLAIMABLE_B],
- [node_stat_item], [$LINUX/include/linux/mmzone.h])
ZFS_AC_KERNEL_ENUM_MEMBER([NR_FILE_PAGES],
[zone_stat_item], [$LINUX/include/linux/mmzone.h])
@@ -130,8 +123,6 @@ AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_PAGE_STATE], [
[zone_stat_item], [$LINUX/include/linux/mmzone.h])
ZFS_AC_KERNEL_ENUM_MEMBER([NR_INACTIVE_FILE],
[zone_stat_item], [$LINUX/include/linux/mmzone.h])
- ZFS_AC_KERNEL_ENUM_MEMBER([NR_SLAB_RECLAIMABLE],
- [zone_stat_item], [$LINUX/include/linux/mmzone.h])
ZFS_AC_KERNEL_GLOBAL_ZONE_PAGE_STATE_SANITY
])
diff --git a/include/os/linux/kernel/linux/page_compat.h b/include/os/linux/kernel/linux/page_compat.h
index 8ad04f9bb..bd6cb398b 100644
--- a/include/os/linux/kernel/linux/page_compat.h
+++ b/include/os/linux/kernel/linux/page_compat.h
@@ -35,16 +35,6 @@
#else
#define nr_inactive_file_pages() global_zone_page_state(NR_INACTIVE_FILE)
#endif
-#if defined(ZFS_ENUM_NODE_STAT_ITEM_NR_SLAB_RECLAIMABLE_B)
-#define nr_slab_reclaimable_pages() \
- global_node_page_state(NR_SLAB_RECLAIMABLE_B)
-#else
-#if defined(ZFS_ENUM_NODE_STAT_ITEM_NR_SLAB_RECLAIMABLE)
-#define nr_slab_reclaimable_pages() global_node_page_state(NR_SLAB_RECLAIMABLE)
-#else
-#define nr_slab_reclaimable_pages() global_zone_page_state(NR_SLAB_RECLAIMABLE)
-#endif
-#endif
#elif defined(ZFS_GLOBAL_NODE_PAGE_STATE)
@@ -64,16 +54,6 @@
#else
#define nr_inactive_file_pages() global_page_state(NR_INACTIVE_FILE)
#endif
-#if defined(ZFS_ENUM_NODE_STAT_ITEM_NR_SLAB_RECLAIMABLE_B)
-#define nr_slab_reclaimable_pages() \
- global_node_page_state(NR_SLAB_RECLAIMABLE_B)
-#else
-#if defined(ZFS_ENUM_NODE_STAT_ITEM_NR_SLAB_RECLAIMABLE)
-#define nr_slab_reclaimable_pages() global_node_page_state(NR_SLAB_RECLAIMABLE)
-#else
-#define nr_slab_reclaimable_pages() global_page_state(NR_SLAB_RECLAIMABLE)
-#endif
-#endif
#else
@@ -81,11 +61,6 @@
#define nr_file_pages() global_page_state(NR_FILE_PAGES)
#define nr_inactive_anon_pages() global_page_state(NR_INACTIVE_ANON)
#define nr_inactive_file_pages() global_page_state(NR_INACTIVE_FILE)
-#ifdef ZFS_ENUM_NODE_STAT_ITEM_NR_SLAB_RECLAIMABLE_B
-#define nr_slab_reclaimable_pages() global_page_state(NR_SLAB_RECLAIMABLE_B)
-#else
-#define nr_slab_reclaimable_pages() global_page_state(NR_SLAB_RECLAIMABLE)
-#endif /* ZFS_ENUM_NODE_STAT_ITEM_NR_SLAB_RECLAIMABLE_B */
#endif /* ZFS_GLOBAL_ZONE_PAGE_STATE */
diff --git a/include/os/linux/spl/sys/vmsystm.h b/include/os/linux/spl/sys/vmsystm.h
index 705339486..8783231dc 100644
--- a/include/os/linux/spl/sys/vmsystm.h
+++ b/include/os/linux/spl/sys/vmsystm.h
@@ -47,17 +47,6 @@
#define membar_producer() smp_wmb()
#define physmem zfs_totalram_pages
-#ifdef ZFS_ENUM_NODE_STAT_ITEM_NR_SLAB_RECLAIMABLE_B
-#define freemem (nr_free_pages() + \
- global_page_state(NR_INACTIVE_FILE) + \
- global_page_state(NR_INACTIVE_ANON) + \
- global_page_state(NR_SLAB_RECLAIMABLE_B))
-#else
-#define freemem (nr_free_pages() + \
- global_page_state(NR_INACTIVE_FILE) + \
- global_page_state(NR_INACTIVE_ANON) + \
- global_page_state(NR_SLAB_RECLAIMABLE))
-#endif /* ZFS_ENUM_NODE_STAT_ITEM_NR_SLAB_RECLAIMABLE_B */
#define xcopyin(from, to, size) copy_from_user(to, from, size)
#define xcopyout(from, to, size) copy_to_user(to, from, size)
diff --git a/module/os/linux/zfs/arc_os.c b/module/os/linux/zfs/arc_os.c
index 92f9bae8c..792c75d46 100644
--- a/module/os/linux/zfs/arc_os.c
+++ b/module/os/linux/zfs/arc_os.c
@@ -113,8 +113,7 @@ arc_free_memory(void)
return (ptob(si.freeram - si.freehigh));
#else
return (ptob(nr_free_pages() +
- nr_inactive_file_pages() +
- nr_slab_reclaimable_pages()));
+ nr_inactive_file_pages()));
#endif /* CONFIG_HIGHMEM */
}