Source-Changes-HG archive

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

[src/trunk]: src/sys/ufs/ufs Replace most uses of vp->v_usecount with a call ...



details:   https://anonhg.NetBSD.org/src/rev/281854394cec
branches:  trunk
changeset: 1009139:281854394cec
user:      ad <ad%NetBSD.org@localhost>
date:      Mon Apr 13 19:23:17 2020 +0000

description:
Replace most uses of vp->v_usecount with a call to vrefcnt(vp), a function
that hides the details and does atomic_load_relaxed().  Signature matches
FreeBSD.

diffstat:

 external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vfsops.c |   2 +-
 external/cddl/osnet/sys/sys/vnode.h                     |   7 +-
 sys/coda/coda_namecache.c                               |  12 +-
 sys/coda/coda_subr.c                                    |  18 ++--
 sys/coda/coda_vnops.c                                   |  16 ++--
 sys/fs/msdosfs/msdosfs_denode.c                         |   8 +-
 sys/fs/msdosfs/msdosfs_vfsops.c                         |   6 +-
 sys/fs/msdosfs/msdosfs_vnops.c                          |  10 +-
 sys/fs/nilfs/nilfs_vnops.c                              |   8 +-
 sys/fs/ntfs/ntfs_vfsops.c                               |   6 +-
 sys/fs/ptyfs/ptyfs_vnops.c                              |   6 +-
 sys/fs/udf/udf_vfsops.c                                 |   8 +-
 sys/fs/udf/udf_vnops.c                                  |   8 +-
 sys/fs/v7fs/v7fs_vnops.c                                |  10 +-
 sys/kern/exec_subr.c                                    |   6 +-
 sys/kern/vfs_cache.c                                    |   6 +-
 sys/kern/vfs_getcwd.c                                   |   6 +-
 sys/kern/vfs_mount.c                                    |  10 +-
 sys/kern/vfs_subr.c                                     |   6 +-
 sys/kern/vfs_vnode.c                                    |  60 ++++++++++------
 sys/kern/vfs_vnops.c                                    |   6 +-
 sys/miscfs/fdesc/fdesc_vfsops.c                         |   6 +-
 sys/miscfs/genfs/layer_subr.c                           |  12 +-
 sys/miscfs/genfs/layer_vnops.c                          |   6 +-
 sys/miscfs/nullfs/null_vfsops.c                         |   6 +-
 sys/miscfs/overlay/overlay_vfsops.c                     |   6 +-
 sys/miscfs/umapfs/umap_vfsops.c                         |   6 +-
 sys/nfs/nfs_vfsops.c                                    |   6 +-
 sys/nfs/nfs_vnops.c                                     |  18 ++--
 sys/rump/librump/rumpvfs/rump_vfs.c                     |   6 +-
 sys/rump/librump/rumpvfs/rumpfs.c                       |   6 +-
 sys/sys/vnode.h                                         |   5 +-
 sys/ufs/lfs/lfs_vnops.c                                 |  10 +-
 sys/ufs/mfs/mfs_vnops.c                                 |   6 +-
 sys/ufs/ufs/ufs_vnops.c                                 |  10 +-
 35 files changed, 173 insertions(+), 161 deletions(-)

diffs (truncated from 1374 to 300 lines):

diff -r a87f09935ec1 -r 281854394cec external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vfsops.c
--- a/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vfsops.c   Mon Apr 13 16:29:59 2020 +0000
+++ b/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vfsops.c   Mon Apr 13 19:23:17 2020 +0000
@@ -1994,7 +1994,7 @@
        mutex_enter(mvp->v_interlock);
        if ((uap->flags & MS_REMOUNT) == 0 &&
            (uap->flags & MS_OVERLAY) == 0 &&
-           (mvp->v_count != 1 || (mvp->v_flag & VROOT))) {
+           (vrefcnt(mvp) != 1 || (mvp->v_flag & VROOT))) {
                mutex_exit(mvp->v_interlock);
                return (SET_ERROR(EBUSY));
        }
diff -r a87f09935ec1 -r 281854394cec external/cddl/osnet/sys/sys/vnode.h
--- a/external/cddl/osnet/sys/sys/vnode.h       Mon Apr 13 16:29:59 2020 +0000
+++ b/external/cddl/osnet/sys/sys/vnode.h       Mon Apr 13 19:23:17 2020 +0000
@@ -1,5 +1,4 @@
-
-/*     $NetBSD: vnode.h,v 1.15 2019/01/12 10:44:36 hannken Exp $       */
+/*     $NetBSD: vnode.h,v 1.16 2020/04/13 19:23:17 ad Exp $    */
 
 /*
  * CDDL HEADER START
@@ -156,7 +155,7 @@
 #define        vn_vfsunlock(vp)        do { } while (0)
 #define        vn_ismntpt(vp)          ((vp)->v_type == VDIR && (vp)->v_mountedhere != NULL)
 #define        vn_mountedvfs(vp)       ((vp)->v_mountedhere)
-#define vn_has_cached_data(vp) ((vp)->v_uobj.uo_npages != 0)
+#define vn_has_cached_data(vp) (((vp)->v_iflag & VI_PAGES) != 0)
 #define        vn_exists(vp)           do { } while (0)
 #define        vn_invalid(vp)          do { } while (0)
 #define        vn_free(vp)             do { } while (0)
@@ -166,7 +165,7 @@
 #define        VN_HOLD(v)      vref(v)
 #define        VN_RELE(v)                                                    \
 do {                                                                 \
-       if ((v)->v_usecount == 0) {                                   \
+       if (vrefcnt(v) == 0) {                                        \
                printf("VN_RELE(%s,%d): %p unused\n", __FILE__, __LINE__, v); \
                vprint("VN_RELE", (v));                               \
                panic("VN_RELE");                                     \
diff -r a87f09935ec1 -r 281854394cec sys/coda/coda_namecache.c
--- a/sys/coda/coda_namecache.c Mon Apr 13 16:29:59 2020 +0000
+++ b/sys/coda/coda_namecache.c Mon Apr 13 19:23:17 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: coda_namecache.c,v 1.26 2014/10/18 08:33:27 snj Exp $  */
+/*     $NetBSD: coda_namecache.c,v 1.27 2020/04/13 19:23:17 ad Exp $   */
 
 /*
  *
@@ -77,7 +77,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: coda_namecache.c,v 1.26 2014/10/18 08:33:27 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: coda_namecache.c,v 1.27 2020/04/13 19:23:17 ad Exp $");
 
 #include <sys/param.h>
 #include <sys/errno.h>
@@ -348,12 +348,12 @@
        LIST_REMOVE(cncp, hash);
        memset(&cncp->hash, 0, sizeof(cncp->hash));
 
-       if ((dcstat == IS_DOWNCALL) && (CTOV(cncp->dcp)->v_usecount == 1)) {
+       if ((dcstat == IS_DOWNCALL) && (vrefcnt(CTOV(cncp->dcp)) == 1)) {
                cncp->dcp->c_flags |= C_PURGING;
        }
        vrele(CTOV(cncp->dcp));
 
-       if ((dcstat == IS_DOWNCALL) && (CTOV(cncp->cp)->v_usecount == 1)) {
+       if ((dcstat == IS_DOWNCALL) && (vrefcnt(CTOV(cncp->cp)) == 1)) {
                cncp->cp->c_flags |= C_PURGING;
        }
        vrele(CTOV(cncp->cp));
@@ -570,7 +570,7 @@
                        memset(&cncp->hash, 0, sizeof(cncp->hash));
 
                        if ((dcstat == IS_DOWNCALL)
-                           && (CTOV(cncp->dcp)->v_usecount == 1))
+                           && (vrefcnt(CTOV(cncp->dcp)) == 1))
                        {
                                cncp->dcp->c_flags |= C_PURGING;
                        }
@@ -584,7 +584,7 @@
                        }
 
                        if ((dcstat == IS_DOWNCALL)
-                           && (CTOV(cncp->cp)->v_usecount == 1))
+                           && (vrefcnt(CTOV(cncp->cp)) == 1))
                        {
                                cncp->cp->c_flags |= C_PURGING;
                        }
diff -r a87f09935ec1 -r 281854394cec sys/coda/coda_subr.c
--- a/sys/coda/coda_subr.c      Mon Apr 13 16:29:59 2020 +0000
+++ b/sys/coda/coda_subr.c      Mon Apr 13 19:23:17 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: coda_subr.c,v 1.31 2015/01/06 11:24:46 hannken Exp $   */
+/*     $NetBSD: coda_subr.c,v 1.32 2020/04/13 19:23:17 ad Exp $        */
 
 /*
  *
@@ -55,7 +55,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: coda_subr.c,v 1.31 2015/01/06 11:24:46 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: coda_subr.c,v 1.32 2020/04/13 19:23:17 ad Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -220,7 +220,7 @@
 
        if (cp != NULL)
                myprintf(("Live cnode fid %s count %d\n",
-                    coda_f2s(&cp->c_fid), CTOV(cp)->v_usecount));
+                    coda_f2s(&cp->c_fid), vrefcnt(CTOV(cp))));
 
        return false;
 }
@@ -370,8 +370,8 @@
                  error = coda_vmflush(cp);
              CODADEBUG(CODA_ZAPFILE, myprintf((
                    "zapfile: fid = %s, refcnt = %d, error = %d\n",
-                   coda_f2s(&cp->c_fid), CTOV(cp)->v_usecount - 1, error)););
-             if (CTOV(cp)->v_usecount == 1) {
+                   coda_f2s(&cp->c_fid), vrefcnt(CTOV(cp)) - 1, error)););
+             if (vrefcnt(CTOV(cp)) == 1) {
                  cp->c_flags |= C_PURGING;
              }
              mutex_exit(&cp->c_lock);
@@ -394,8 +394,8 @@
 
              CODADEBUG(CODA_ZAPDIR, myprintf((
                    "zapdir: fid = %s, refcnt = %d\n",
-                   coda_f2s(&cp->c_fid), CTOV(cp)->v_usecount - 1)););
-             if (CTOV(cp)->v_usecount == 1) {
+                   coda_f2s(&cp->c_fid), vrefcnt(CTOV(cp)) - 1)););
+             if (vrefcnt(CTOV(cp)) == 1) {
                  cp->c_flags |= C_PURGING;
              }
              mutex_exit(&cp->c_lock);
@@ -427,8 +427,8 @@
              }
              CODADEBUG(CODA_PURGEFID, myprintf((
                         "purgefid: fid = %s, refcnt = %d, error = %d\n",
-                        coda_f2s(&cp->c_fid), CTOV(cp)->v_usecount - 1, error)););
-             if (CTOV(cp)->v_usecount == 1) {
+                        coda_f2s(&cp->c_fid), vrefcnt(CTOV(cp)) - 1, error)););
+             if (vrefcnt(CTOV(cp)) == 1) {
                  cp->c_flags |= C_PURGING;
              }
              mutex_exit(&cp->c_lock);
diff -r a87f09935ec1 -r 281854394cec sys/coda/coda_vnops.c
--- a/sys/coda/coda_vnops.c     Mon Apr 13 16:29:59 2020 +0000
+++ b/sys/coda/coda_vnops.c     Mon Apr 13 19:23:17 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: coda_vnops.c,v 1.110 2020/02/24 20:53:11 ad Exp $      */
+/*     $NetBSD: coda_vnops.c,v 1.111 2020/04/13 19:23:17 ad Exp $      */
 
 /*
  *
@@ -46,7 +46,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: coda_vnops.c,v 1.110 2020/02/24 20:53:11 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: coda_vnops.c,v 1.111 2020/04/13 19:23:17 ad Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -329,7 +329,7 @@
        if (cp->c_ovp) {
 #ifdef CODA_VERBOSE
            printf("%s: destroying container %d, ufs vp %p of vp %p/cp %p\n",
-               __func__, vp->v_usecount, cp->c_ovp, vp, cp);
+               __func__, vrefcnt(vp), cp->c_ovp, vp, cp);
 #endif
 #ifdef hmm
            vgone(cp->c_ovp);
@@ -465,7 +465,7 @@
 
     /* Have UFS handle the call. */
     CODADEBUG(CODA_RDWR, myprintf(("%s: fid = %s, refcnt = %d\n", __func__,
-       coda_f2s(&cp->c_fid), CTOV(cp)->v_usecount)); )
+       coda_f2s(&cp->c_fid), vrefcnt(CTOV(cp)))); )
 
     if (rw == UIO_READ) {
        error = VOP_READ(cfvp, uiop, ioflag, cred);
@@ -850,8 +850,8 @@
 
 #ifdef CODA_VERBOSE
     /* Sanity checks that perhaps should be panic. */
-    if (vp->v_usecount > 1)
-       printf("%s: %p usecount %d\n", __func__, vp, vp->v_usecount);
+    if (vrefcnt(vp) > 1)
+       printf("%s: %p usecount %d\n", __func__, vp, vrefcnt(vp));
     if (cp->c_ovp != NULL)
        printf("%s: %p ovp != NULL\n", __func__, vp);
 #endif
@@ -1569,7 +1569,7 @@
 
        /* Have UFS handle the call. */
        CODADEBUG(CODA_READDIR, myprintf(("%s: fid = %s, refcnt = %d\n",
-           __func__, coda_f2s(&cp->c_fid), vp->v_usecount)); )
+           __func__, coda_f2s(&cp->c_fid), vrefcnt(vp))); )
        saved_type = vp->v_type;
        vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
        vp->v_type = VDIR; /* pretend the container file is a dir */
@@ -1661,7 +1661,7 @@
 #endif
     } else {
 #ifdef OLD_DIAGNOSTIC
-       if (vp->v_usecount != 0)
+       if (vrefcnt(vp) != 0)
            print("%s: pushing active %p\n", __func__, vp);
        if (VTOC(vp)->c_ovp) {
            panic("%s: c_ovp not void", __func__);
diff -r a87f09935ec1 -r 281854394cec sys/fs/msdosfs/msdosfs_denode.c
--- a/sys/fs/msdosfs/msdosfs_denode.c   Mon Apr 13 16:29:59 2020 +0000
+++ b/sys/fs/msdosfs/msdosfs_denode.c   Mon Apr 13 19:23:17 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: msdosfs_denode.c,v 1.57 2018/05/28 21:04:37 chs Exp $  */
+/*     $NetBSD: msdosfs_denode.c,v 1.58 2020/04/13 19:23:17 ad 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.57 2018/05/28 21:04:37 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: msdosfs_denode.c,v 1.58 2020/04/13 19:23:17 ad Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -611,8 +611,8 @@
         * so that it can be reused immediately.
         */
 #ifdef MSDOSFS_DEBUG
-       printf("msdosfs_inactive(): v_usecount %d, de_Name[0] %x\n",
-               vp->v_usecount, dep->de_Name[0]);
+       printf("msdosfs_inactive(): usecount %d, de_Name[0] %x\n",
+               vrefcnt(vp), dep->de_Name[0]);
 #endif
        *ap->a_recycle = (dep->de_Name[0] == SLOT_DELETED);
 
diff -r a87f09935ec1 -r 281854394cec sys/fs/msdosfs/msdosfs_vfsops.c
--- a/sys/fs/msdosfs/msdosfs_vfsops.c   Mon Apr 13 16:29:59 2020 +0000
+++ b/sys/fs/msdosfs/msdosfs_vfsops.c   Mon Apr 13 19:23:17 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: msdosfs_vfsops.c,v 1.134 2020/04/04 20:49:30 ad Exp $  */
+/*     $NetBSD: msdosfs_vfsops.c,v 1.135 2020/04/13 19:23:17 ad Exp $  */
 
 /*-
  * Copyright (C) 1994, 1995, 1997 Wolfgang Solfrank.
@@ -48,7 +48,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: msdosfs_vfsops.c,v 1.134 2020/04/04 20:49:30 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: msdosfs_vfsops.c,v 1.135 2020/04/13 19:23:17 ad Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_netbsd.h"
@@ -926,7 +926,7 @@
 
                printf("msdosfs_umount(): just before calling VOP_CLOSE()\n");
                printf("flag %08x, usecount %d, writecount %d, holdcnt %d\n",
-                   vp->v_vflag | vp->v_iflag | vp->v_uflag, vp->v_usecount,
+                   vp->v_vflag | vp->v_iflag | vp->v_uflag, vrefcnt(vp),
                    vp->v_writecount, vp->v_holdcnt);
                printf("mount %p, op %p\n",
                    vp->v_mount, vp->v_op);
diff -r a87f09935ec1 -r 281854394cec sys/fs/msdosfs/msdosfs_vnops.c
--- a/sys/fs/msdosfs/msdosfs_vnops.c    Mon Apr 13 16:29:59 2020 +0000
+++ b/sys/fs/msdosfs/msdosfs_vnops.c    Mon Apr 13 19:23:17 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: msdosfs_vnops.c,v 1.100 2020/02/23 15:46:40 ad Exp $   */
+/*     $NetBSD: msdosfs_vnops.c,v 1.101 2020/04/13 19:23:17 ad Exp $   */
 
 /*-
  * Copyright (C) 1994, 1995, 1997 Wolfgang Solfrank.
@@ -48,7 +48,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: msdosfs_vnops.c,v 1.100 2020/02/23 15:46:40 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: msdosfs_vnops.c,v 1.101 2020/04/13 19:23:17 ad Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -173,7 +173,7 @@
        struct denode *dep = VTODE(vp);
 
        mutex_enter(vp->v_interlock);
-       if (vp->v_usecount > 1)
+       if (vrefcnt(vp) > 1)
                DETIMES(dep, NULL, NULL, NULL, dep->de_pmp->pm_gmtoff);
        mutex_exit(vp->v_interlock);
        return (0);
@@ -731,8 +731,8 @@



Home | Main Index | Thread Index | Old Index