svn commit: r357281 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
Mateusz Guzik
mjg at FreeBSD.org
Thu Jan 30 02:14:11 UTC 2020
Author: mjg
Date: Thu Jan 30 02:14:10 2020
New Revision: 357281
URL: https://svnweb.freebsd.org/changeset/base/357281
Log:
zfs: use VOP_NEED_INACTIVE
Big thanks to Greg V for testing previous verions of the patch.
Differential Revision: https://reviews.freebsd.org/D22130
Modified:
head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 30 02:12:52 2020 (r357280)
+++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 30 02:14:10 2020 (r357281)
@@ -5314,6 +5314,29 @@ zfs_freebsd_inactive(ap)
}
static int
+zfs_freebsd_need_inactive(ap)
+ struct vop_need_inactive_args /* {
+ struct vnode *a_vp;
+ struct thread *a_td;
+ } */ *ap;
+{
+ vnode_t *vp = ap->a_vp;
+ znode_t *zp = VTOZ(vp);
+ zfsvfs_t *zfsvfs = zp->z_zfsvfs;
+ int need;
+
+ if (vn_need_pageq_flush(vp))
+ return (1);
+
+ if (!rw_tryenter(&zfsvfs->z_teardown_inactive_lock, RW_READER))
+ return (1);
+ need = (zp->z_sa_hdl == NULL || zp->z_unlinked || zp->z_atime_dirty);
+ rw_exit(&zfsvfs->z_teardown_inactive_lock);
+
+ return (need);
+}
+
+static int
zfs_freebsd_reclaim(ap)
struct vop_reclaim_args /* {
struct vnode *a_vp;
@@ -5949,6 +5972,7 @@ struct vop_vector zfs_shareops;
struct vop_vector zfs_vnodeops = {
.vop_default = &default_vnodeops,
.vop_inactive = zfs_freebsd_inactive,
+ .vop_need_inactive = zfs_freebsd_need_inactive,
.vop_reclaim = zfs_freebsd_reclaim,
.vop_access = zfs_freebsd_access,
.vop_allocate = VOP_EINVAL,
More information about the svn-src-all
mailing list