Index: sys/coda/coda_vnops.c =================================================================== RCS file: /cvsroot/src/sys/coda/coda_vnops.c,v retrieving revision 1.103 diff -p -u -r1.103 coda_vnops.c --- sys/coda/coda_vnops.c 20 Aug 2016 12:37:06 -0000 1.103 +++ sys/coda/coda_vnops.c 11 Apr 2017 05:52:03 -0000 @@ -827,7 +827,7 @@ int coda_inactive(void *v) { /* true args */ - struct vop_inactive_args *ap = v; + struct vop_inactive_v2_args *ap = v; vnode_t *vp = ap->a_vp; struct cnode *cp = VTOC(vp); kauth_cred_t cred __unused = NULL; @@ -837,7 +837,6 @@ coda_inactive(void *v) if (IS_CTL_VP(vp)) { MARK_INT_SAT(CODA_INACTIVE_STATS); - VOP_UNLOCK(vp); return 0; } @@ -857,7 +856,6 @@ coda_inactive(void *v) printf("%s: %p ovp != NULL\n", __func__, vp); #endif /* XXX Do we need to VOP_CLOSE container vnodes? */ - VOP_UNLOCK(vp); if (!IS_UNMOUNTING(cp)) *ap->a_recycle = true; Index: sys/fs/adosfs/advnops.c =================================================================== RCS file: /cvsroot/src/sys/fs/adosfs/advnops.c,v retrieving revision 1.48 diff -p -u -r1.48 advnops.c --- sys/fs/adosfs/advnops.c 20 Aug 2016 12:37:06 -0000 1.48 +++ sys/fs/adosfs/advnops.c 11 Apr 2017 05:57:51 -0000 @@ -843,15 +843,13 @@ adosfs_readlink(void *v) int adosfs_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { struct vnode *a_vp; bool *a_recycle; } */ *sp = v; - struct vnode *vp = sp->a_vp; #ifdef ADOSFS_DIAGNOSTIC advopprint(sp); #endif - VOP_UNLOCK(vp); /* XXX this needs to check if file was deleted */ *sp->a_recycle = true; Index: sys/fs/cd9660/cd9660_node.c =================================================================== RCS file: /cvsroot/src/sys/fs/cd9660/cd9660_node.c,v retrieving revision 1.35 diff -p -u -r1.35 cd9660_node.c --- sys/fs/cd9660/cd9660_node.c 20 Aug 2016 12:37:06 -0000 1.35 +++ sys/fs/cd9660/cd9660_node.c 11 Apr 2017 05:52:03 -0000 @@ -102,7 +102,7 @@ cd9660_done(void) int cd9660_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { struct vnode *a_vp; bool *a_recycle; } */ *ap = v; @@ -116,7 +116,6 @@ cd9660_inactive(void *v) */ ip->i_flag = 0; *ap->a_recycle = (ip->inode.iso_mode == 0); - VOP_UNLOCK(vp); return error; } Index: sys/fs/efs/efs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/fs/efs/efs_vnops.c,v retrieving revision 1.36 diff -p -u -r1.36 efs_vnops.c --- sys/fs/efs/efs_vnops.c 20 Aug 2016 12:37:07 -0000 1.36 +++ sys/fs/efs/efs_vnops.c 11 Apr 2017 05:52:03 -0000 @@ -560,7 +560,7 @@ efs_readlink(void *v) static int efs_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { const struct vnodeop_desc *a_desc; struct vnode *a_vp; bool *a_recycle @@ -568,7 +568,6 @@ efs_inactive(void *v) struct efs_inode *eip = EFS_VTOI(ap->a_vp); *ap->a_recycle = (eip->ei_mode == 0); - VOP_UNLOCK(ap->a_vp); return (0); } Index: sys/fs/filecorefs/filecore_node.c =================================================================== RCS file: /cvsroot/src/sys/fs/filecorefs/filecore_node.c,v retrieving revision 1.28 diff -p -u -r1.28 filecore_node.c --- sys/fs/filecorefs/filecore_node.c 20 Aug 2016 12:37:07 -0000 1.28 +++ sys/fs/filecorefs/filecore_node.c 11 Apr 2017 05:52:03 -0000 @@ -213,7 +213,7 @@ filecore_loadvnode(struct mount *mp, str int filecore_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { struct vnode *a_vp; bool *a_recycle; } */ *ap = v; @@ -227,7 +227,7 @@ filecore_inactive(void *v) */ ip->i_flag = 0; *ap->a_recycle = (filecore_staleinode(ip) != 0); - VOP_UNLOCK(vp); + return error; } Index: sys/fs/msdosfs/msdosfs_denode.c =================================================================== RCS file: /cvsroot/src/sys/fs/msdosfs/msdosfs_denode.c,v retrieving revision 1.53 diff -p -u -r1.53 msdosfs_denode.c --- sys/fs/msdosfs/msdosfs_denode.c 1 Mar 2017 10:41:28 -0000 1.53 +++ sys/fs/msdosfs/msdosfs_denode.c 11 Apr 2017 05:52:03 -0000 @@ -569,7 +569,7 @@ msdosfs_reclaim(void *v) int msdosfs_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { struct vnode *a_vp; bool *a_recycle; } */ *ap = v; @@ -616,7 +616,7 @@ out: vp->v_usecount, dep->de_Name[0]); #endif *ap->a_recycle = (dep->de_Name[0] == SLOT_DELETED); - VOP_UNLOCK(vp); + return (error); } Index: sys/fs/nilfs/nilfs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/fs/nilfs/nilfs_vnops.c,v retrieving revision 1.33 diff -p -u -r1.33 nilfs_vnops.c --- sys/fs/nilfs/nilfs_vnops.c 20 Aug 2016 12:37:07 -0000 1.33 +++ sys/fs/nilfs/nilfs_vnops.c 11 Apr 2017 05:52:03 -0000 @@ -70,7 +70,7 @@ extern int prtactive; int nilfs_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { struct vnode *a_vp; bool *a_recycle; } */ *ap = v; @@ -90,7 +90,6 @@ nilfs_inactive(void *v) * referenced anymore in a directory we ought to free up the resources * on disc if applicable. */ - VOP_UNLOCK(vp); return 0; } Index: sys/fs/ntfs/ntfs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/fs/ntfs/ntfs_vnops.c,v retrieving revision 1.60 diff -p -u -r1.60 ntfs_vnops.c --- sys/fs/ntfs/ntfs_vnops.c 20 Aug 2016 12:37:07 -0000 1.60 +++ sys/fs/ntfs/ntfs_vnops.c 11 Apr 2017 05:52:03 -0000 @@ -205,10 +205,11 @@ ntfs_getattr(void *v) int ntfs_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { struct vnode *a_vp; + bool *a_recycle; } */ *ap = v; - struct vnode *vp = ap->a_vp; + struct vnode *vp __unused = ap->a_vp; #ifdef NTFS_DEBUG struct ntnode *ip = VTONT(vp); #endif @@ -216,8 +217,6 @@ ntfs_inactive(void *v) dprintf(("ntfs_inactive: vnode: %p, ntnode: %llu\n", vp, (unsigned long long)ip->i_number)); - VOP_UNLOCK(vp); - /* XXX since we don't support any filesystem changes * right now, nothing more needs to be done */ Index: sys/fs/ptyfs/ptyfs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/fs/ptyfs/ptyfs_vnops.c,v retrieving revision 1.52 diff -p -u -r1.52 ptyfs_vnops.c --- sys/fs/ptyfs/ptyfs_vnops.c 20 Aug 2016 12:37:07 -0000 1.52 +++ sys/fs/ptyfs/ptyfs_vnops.c 11 Apr 2017 05:52:03 -0000 @@ -231,7 +231,7 @@ ptyfs_reclaim(void *v) int ptyfs_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { struct vnode *a_vp; bool *a_recycle; } */ *ap = v; @@ -240,7 +240,7 @@ ptyfs_inactive(void *v) if (ptyfs->ptyfs_type == PTYFSptc) ptyfs_clr_active(vp->v_mount, ptyfs->ptyfs_pty); - VOP_UNLOCK(vp); + return 0; } Index: sys/fs/puffs/puffs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/fs/puffs/puffs_vnops.c,v retrieving revision 1.208 diff -p -u -r1.208 puffs_vnops.c --- sys/fs/puffs/puffs_vnops.c 8 Apr 2017 08:49:44 -0000 1.208 +++ sys/fs/puffs/puffs_vnops.c 11 Apr 2017 05:52:03 -0000 @@ -1311,7 +1311,7 @@ callinactive(struct puffs_mount *pmp, pu int puffs_vnop_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { const struct vnodeop_desc *a_desc; struct vnode *a_vp; } */ *ap = v; @@ -1329,7 +1329,6 @@ puffs_vnop_inactive(void *v) * cookie was stall and the node likely already reclaimed. */ if (vp->v_type == VNON) { - VOP_UNLOCK(vp); return 0; } @@ -1415,7 +1414,6 @@ puffs_vnop_inactive(void *v) *ap->a_recycle = recycle; mutex_exit(&pnode->pn_sizemtx); - VOP_UNLOCK(vp); return 0; } Index: sys/fs/smbfs/smbfs_node.c =================================================================== RCS file: /cvsroot/src/sys/fs/smbfs/smbfs_node.c,v retrieving revision 1.54 diff -p -u -r1.54 smbfs_node.c --- sys/fs/smbfs/smbfs_node.c 20 Aug 2016 12:37:08 -0000 1.54 +++ sys/fs/smbfs/smbfs_node.c 11 Apr 2017 05:52:03 -0000 @@ -259,7 +259,7 @@ smbfs_reclaim(void *v) int smbfs_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { struct vnode *a_vp; bool *a_recycle; } */ *ap = v; @@ -289,7 +289,6 @@ smbfs_inactive(void *v) smbfs_attr_cacheremove(vp); } *ap->a_recycle = ((vp->v_type == VNON) || (np->n_flag & NGONE) != 0); - VOP_UNLOCK(vp); return (0); } Index: sys/fs/sysvbfs/sysvbfs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/fs/sysvbfs/sysvbfs_vnops.c,v retrieving revision 1.60 diff -p -u -r1.60 sysvbfs_vnops.c --- sys/fs/sysvbfs/sysvbfs_vnops.c 20 Aug 2016 12:37:08 -0000 1.60 +++ sys/fs/sysvbfs/sysvbfs_vnops.c 11 Apr 2017 05:52:03 -0000 @@ -676,7 +676,7 @@ sysvbfs_readdir(void *v) int sysvbfs_inactive(void *arg) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { struct vnode *a_vp; bool *a_recycle; } */ *a = arg; @@ -688,7 +688,6 @@ sysvbfs_inactive(void *arg) *a->a_recycle = true; else *a->a_recycle = false; - VOP_UNLOCK(v); return 0; } Index: sys/fs/tmpfs/tmpfs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/fs/tmpfs/tmpfs_vnops.c,v retrieving revision 1.130 diff -p -u -r1.130 tmpfs_vnops.c --- sys/fs/tmpfs/tmpfs_vnops.c 30 Mar 2017 09:09:26 -0000 1.130 +++ sys/fs/tmpfs/tmpfs_vnops.c 11 Apr 2017 05:52:03 -0000 @@ -1035,7 +1035,7 @@ tmpfs_readlink(void *v) int tmpfs_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { struct vnode *a_vp; bool *a_recycle; } */ *ap = v; @@ -1054,7 +1054,6 @@ tmpfs_inactive(void *v) } else { *ap->a_recycle = false; } - VOP_UNLOCK(vp); return 0; } Index: sys/fs/udf/udf_vnops.c =================================================================== RCS file: /cvsroot/src/sys/fs/udf/udf_vnops.c,v retrieving revision 1.102 diff -p -u -r1.102 udf_vnops.c --- sys/fs/udf/udf_vnops.c 20 Aug 2016 12:37:08 -0000 1.102 +++ sys/fs/udf/udf_vnops.c 11 Apr 2017 05:52:03 -0000 @@ -80,7 +80,7 @@ extern int prtactive; int udf_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { struct vnode *a_vp; bool *a_recycle; } */ *ap = v; @@ -92,7 +92,6 @@ udf_inactive(void *v) if (udf_node == NULL) { DPRINTF(NODE, ("udf_inactive: inactive NULL UDF node\n")); - VOP_UNLOCK(vp); return 0; } @@ -115,14 +114,12 @@ udf_inactive(void *v) *ap->a_recycle = false; if ((refcnt == 0) && ((vp->v_vflag & VV_SYSTEM) == 0)) { *ap->a_recycle = true; - VOP_UNLOCK(vp); return 0; } /* write out its node */ if (udf_node->i_flags & (IN_CHANGE | IN_UPDATE | IN_MODIFIED)) udf_update(vp, NULL, NULL, NULL, 0); - VOP_UNLOCK(vp); return 0; } Index: sys/fs/union/union_vnops.c =================================================================== RCS file: /cvsroot/src/sys/fs/union/union_vnops.c,v retrieving revision 1.64 diff -p -u -r1.64 union_vnops.c --- sys/fs/union/union_vnops.c 6 Mar 2017 10:08:49 -0000 1.64 +++ sys/fs/union/union_vnops.c 11 Apr 2017 05:52:03 -0000 @@ -1558,7 +1558,7 @@ union_abortop(void *v) int union_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { const struct vnodeop_desc *a_desc; struct vnode *a_vp; bool *a_recycle; @@ -1588,7 +1588,6 @@ union_inactive(void *v) } *ap->a_recycle = ((un->un_cflags & UN_CACHED) == 0); - VOP_UNLOCK(vp); return (0); } Index: sys/fs/unionfs/unionfs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/fs/unionfs/unionfs_vnops.c,v retrieving revision 1.9 diff -p -u -r1.9 unionfs_vnops.c --- sys/fs/unionfs/unionfs_vnops.c 20 Apr 2015 23:03:08 -0000 1.9 +++ sys/fs/unionfs/unionfs_vnops.c 11 Apr 2017 05:52:03 -0000 @@ -1466,9 +1466,8 @@ unionfs_readlink(void *v) static int unionfs_inactive(void *v) { - struct vop_inactive_args *ap = v; + struct vop_inactive_v2_args *ap = v; *ap->a_recycle = true; - VOP_UNLOCK(ap->a_vp); return (0); } Index: sys/fs/v7fs/v7fs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/fs/v7fs/v7fs_vnops.c,v retrieving revision 1.23 diff -p -u -r1.23 v7fs_vnops.c --- sys/fs/v7fs/v7fs_vnops.c 8 Apr 2017 08:51:02 -0000 1.23 +++ sys/fs/v7fs/v7fs_vnops.c 11 Apr 2017 05:52:03 -0000 @@ -1010,7 +1010,7 @@ v7fs_readdir(void *v) int v7fs_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { struct vnode *a_vp; bool *a_recycle; } */ *a = v; @@ -1026,8 +1026,6 @@ v7fs_inactive(void *v) *a->a_recycle = true; } - VOP_UNLOCK(vp); - return 0; } Index: sys/kern/vfs_vnode.c =================================================================== RCS file: /cvsroot/src/sys/kern/vfs_vnode.c,v retrieving revision 1.81 diff -p -u -r1.81 vfs_vnode.c --- sys/kern/vfs_vnode.c 30 Mar 2017 09:16:52 -0000 1.81 +++ sys/kern/vfs_vnode.c 11 Apr 2017 05:52:03 -0000 @@ -761,10 +761,11 @@ vrelel(vnode_t *vp, int flags) * the described file has been deleted, then recycle * the vnode. * - * Note that VOP_INACTIVE() will drop the vnode lock. + * Note that VOP_INACTIVE() will not drop the vnode lock. */ recycle = false; VOP_INACTIVE(vp, &recycle); + VOP_UNLOCK(vp); if (recycle) { /* vcache_reclaim() below will drop the lock. */ if (vn_lock(vp, LK_EXCLUSIVE) != 0) @@ -1553,9 +1554,10 @@ vcache_reclaim(vnode_t *vp) /* * Disassociate the underlying file system from the vnode. - * Note that the VOP_INACTIVE will unlock the vnode. + * Note that the VOP_INACTIVE will not unlock the vnode. */ VOP_INACTIVE(vp, &recycle); + VOP_UNLOCK(vp); if (VOP_RECLAIM(vp)) { vnpanic(vp, "%s: cannot reclaim", __func__); } Index: sys/kern/vnode_if.c =================================================================== RCS file: /cvsroot/src/sys/kern/vnode_if.c,v retrieving revision 1.97 diff -p -u -r1.97 vnode_if.c --- sys/kern/vnode_if.c 22 Feb 2017 09:47:18 -0000 1.97 +++ sys/kern/vnode_if.c 11 Apr 2017 05:52:03 -0000 @@ -1,4 +1,4 @@ -/* $NetBSD: vnode_if.c,v 1.97 2017/02/22 09:47:18 hannken Exp $ */ +/* $NetBSD$ */ /* * Warning: DO NOT EDIT! This file is automatically generated! @@ -40,7 +40,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: vnode_if.c,v 1.97 2017/02/22 09:47:18 hannken Exp $"); +__KERNEL_RCSID(0, "$NetBSD$"); #include #include @@ -1103,13 +1103,13 @@ VOP_ABORTOP(struct vnode *dvp, } const int vop_inactive_vp_offsets[] = { - VOPARG_OFFSETOF(struct vop_inactive_args,a_vp), + VOPARG_OFFSETOF(struct vop_inactive_v2_args,a_vp), VDESC_NO_OFFSET }; const struct vnodeop_desc vop_inactive_desc = { VOP_INACTIVE_DESCOFFSET, "vop_inactive", - 0 | VDESC_VP0_WILLUNLOCK, + 0, vop_inactive_vp_offsets, VDESC_NO_OFFSET, VDESC_NO_OFFSET, @@ -1121,7 +1121,7 @@ VOP_INACTIVE(struct vnode *vp, { int error; bool mpsafe; - struct vop_inactive_args a; + struct vop_inactive_v2_args a; a.a_desc = VDESC(vop_inactive); a.a_vp = vp; a.a_recycle = recycle; Index: sys/kern/vnode_if.src =================================================================== RCS file: /cvsroot/src/sys/kern/vnode_if.src,v retrieving revision 1.70 diff -p -u -r1.70 vnode_if.src --- sys/kern/vnode_if.src 22 Feb 2017 09:45:51 -0000 1.70 +++ sys/kern/vnode_if.src 11 Apr 2017 05:52:03 -0000 @@ -384,10 +384,11 @@ vop_abortop { }; # -#% inactive vp L U U +#% inactive vp L L L # vop_inactive { - IN LOCKED=YES WILLUNLOCK struct vnode *vp; + VERSION 2 + IN LOCKED=YES struct vnode *vp; INOUT bool *recycle; }; Index: sys/miscfs/deadfs/dead_vnops.c =================================================================== RCS file: /cvsroot/src/sys/miscfs/deadfs/dead_vnops.c,v retrieving revision 1.59 diff -p -u -r1.59 dead_vnops.c --- sys/miscfs/deadfs/dead_vnops.c 20 Apr 2015 23:30:58 -0000 1.59 +++ sys/miscfs/deadfs/dead_vnops.c 11 Apr 2017 05:52:03 -0000 @@ -301,13 +301,12 @@ dead_rmdir(void *v) int dead_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { struct vnode *a_vp; bool *a_recycle; } */ *ap = v; *ap->a_recycle = false; - VOP_UNLOCK(ap->a_vp); return 0; } Index: sys/miscfs/fdesc/fdesc_vnops.c =================================================================== RCS file: /cvsroot/src/sys/miscfs/fdesc/fdesc_vnops.c,v retrieving revision 1.127 diff -p -u -r1.127 fdesc_vnops.c --- sys/miscfs/fdesc/fdesc_vnops.c 20 Aug 2016 12:37:08 -0000 1.127 +++ sys/miscfs/fdesc/fdesc_vnops.c 11 Apr 2017 05:52:03 -0000 @@ -836,7 +836,7 @@ fdesc_kqfilter(void *v) int fdesc_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { struct vnode *a_vp; } */ *ap = v; struct vnode *vp = ap->a_vp; @@ -848,7 +848,7 @@ fdesc_inactive(void *v) */ if (fd->fd_type == Fctty || fd->fd_type == Fdesc) vp->v_type = VNON; - VOP_UNLOCK(vp); + return (0); } Index: sys/miscfs/fifofs/fifo_vnops.c =================================================================== RCS file: /cvsroot/src/sys/miscfs/fifofs/fifo_vnops.c,v retrieving revision 1.77 diff -p -u -r1.77 fifo_vnops.c --- sys/miscfs/fifofs/fifo_vnops.c 9 Aug 2014 05:33:01 -0000 1.77 +++ sys/miscfs/fifofs/fifo_vnops.c 11 Apr 2017 05:52:03 -0000 @@ -360,12 +360,11 @@ fifo_poll(void *v) static int fifo_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { struct vnode *a_vp; struct lwp *a_l; - } */ *ap = v; + } */ *ap __unused = v; - VOP_UNLOCK(ap->a_vp); return (0); } Index: sys/miscfs/genfs/layer_vnops.c =================================================================== RCS file: /cvsroot/src/sys/miscfs/genfs/layer_vnops.c,v retrieving revision 1.61 diff -p -u -r1.61 layer_vnops.c --- sys/miscfs/genfs/layer_vnops.c 30 Mar 2017 09:16:52 -0000 1.61 +++ sys/miscfs/genfs/layer_vnops.c 11 Apr 2017 05:52:03 -0000 @@ -579,7 +579,7 @@ layer_fsync(void *v) int layer_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { struct vnode *a_vp; bool *a_recycle; } */ *ap = v; @@ -602,7 +602,7 @@ layer_inactive(void *v) * like they do in the name lookup cache code. * That's too much work for now. */ - VOP_UNLOCK(vp); + return 0; } Index: sys/miscfs/kernfs/kernfs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/miscfs/kernfs/kernfs_vnops.c,v retrieving revision 1.156 diff -p -u -r1.156 kernfs_vnops.c --- sys/miscfs/kernfs/kernfs_vnops.c 20 Aug 2016 12:37:09 -0000 1.156 +++ sys/miscfs/kernfs/kernfs_vnops.c 11 Apr 2017 05:52:03 -0000 @@ -1061,14 +1061,13 @@ kernfs_readdir(void *v) int kernfs_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { struct vnode *a_vp; bool *a_recycle; } */ *ap = v; - struct vnode *vp = ap->a_vp; *ap->a_recycle = false; - VOP_UNLOCK(vp); + return (0); } Index: sys/miscfs/procfs/procfs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/miscfs/procfs/procfs_vnops.c,v retrieving revision 1.195 diff -p -u -r1.195 procfs_vnops.c --- sys/miscfs/procfs/procfs_vnops.c 30 Mar 2017 20:16:29 -0000 1.195 +++ sys/miscfs/procfs/procfs_vnops.c 11 Apr 2017 05:52:03 -0000 @@ -414,7 +414,7 @@ procfs_close(void *v) int procfs_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { struct vnode *a_vp; bool *a_recycle; } */ *ap = v; @@ -425,8 +425,6 @@ procfs_inactive(void *v) *ap->a_recycle = (proc_find(pfs->pfs_pid) == NULL); mutex_exit(proc_lock); - VOP_UNLOCK(vp); - return (0); } Index: sys/miscfs/specfs/spec_vnops.c =================================================================== RCS file: /cvsroot/src/sys/miscfs/specfs/spec_vnops.c,v retrieving revision 1.169 diff -p -u -r1.169 spec_vnops.c --- sys/miscfs/specfs/spec_vnops.c 1 Mar 2017 10:46:05 -0000 1.169 +++ sys/miscfs/specfs/spec_vnops.c 11 Apr 2017 05:52:03 -0000 @@ -1082,7 +1082,7 @@ out: int spec_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { struct vnode *a_vp; struct bool *a_recycle; } */ *ap = v; @@ -1090,7 +1090,7 @@ spec_inactive(void *v) KASSERT(vp->v_mount == dead_rootmount); *ap->a_recycle = true; - VOP_UNLOCK(vp); + return 0; } Index: sys/nfs/nfs_node.c =================================================================== RCS file: /cvsroot/src/sys/nfs/nfs_node.c,v retrieving revision 1.119 diff -p -u -r1.119 nfs_node.c --- sys/nfs/nfs_node.c 20 Aug 2016 12:37:09 -0000 1.119 +++ sys/nfs/nfs_node.c 11 Apr 2017 05:52:03 -0000 @@ -179,7 +179,7 @@ nfs_nget1(struct mount *mntp, nfsfh_t *f int nfs_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { struct vnode *a_vp; bool *a_recycle; } */ *ap = v; @@ -203,8 +203,6 @@ nfs_inactive(void *v) nfs_invaldircache(vp, NFS_INVALDIRCACHE_FORCE | NFS_INVALDIRCACHE_KEEPEOF); - VOP_UNLOCK(vp); - if (sp != NULL) { workqueue_enqueue(nfs_sillyworkq, &sp->s_work, NULL); } Index: sys/rump/include/rump/rumpvnode_if.h =================================================================== RCS file: /cvsroot/src/sys/rump/include/rump/rumpvnode_if.h,v retrieving revision 1.21 diff -p -u -r1.21 rumpvnode_if.h --- sys/rump/include/rump/rumpvnode_if.h 22 Feb 2017 09:47:18 -0000 1.21 +++ sys/rump/include/rump/rumpvnode_if.h 11 Apr 2017 05:52:03 -0000 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpvnode_if.h,v 1.21 2017/02/22 09:47:18 hannken Exp $ */ +/* $NetBSD$ */ /* * Warning: DO NOT EDIT! This file is automatically generated! Index: sys/rump/librump/rumpvfs/rumpfs.c =================================================================== RCS file: /cvsroot/src/sys/rump/librump/rumpvfs/rumpfs.c,v retrieving revision 1.145 diff -p -u -r1.145 rumpfs.c --- sys/rump/librump/rumpvfs/rumpfs.c 1 Mar 2017 10:44:47 -0000 1.145 +++ sys/rump/librump/rumpvfs/rumpfs.c 11 Apr 2017 05:52:03 -0000 @@ -1592,7 +1592,7 @@ rump_vop_success(void *v) static int rump_vop_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { struct vnode *a_vp; bool *a_recycle; } */ *ap = v; @@ -1611,7 +1611,6 @@ rump_vop_inactive(void *v) } *ap->a_recycle = (rn->rn_flags & RUMPNODE_CANRECLAIM) ? true : false; - VOP_UNLOCK(vp); return 0; } Index: sys/rump/librump/rumpvfs/rumpvnode_if.c =================================================================== RCS file: /cvsroot/src/sys/rump/librump/rumpvfs/rumpvnode_if.c,v retrieving revision 1.21 diff -p -u -r1.21 rumpvnode_if.c --- sys/rump/librump/rumpvfs/rumpvnode_if.c 22 Feb 2017 09:47:18 -0000 1.21 +++ sys/rump/librump/rumpvfs/rumpvnode_if.c 11 Apr 2017 05:52:03 -0000 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpvnode_if.c,v 1.21 2017/02/22 09:47:18 hannken Exp $ */ +/* $NetBSD$ */ /* * Warning: DO NOT EDIT! This file is automatically generated! @@ -40,7 +40,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: rumpvnode_if.c,v 1.21 2017/02/22 09:47:18 hannken Exp $"); +__KERNEL_RCSID(0, "$NetBSD$"); #include #include Index: sys/sys/vnode_if.h =================================================================== RCS file: /cvsroot/src/sys/sys/vnode_if.h,v retrieving revision 1.92 diff -p -u -r1.92 vnode_if.h --- sys/sys/vnode_if.h 22 Feb 2017 09:47:18 -0000 1.92 +++ sys/sys/vnode_if.h 11 Apr 2017 05:52:03 -0000 @@ -1,4 +1,4 @@ -/* $NetBSD: vnode_if.h,v 1.92 2017/02/22 09:47:18 hannken Exp $ */ +/* $NetBSD$ */ /* * Warning: DO NOT EDIT! This file is automatically generated! @@ -372,7 +372,7 @@ extern const struct vnodeop_desc vop_abo int VOP_ABORTOP(struct vnode *, struct componentname *); #define VOP_INACTIVE_DESCOFFSET 31 -struct vop_inactive_args { +struct vop_inactive_v2_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; bool *a_recycle; Index: sys/ufs/chfs/chfs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/ufs/chfs/chfs_vnops.c,v retrieving revision 1.30 diff -p -u -r1.30 chfs_vnops.c --- sys/ufs/chfs/chfs_vnops.c 30 Mar 2017 09:10:46 -0000 1.30 +++ sys/ufs/chfs/chfs_vnops.c 11 Apr 2017 05:52:03 -0000 @@ -1452,7 +1452,7 @@ chfs_readlink(void *v) int chfs_inactive(void *v) { - struct vnode *vp = ((struct vop_inactive_args *) v)->a_vp; + struct vnode *vp = ((struct vop_inactive_v2_args *) v)->a_vp; struct chfs_inode *ip = VTOI(vp); struct chfs_vnode_cache *chvc; dbg("inactive | vno: %llu\n", (unsigned long long)ip->ino); @@ -1463,13 +1463,11 @@ chfs_inactive(void *v) if (ip->ino) { chvc = ip->chvc; if (chvc->nlink) - *((struct vop_inactive_args *) v)->a_recycle = 0; + *((struct vop_inactive_v2_args *) v)->a_recycle = 0; } else { - *((struct vop_inactive_args *) v)->a_recycle = 1; + *((struct vop_inactive_v2_args *) v)->a_recycle = 1; } - VOP_UNLOCK(vp); - return 0; } Index: sys/ufs/ext2fs/ext2fs_inode.c =================================================================== RCS file: /cvsroot/src/sys/ufs/ext2fs/ext2fs_inode.c,v retrieving revision 1.86 diff -p -u -r1.86 ext2fs_inode.c --- sys/ufs/ext2fs/ext2fs_inode.c 14 Aug 2016 11:44:54 -0000 1.86 +++ sys/ufs/ext2fs/ext2fs_inode.c 11 Apr 2017 05:52:03 -0000 @@ -190,7 +190,7 @@ ext2fs_setnblock(struct inode *ip, uint6 int ext2fs_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { struct vnode *a_vp; bool *a_recycle; } */ *ap = v; @@ -223,7 +223,7 @@ out: * so that it can be reused immediately. */ *ap->a_recycle = (ip->i_e2fs_dtime != 0); - VOP_UNLOCK(vp); + return error; } Index: sys/ufs/lfs/lfs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/ufs/lfs/lfs_vnops.c,v retrieving revision 1.312 diff -p -u -r1.312 lfs_vnops.c --- sys/ufs/lfs/lfs_vnops.c 11 Apr 2017 06:01:03 -0000 1.312 +++ sys/ufs/lfs/lfs_vnops.c 11 Apr 2017 06:02:03 -0000 @@ -519,8 +519,9 @@ out: int lfs_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { struct vnode *a_vp; + bool *a_recycle; } */ *ap = v; KASSERT(VOP_ISLOCKED(ap->a_vp) == LK_EXCLUSIVE); @@ -535,7 +536,6 @@ lfs_inactive(void *v) mutex_enter(&lfs_lock); LFS_CLR_UINO(VTOI(ap->a_vp), IN_ALLMOD); mutex_exit(&lfs_lock); - VOP_UNLOCK(ap->a_vp); return 0; } Index: sys/ufs/lfs/ulfs_inode.c =================================================================== RCS file: /cvsroot/src/sys/ufs/lfs/ulfs_inode.c,v retrieving revision 1.17 diff -p -u -r1.17 ulfs_inode.c --- sys/ufs/lfs/ulfs_inode.c 30 Mar 2017 09:10:08 -0000 1.17 +++ sys/ufs/lfs/ulfs_inode.c 11 Apr 2017 05:52:04 -0000 @@ -79,7 +79,7 @@ extern int prtactive; int ulfs_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { struct vnode *a_vp; struct bool *a_recycle; } */ *ap = v; @@ -124,7 +124,7 @@ out: * so that it can be reused immediately. */ *ap->a_recycle = (ip->i_mode == 0); - VOP_UNLOCK(vp); + return (error); } Index: sys/ufs/mfs/mfs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/ufs/mfs/mfs_vnops.c,v retrieving revision 1.56 diff -p -u -r1.56 mfs_vnops.c --- sys/ufs/mfs/mfs_vnops.c 14 Jan 2015 11:21:31 -0000 1.56 +++ sys/ufs/mfs/mfs_vnops.c 11 Apr 2017 05:52:04 -0000 @@ -271,7 +271,7 @@ mfs_close(void *v) int mfs_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { struct vnode *a_vp; } */ *ap = v; struct vnode *vp = ap->a_vp; Index: sys/ufs/ufs/ufs_inode.c =================================================================== RCS file: /cvsroot/src/sys/ufs/ufs/ufs_inode.c,v retrieving revision 1.99 diff -p -u -r1.99 ufs_inode.c --- sys/ufs/ufs/ufs_inode.c 1 Mar 2017 10:42:45 -0000 1.99 +++ sys/ufs/ufs/ufs_inode.c 11 Apr 2017 05:52:04 -0000 @@ -77,7 +77,7 @@ extern int prtactive; int ufs_inactive(void *v) { - struct vop_inactive_args /* { + struct vop_inactive_v2_args /* { struct vnode *a_vp; struct bool *a_recycle; } */ *ap = v; @@ -150,7 +150,7 @@ out: * so that it can be reused immediately. */ *ap->a_recycle = (ip->i_mode == 0); - VOP_UNLOCK(vp); + return (allerror); } Index: external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c =================================================================== RCS file: /cvsroot/src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c,v retrieving revision 1.23 diff -p -u -r1.23 zfs_vnops.c --- external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c 20 Apr 2015 23:03:07 -0000 1.23 +++ external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c 11 Apr 2017 05:56:31 -0000 @@ -5533,7 +5533,7 @@ zfs_netbsd_link(void *v) static int zfs_netbsd_inactive(void *v) { - struct vop_inactive_args *ap = v; + struct vop_inactive_v2_args *ap = v; vnode_t *vp = ap->a_vp; znode_t *zp = VTOZ(vp); @@ -5543,7 +5543,7 @@ zfs_netbsd_inactive(void *v) * vrele() will call us again. */ *ap->a_recycle = (zp->z_unlinked != 0); - VOP_UNLOCK(vp); + return (0); }