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,
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to