aboutsummaryrefslogtreecommitdiff
path: root/sys/contrib/openzfs/module
diff options
context:
space:
mode:
authorMateusz Guzik <mjg@FreeBSD.org>2021-04-11 04:49:24 +0000
committerMateusz Guzik <mjg@FreeBSD.org>2021-04-11 04:57:26 +0000
commitfeea35bed0dd7a029b70b700cc3c0d2139e3deb8 (patch)
tree971cdc3f01d29e8fac96c217b99193dc60a60078 /sys/contrib/openzfs/module
parent22cefe3d8378f58adcdbb2c7589b9f30c2a38315 (diff)
downloadsrc-feea35bed0dd7a029b70b700cc3c0d2139e3deb8.tar.gz
src-feea35bed0dd7a029b70b700cc3c0d2139e3deb8.zip
zfs: make vnlru_free_vfsops use conditional on version
Diff reduction against upstream.
Diffstat (limited to 'sys/contrib/openzfs/module')
-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