aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMateusz Guzik <mjg@FreeBSD.org>2021-04-11 04:49:24 +0000
committerMateusz Guzik <mjg@FreeBSD.org>2021-05-22 18:37:23 +0000
commit8ea3f6a3e45473bcd494c385b8614a8cc88b1356 (patch)
tree26e0afacd7d4d072e18bbccb6c4d8efcf75d916b
parent8bb6b6a46147375486d888f3e460b0aaa5c203b5 (diff)
downloadsrc-8ea3f6a3e45473bcd494c385b8614a8cc88b1356.tar.gz
src-8ea3f6a3e45473bcd494c385b8614a8cc88b1356.zip
zfs: make vnlru_free_vfsops use conditional on version
Diff reduction against upstream. (cherry picked from commit feea35bed0dd7a029b70b700cc3c0d2139e3deb8)
-rw-r--r--sys/contrib/openzfs/module/os/freebsd/zfs/arc_os.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/sys/contrib/openzfs/module/os/freebsd/zfs/arc_os.c b/sys/contrib/openzfs/module/os/freebsd/zfs/arc_os.c
index 0d5cffbe8d1e..201dbc423336 100644
--- a/sys/contrib/openzfs/module/os/freebsd/zfs/arc_os.c
+++ b/sys/contrib/openzfs/module/os/freebsd/zfs/arc_os.c
@@ -51,8 +51,10 @@
#include <sys/vm.h>
#include <sys/vmmeter.h>
+#if __FreeBSD_version >= 1300139
static struct sx arc_vnlru_lock;
static struct vnode *arc_vnlru_marker;
+#endif
extern struct vfsops zfs_vfsops;
@@ -160,9 +162,13 @@ arc_prune_task(void *arg)
arc_reduce_target_size(ptob(nr_scan));
free(arg, M_TEMP);
+#if __FreeBSD_version >= 1300139
sx_xlock(&arc_vnlru_lock);
vnlru_free_vfsops(nr_scan, &zfs_vfsops, arc_vnlru_marker);
sx_xunlock(&arc_vnlru_lock);
+#else
+ vnlru_free(nr_scan, &zfs_vfsops);
+#endif
}
/*
@@ -239,8 +245,10 @@ arc_lowmem_init(void)
{
arc_event_lowmem = EVENTHANDLER_REGISTER(vm_lowmem, arc_lowmem, NULL,
EVENTHANDLER_PRI_FIRST);
+#if __FreeBSD_version >= 1300139
arc_vnlru_marker = vnlru_alloc_marker();
sx_init(&arc_vnlru_lock, "arc vnlru lock");
+#endif
}
void
@@ -248,10 +256,12 @@ arc_lowmem_fini(void)
{
if (arc_event_lowmem != NULL)
EVENTHANDLER_DEREGISTER(vm_lowmem, arc_event_lowmem);
+#if __FreeBSD_version >= 1300139
if (arc_vnlru_marker != NULL) {
vnlru_free_marker(arc_vnlru_marker);
sx_destroy(&arc_vnlru_lock);
}
+#endif
}
void