aboutsummaryrefslogtreecommitdiffstats
path: root/module
diff options
context:
space:
mode:
authorMatthew Macy <[email protected]>2020-06-17 21:44:13 -0700
committerGitHub <[email protected]>2020-06-17 21:44:13 -0700
commit7564073ed6344c12e6bc4ffabd130522d937fb93 (patch)
treea4718c134d55297d537f8d79da6a6a82051d40cc /module
parent4458157beecdf892a596bf8a61a958ebc492f0b3 (diff)
Add abd_cache_reap_now for abd_chunk_cache users
Apparently missed in the initial port integration was the need to reap the abd_chunk_cache on FreeBSD. This change addresses that oversight. Reviewed-by: Brian Behlendorf <[email protected]> Reviewed-by: Alexander Motin <[email protected]> Signed-off-by: Matt Macy <[email protected]> Closes #10474
Diffstat (limited to 'module')
-rw-r--r--module/os/freebsd/zfs/abd_os.c6
-rw-r--r--module/os/linux/zfs/abd_os.c5
-rw-r--r--module/zfs/arc.c1
3 files changed, 12 insertions, 0 deletions
diff --git a/module/os/freebsd/zfs/abd_os.c b/module/os/freebsd/zfs/abd_os.c
index 500174775..b4d43b96a 100644
--- a/module/os/freebsd/zfs/abd_os.c
+++ b/module/os/freebsd/zfs/abd_os.c
@@ -488,3 +488,9 @@ abd_iter_unmap(struct abd_iter *aiter)
aiter->iter_mapaddr = NULL;
aiter->iter_mapsize = 0;
}
+
+void
+abd_cache_reap_now(void)
+{
+ kmem_cache_reap_soon(abd_chunk_cache);
+}
diff --git a/module/os/linux/zfs/abd_os.c b/module/os/linux/zfs/abd_os.c
index d39f0c6d5..1754ce032 100644
--- a/module/os/linux/zfs/abd_os.c
+++ b/module/os/linux/zfs/abd_os.c
@@ -920,6 +920,11 @@ abd_iter_unmap(struct abd_iter *aiter)
aiter->iter_mapsize = 0;
}
+void
+abd_cache_reap_now(void)
+{
+}
+
#if defined(_KERNEL)
/*
* bio_nr_pages for ABD.
diff --git a/module/zfs/arc.c b/module/zfs/arc.c
index 5717405d6..874cc02e8 100644
--- a/module/zfs/arc.c
+++ b/module/zfs/arc.c
@@ -4678,6 +4678,7 @@ arc_kmem_reap_soon(void)
kmem_cache_reap_now(hdr_full_cache);
kmem_cache_reap_now(hdr_l2only_cache);
kmem_cache_reap_now(zfs_btree_leaf_cache);
+ abd_cache_reap_now();
if (zio_arena != NULL) {
/*