mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-25 18:59:33 +03:00
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 <mahrens@delphix.com>
Reviewed-by: Coleman Kane <ckane@colemankane.org>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #10834
This commit is contained in:
parent
62663fb7ec
commit
3e29e1971b
@ -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_FILE_PAGES])
|
||||||
ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_CHECK([NR_INACTIVE_ANON])
|
ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_CHECK([NR_INACTIVE_ANON])
|
||||||
ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_CHECK([NR_INACTIVE_FILE])
|
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)
|
AC_MSG_RESULT(yes)
|
||||||
])
|
])
|
||||||
@ -119,10 +116,6 @@ AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_PAGE_STATE], [
|
|||||||
[node_stat_item], [$LINUX/include/linux/mmzone.h])
|
[node_stat_item], [$LINUX/include/linux/mmzone.h])
|
||||||
ZFS_AC_KERNEL_ENUM_MEMBER([NR_INACTIVE_FILE],
|
ZFS_AC_KERNEL_ENUM_MEMBER([NR_INACTIVE_FILE],
|
||||||
[node_stat_item], [$LINUX/include/linux/mmzone.h])
|
[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],
|
ZFS_AC_KERNEL_ENUM_MEMBER([NR_FILE_PAGES],
|
||||||
[zone_stat_item], [$LINUX/include/linux/mmzone.h])
|
[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])
|
[zone_stat_item], [$LINUX/include/linux/mmzone.h])
|
||||||
ZFS_AC_KERNEL_ENUM_MEMBER([NR_INACTIVE_FILE],
|
ZFS_AC_KERNEL_ENUM_MEMBER([NR_INACTIVE_FILE],
|
||||||
[zone_stat_item], [$LINUX/include/linux/mmzone.h])
|
[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
|
ZFS_AC_KERNEL_GLOBAL_ZONE_PAGE_STATE_SANITY
|
||||||
])
|
])
|
||||||
|
@ -35,16 +35,6 @@
|
|||||||
#else
|
#else
|
||||||
#define nr_inactive_file_pages() global_zone_page_state(NR_INACTIVE_FILE)
|
#define nr_inactive_file_pages() global_zone_page_state(NR_INACTIVE_FILE)
|
||||||
#endif
|
#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)
|
#elif defined(ZFS_GLOBAL_NODE_PAGE_STATE)
|
||||||
|
|
||||||
@ -64,16 +54,6 @@
|
|||||||
#else
|
#else
|
||||||
#define nr_inactive_file_pages() global_page_state(NR_INACTIVE_FILE)
|
#define nr_inactive_file_pages() global_page_state(NR_INACTIVE_FILE)
|
||||||
#endif
|
#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
|
#else
|
||||||
|
|
||||||
@ -81,11 +61,6 @@
|
|||||||
#define nr_file_pages() global_page_state(NR_FILE_PAGES)
|
#define nr_file_pages() global_page_state(NR_FILE_PAGES)
|
||||||
#define nr_inactive_anon_pages() global_page_state(NR_INACTIVE_ANON)
|
#define nr_inactive_anon_pages() global_page_state(NR_INACTIVE_ANON)
|
||||||
#define nr_inactive_file_pages() global_page_state(NR_INACTIVE_FILE)
|
#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 */
|
#endif /* ZFS_GLOBAL_ZONE_PAGE_STATE */
|
||||||
|
|
||||||
|
@ -47,17 +47,6 @@
|
|||||||
|
|
||||||
#define membar_producer() smp_wmb()
|
#define membar_producer() smp_wmb()
|
||||||
#define physmem zfs_totalram_pages
|
#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 xcopyin(from, to, size) copy_from_user(to, from, size)
|
||||||
#define xcopyout(from, to, size) copy_to_user(to, from, size)
|
#define xcopyout(from, to, size) copy_to_user(to, from, size)
|
||||||
|
@ -113,8 +113,7 @@ arc_free_memory(void)
|
|||||||
return (ptob(si.freeram - si.freehigh));
|
return (ptob(si.freeram - si.freehigh));
|
||||||
#else
|
#else
|
||||||
return (ptob(nr_free_pages() +
|
return (ptob(nr_free_pages() +
|
||||||
nr_inactive_file_pages() +
|
nr_inactive_file_pages()));
|
||||||
nr_slab_reclaimable_pages()));
|
|
||||||
#endif /* CONFIG_HIGHMEM */
|
#endif /* CONFIG_HIGHMEM */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user