Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src Make VOP_INACTIVE preserve vnode lock on return.



details:   https://anonhg.NetBSD.org/src/rev/b0fcf61fb982
branches:  trunk
changeset: 823067:b0fcf61fb982
user:      riastradh <riastradh%NetBSD.org@localhost>
date:      Tue Apr 11 14:24:59 2017 +0000

description:
Make VOP_INACTIVE preserve vnode lock on return.

Discussed on tech-kern:
https://mail-index.netbsd.org/tech-kern/2017/04/01/msg021751.html

Ride 7.99.68, a bumpy bus of incremental vfs improvements!

diffstat:

 external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c |   4 ++--
 lib/libp2k/p2k.c                                       |   3 ++-
 share/man/man9/vnodeops.9                              |   6 +++---
 sys/coda/coda_vnops.c                                  |   8 +++-----
 sys/fs/adosfs/advnops.c                                |   8 +++-----
 sys/fs/cd9660/cd9660_node.c                            |   7 +++----
 sys/fs/efs/efs_vnops.c                                 |   7 +++----
 sys/fs/filecorefs/filecore_node.c                      |   8 ++++----
 sys/fs/msdosfs/msdosfs_denode.c                        |   8 ++++----
 sys/fs/nilfs/nilfs_vnops.c                             |   7 +++----
 sys/fs/ntfs/ntfs_vnops.c                               |  11 +++++------
 sys/fs/ptyfs/ptyfs_vnops.c                             |   8 ++++----
 sys/fs/puffs/puffs_vnops.c                             |   8 +++-----
 sys/fs/smbfs/smbfs_node.c                              |   7 +++----
 sys/fs/sysvbfs/sysvbfs_vnops.c                         |   7 +++----
 sys/fs/tmpfs/tmpfs_vnops.c                             |   7 +++----
 sys/fs/udf/udf_vnops.c                                 |   9 +++------
 sys/fs/union/union_vnops.c                             |   7 +++----
 sys/fs/unionfs/unionfs_vnops.c                         |   3 +--
 sys/fs/v7fs/v7fs_vnops.c                               |   8 +++-----
 sys/kern/vfs_vnode.c                                   |  10 ++++++----
 sys/kern/vnode_if.src                                  |   7 ++++---
 sys/miscfs/deadfs/dead_vnops.c                         |   7 +++----
 sys/miscfs/fdesc/fdesc_vnops.c                         |   8 ++++----
 sys/miscfs/fifofs/fifo_vnops.c                         |   9 ++++-----
 sys/miscfs/genfs/layer_vnops.c                         |   8 ++++----
 sys/miscfs/kernfs/kernfs_vnops.c                       |   9 ++++-----
 sys/miscfs/procfs/procfs_vnops.c                       |   8 +++-----
 sys/miscfs/specfs/spec_vnops.c                         |   8 ++++----
 sys/nfs/nfs_node.c                                     |   8 +++-----
 sys/rump/librump/rumpvfs/rumpfs.c                      |   7 +++----
 sys/ufs/chfs/chfs_vnops.c                              |  10 ++++------
 sys/ufs/ext2fs/ext2fs_inode.c                          |   8 ++++----
 sys/ufs/lfs/lfs_vnops.c                                |   8 ++++----
 sys/ufs/lfs/ulfs_inode.c                               |   8 ++++----
 sys/ufs/mfs/mfs_vnops.c                                |   6 +++---
 sys/ufs/ufs/ufs_inode.c                                |   8 ++++----
 37 files changed, 126 insertions(+), 152 deletions(-)

diffs (truncated from 1268 to 300 lines):

diff -r 72e18231cc12 -r b0fcf61fb982 external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c
--- a/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c    Tue Apr 11 14:15:08 2017 +0000
+++ b/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c    Tue Apr 11 14:24:59 2017 +0000
@@ -5533,7 +5533,7 @@
 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 @@
         * vrele() will call us again.
         */
        *ap->a_recycle = (zp->z_unlinked != 0);
-       VOP_UNLOCK(vp);
+
        return (0);
 }
 
diff -r 72e18231cc12 -r b0fcf61fb982 lib/libp2k/p2k.c
--- a/lib/libp2k/p2k.c  Tue Apr 11 14:15:08 2017 +0000
+++ b/lib/libp2k/p2k.c  Tue Apr 11 14:24:59 2017 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: p2k.c,v 1.68 2016/01/25 11:45:58 pooka Exp $   */
+/*     $NetBSD: p2k.c,v 1.69 2017/04/11 14:25:02 riastradh Exp $       */
 
 /*
  * Copyright (c) 2007, 2008, 2009  Antti Kantee.  All Rights Reserved.
@@ -1400,6 +1400,7 @@
         */
        RUMP_VOP_LOCK(vp, LK_EXCLUSIVE);
        rv = RUMP_VOP_INACTIVE(vp, &recycle);
+       RUMP_VOP_UNLOCK(vp);
        if (recycle) {
                puffs_setback(puffs_cc_getcc(pu), PUFFS_SETBACK_NOREF_N1);
                rump_pub_vp_rele(p2n->p2n_vp);
diff -r 72e18231cc12 -r b0fcf61fb982 share/man/man9/vnodeops.9
--- a/share/man/man9/vnodeops.9 Tue Apr 11 14:15:08 2017 +0000
+++ b/share/man/man9/vnodeops.9 Tue Apr 11 14:24:59 2017 +0000
@@ -1,4 +1,4 @@
-.\"     $NetBSD: vnodeops.9,v 1.97 2016/01/25 18:20:16 christos Exp $
+.\"     $NetBSD: vnodeops.9,v 1.98 2017/04/11 14:25:02 riastradh Exp $
 .\"
 .\" Copyright (c) 2001, 2005, 2006 The NetBSD Foundation, Inc.
 .\" All rights reserved.
@@ -27,7 +27,7 @@
 .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 .\" POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd January 25, 2016
+.Dd April 11, 2017
 .Dt VNODEOPS 9
 .Os
 .Sh NAME
@@ -1102,7 +1102,7 @@
 appropriate error code is returned.
 The vnode
 .Fa vp
-must be locked on entry, and will be unlocked on return.
+must be locked on entry, and will remain locked on return.
 .It Fn VOP_RECLAIM "vp"
 Reclaim the vnode for another file system.
 .Fn VOP_RECLAIM
diff -r 72e18231cc12 -r b0fcf61fb982 sys/coda/coda_vnops.c
--- a/sys/coda/coda_vnops.c     Tue Apr 11 14:15:08 2017 +0000
+++ b/sys/coda/coda_vnops.c     Tue Apr 11 14:24:59 2017 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: coda_vnops.c,v 1.103 2016/08/20 12:37:06 hannken Exp $ */
+/*     $NetBSD: coda_vnops.c,v 1.104 2017/04/11 14:24:59 riastradh Exp $       */
 
 /*
  *
@@ -46,7 +46,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: coda_vnops.c,v 1.103 2016/08/20 12:37:06 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: coda_vnops.c,v 1.104 2017/04/11 14:24:59 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -827,7 +827,7 @@
 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 @@
 
     if (IS_CTL_VP(vp)) {
        MARK_INT_SAT(CODA_INACTIVE_STATS);
-       VOP_UNLOCK(vp);
        return 0;
     }
 
@@ -857,7 +856,6 @@
        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;
 
diff -r 72e18231cc12 -r b0fcf61fb982 sys/fs/adosfs/advnops.c
--- a/sys/fs/adosfs/advnops.c   Tue Apr 11 14:15:08 2017 +0000
+++ b/sys/fs/adosfs/advnops.c   Tue Apr 11 14:24:59 2017 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: advnops.c,v 1.48 2016/08/20 12:37:06 hannken Exp $     */
+/*     $NetBSD: advnops.c,v 1.49 2017/04/11 14:24:59 riastradh Exp $   */
 
 /*
  * Copyright (c) 1994 Christian E. Hopps
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: advnops.c,v 1.48 2016/08/20 12:37:06 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: advnops.c,v 1.49 2017/04/11 14:24:59 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -843,15 +843,13 @@
 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;
 
diff -r 72e18231cc12 -r b0fcf61fb982 sys/fs/cd9660/cd9660_node.c
--- a/sys/fs/cd9660/cd9660_node.c       Tue Apr 11 14:15:08 2017 +0000
+++ b/sys/fs/cd9660/cd9660_node.c       Tue Apr 11 14:24:59 2017 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: cd9660_node.c,v 1.35 2016/08/20 12:37:06 hannken Exp $ */
+/*     $NetBSD: cd9660_node.c,v 1.36 2017/04/11 14:24:59 riastradh Exp $       */
 
 /*-
  * Copyright (c) 1982, 1986, 1989, 1994
@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cd9660_node.c,v 1.35 2016/08/20 12:37:06 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cd9660_node.c,v 1.36 2017/04/11 14:24:59 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -102,7 +102,7 @@
 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 @@
         */
        ip->i_flag = 0;
        *ap->a_recycle = (ip->inode.iso_mode == 0);
-       VOP_UNLOCK(vp);
        return error;
 }
 
diff -r 72e18231cc12 -r b0fcf61fb982 sys/fs/efs/efs_vnops.c
--- a/sys/fs/efs/efs_vnops.c    Tue Apr 11 14:15:08 2017 +0000
+++ b/sys/fs/efs/efs_vnops.c    Tue Apr 11 14:24:59 2017 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: efs_vnops.c,v 1.36 2016/08/20 12:37:07 hannken Exp $   */
+/*     $NetBSD: efs_vnops.c,v 1.37 2017/04/11 14:24:59 riastradh Exp $ */
 
 /*
  * Copyright (c) 2006 Stephen M. Rumble <rumble%ephemeral.org@localhost>
@@ -17,7 +17,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: efs_vnops.c,v 1.36 2016/08/20 12:37:07 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: efs_vnops.c,v 1.37 2017/04/11 14:24:59 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -560,7 +560,7 @@
 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 @@
        struct efs_inode *eip = EFS_VTOI(ap->a_vp);
 
        *ap->a_recycle = (eip->ei_mode == 0);
-       VOP_UNLOCK(ap->a_vp);
 
        return (0);
 }
diff -r 72e18231cc12 -r b0fcf61fb982 sys/fs/filecorefs/filecore_node.c
--- a/sys/fs/filecorefs/filecore_node.c Tue Apr 11 14:15:08 2017 +0000
+++ b/sys/fs/filecorefs/filecore_node.c Tue Apr 11 14:24:59 2017 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: filecore_node.c,v 1.28 2016/08/20 12:37:07 hannken Exp $       */
+/*     $NetBSD: filecore_node.c,v 1.29 2017/04/11 14:24:59 riastradh Exp $     */
 
 /*-
  * Copyright (c) 1982, 1986, 1989, 1994
@@ -67,7 +67,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: filecore_node.c,v 1.28 2016/08/20 12:37:07 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: filecore_node.c,v 1.29 2017/04/11 14:24:59 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -213,7 +213,7 @@
 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 @@
         */
        ip->i_flag = 0;
        *ap->a_recycle = (filecore_staleinode(ip) != 0);
-       VOP_UNLOCK(vp);
+
        return error;
 }
 
diff -r 72e18231cc12 -r b0fcf61fb982 sys/fs/msdosfs/msdosfs_denode.c
--- a/sys/fs/msdosfs/msdosfs_denode.c   Tue Apr 11 14:15:08 2017 +0000
+++ b/sys/fs/msdosfs/msdosfs_denode.c   Tue Apr 11 14:24:59 2017 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: msdosfs_denode.c,v 1.53 2017/03/01 10:41:28 hannken Exp $      */
+/*     $NetBSD: msdosfs_denode.c,v 1.54 2017/04/11 14:24:59 riastradh Exp $    */
 
 /*-
  * Copyright (C) 1994, 1995, 1997 Wolfgang Solfrank.
@@ -48,7 +48,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: msdosfs_denode.c,v 1.53 2017/03/01 10:41:28 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: msdosfs_denode.c,v 1.54 2017/04/11 14:24:59 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -569,7 +569,7 @@
 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 @@
                vp->v_usecount, dep->de_Name[0]);
 #endif
        *ap->a_recycle = (dep->de_Name[0] == SLOT_DELETED);
-       VOP_UNLOCK(vp);
+
        return (error);
 }
 
diff -r 72e18231cc12 -r b0fcf61fb982 sys/fs/nilfs/nilfs_vnops.c
--- a/sys/fs/nilfs/nilfs_vnops.c        Tue Apr 11 14:15:08 2017 +0000
+++ b/sys/fs/nilfs/nilfs_vnops.c        Tue Apr 11 14:24:59 2017 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: nilfs_vnops.c,v 1.33 2016/08/20 12:37:07 hannken Exp $ */
+/* $NetBSD: nilfs_vnops.c,v 1.34 2017/04/11 14:24:59 riastradh Exp $ */
 
 /*
  * Copyright (c) 2008, 2009 Reinoud Zandijk
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__KERNEL_RCSID(0, "$NetBSD: nilfs_vnops.c,v 1.33 2016/08/20 12:37:07 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nilfs_vnops.c,v 1.34 2017/04/11 14:24:59 riastradh Exp $");



Home | Main Index | Thread Index | Old Index