Source-Changes-HG archive

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

[src/trunk]: src/sys/kern Rename vclean() to vcache_reclaim().



details:   https://anonhg.NetBSD.org/src/rev/45a3b4bfcca3
branches:  trunk
changeset: 347299:45a3b4bfcca3
user:      hannken <hannken%NetBSD.org@localhost>
date:      Sat Aug 20 12:31:37 2016 +0000

description:
Rename vclean() to vcache_reclaim().
No functional change.

diffstat:

 sys/kern/vfs_vnode.c |  207 +++++++++++++++++++++++++-------------------------
 1 files changed, 104 insertions(+), 103 deletions(-)

diffs (300 lines):

diff -r ee4501b59eff -r 45a3b4bfcca3 sys/kern/vfs_vnode.c
--- a/sys/kern/vfs_vnode.c      Sat Aug 20 11:34:49 2016 +0000
+++ b/sys/kern/vfs_vnode.c      Sat Aug 20 12:31:37 2016 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: vfs_vnode.c,v 1.53 2016/07/07 06:55:43 msaitoh Exp $   */
+/*     $NetBSD: vfs_vnode.c,v 1.54 2016/08/20 12:31:37 hannken Exp $   */
 
 /*-
  * Copyright (c) 1997-2011 The NetBSD Foundation, Inc.
@@ -89,8 +89,9 @@
  *     references, e.g. count of links, whether the file was removed).
  *
  *     Depending on indication, vnode can be put into a free list (cache),
- *     or cleaned via vclean(9), which calls VOP_RECLAIM(9) to disassociate
- *     underlying file system from the vnode, and finally destroyed.
+ *     or cleaned via vcache_reclaim, which calls VOP_RECLAIM(9) to
+ *     disassociate underlying file system from the vnode, and finally
+ *     destroyed.
  *
  * Vnode state
  *
@@ -113,10 +114,10 @@
  *                     vcache_new() and is ready to use.
  *     ACTIVE -> RECLAIMING
  *                     Vnode starts disassociation from underlying file
- *                     system in vclean().
+ *                     system in vcache_reclaim().
  *     RECLAIMING -> RECLAIMED
  *                     Vnode finished disassociation from underlying file
- *                     system in vclean().
+ *                     system in vcache_reclaim().
  *     ACTIVE -> BLOCKED
  *                     Either vcache_rekey*() is changing the vnode key or
  *                     vrelel() is about to call VOP_INACTIVE().
@@ -155,7 +156,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_vnode.c,v 1.53 2016/07/07 06:55:43 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_vnode.c,v 1.54 2016/08/20 12:31:37 hannken Exp $");
 
 #define _VFS_VNODE_PRIVATE
 
@@ -242,7 +243,7 @@
 static void            vcache_free(struct vcache_node *);
 static void            vcache_init(void);
 static void            vcache_reinit(void);
-static void            vclean(vnode_t *);
+static void            vcache_reclaim(vnode_t *);
 static void            vrelel(vnode_t *, int);
 static void            vdrain_thread(void *);
 static void            vrele_thread(void *);
@@ -527,7 +528,7 @@
         * before doing this.
         */
        vp->v_usecount = 1;
-       vclean(vp);
+       vcache_reclaim(vp);
        vrelel(vp, 0);
        fstrans_done(mp);
 
@@ -588,7 +589,7 @@
  *
  * => Must be called with v_interlock held.
  *
- * If state is VN_RECLAIMING, the vnode may be eliminated in vgone()/vclean().
+ * If state is VN_RECLAIMING, the vnode may be eliminated in vcache_reclaim().
  * In that case, we cannot grab the vnode, so the process is awakened when
  * the transition is completed, and an error returned to indicate that the
  * vnode is no longer usable.
@@ -783,7 +784,7 @@
                 */
                VOP_INACTIVE(vp, &recycle);
                if (recycle) {
-                       /* vclean() below will drop the lock. */
+                       /* vcache_reclaim() below will drop the lock. */
                        if (vn_lock(vp, LK_EXCLUSIVE) != 0)
                                recycle = false;
                }
@@ -812,7 +813,7 @@
                 */
                if (recycle) {
                        VSTATE_ASSERT(vp, VN_ACTIVE);
-                       vclean(vp);
+                       vcache_reclaim(vp);
                }
                KASSERT(vp->v_usecount > 0);
        }
@@ -990,96 +991,6 @@
 }
 
 /*
- * Disassociate the underlying file system from a vnode.
- *
- * Must be called with vnode locked and will return unlocked.
- * Must be called with the interlock held, and will return with it held.
- */
-static void
-vclean(vnode_t *vp)
-{
-       lwp_t *l = curlwp;
-       bool recycle, active;
-       int error;
-
-       KASSERT((vp->v_vflag & VV_LOCKSWORK) == 0 ||
-           VOP_ISLOCKED(vp) == LK_EXCLUSIVE);
-       KASSERT(mutex_owned(vp->v_interlock));
-       KASSERT(vp->v_usecount != 0);
-
-       active = (vp->v_usecount > 1);
-       /*
-        * Prevent the vnode from being recycled or brought into use
-        * while we clean it out.
-        */
-       VSTATE_CHANGE(vp, VN_ACTIVE, VN_RECLAIMING);
-       if (vp->v_iflag & VI_EXECMAP) {
-               atomic_add_int(&uvmexp.execpages, -vp->v_uobj.uo_npages);
-               atomic_add_int(&uvmexp.filepages, vp->v_uobj.uo_npages);
-       }
-       vp->v_iflag &= ~(VI_TEXT|VI_EXECMAP);
-       mutex_exit(vp->v_interlock);
-
-       /*
-        * Clean out any cached data associated with the vnode.
-        * If purging an active vnode, it must be closed and
-        * deactivated before being reclaimed. Note that the
-        * VOP_INACTIVE will unlock the vnode.
-        */
-       error = vinvalbuf(vp, V_SAVE, NOCRED, l, 0, 0);
-       if (error != 0) {
-               if (wapbl_vphaswapbl(vp))
-                       WAPBL_DISCARD(wapbl_vptomp(vp));
-               error = vinvalbuf(vp, 0, NOCRED, l, 0, 0);
-       }
-       KASSERTMSG((error == 0), "vinvalbuf failed: %d", error);
-       KASSERT((vp->v_iflag & VI_ONWORKLST) == 0);
-       if (active && (vp->v_type == VBLK || vp->v_type == VCHR)) {
-                spec_node_revoke(vp);
-       }
-       if (active) {
-               VOP_INACTIVE(vp, &recycle);
-       } else {
-               /*
-                * Any other processes trying to obtain this lock must first
-                * wait for VN_RECLAIMED, then call the new lock operation.
-                */
-               VOP_UNLOCK(vp);
-       }
-
-       /* Disassociate the underlying file system from the vnode. */
-       if (VOP_RECLAIM(vp)) {
-               vnpanic(vp, "%s: cannot reclaim", __func__);
-       }
-
-       KASSERT(vp->v_data == NULL);
-       KASSERT(vp->v_uobj.uo_npages == 0);
-
-       if (vp->v_type == VREG && vp->v_ractx != NULL) {
-               uvm_ra_freectx(vp->v_ractx);
-               vp->v_ractx = NULL;
-       }
-
-       /* Purge name cache. */
-       cache_purge(vp);
-
-       /* Move to dead mount. */
-       vp->v_vflag &= ~VV_ROOT;
-       atomic_inc_uint(&dead_rootmount->mnt_refcnt);
-       vfs_insmntque(vp, dead_rootmount);
-
-       /* Done with purge, notify sleepers of the grim news. */
-       mutex_enter(vp->v_interlock);
-       vp->v_op = dead_vnodeop_p;
-       vp->v_vflag |= VV_LOCKSWORK;
-       VSTATE_CHANGE(vp, VN_RECLAIMING, VN_RECLAIMED);
-       vp->v_tag = VT_NON;
-       KNOTE(&vp->v_klist, NOTE_REVOKE);
-
-       KASSERT((vp->v_iflag & VI_ONWORKLST) == 0);
-}
-
-/*
  * Recycle an unused vnode if caller holds the last reference.
  */
 bool
@@ -1096,7 +1007,7 @@
                VOP_UNLOCK(vp);
                return false;
        }
-       vclean(vp);
+       vcache_reclaim(vp);
        vrelel(vp, 0);
        return true;
 }
@@ -1149,7 +1060,7 @@
        }
 
        mutex_enter(vp->v_interlock);
-       vclean(vp);
+       vcache_reclaim(vp);
        vrelel(vp, 0);
 }
 
@@ -1575,6 +1486,96 @@
 }
 
 /*
+ * Disassociate the underlying file system from a vnode.
+ *
+ * Must be called with vnode locked and will return unlocked.
+ * Must be called with the interlock held, and will return with it held.
+ */
+static void
+vcache_reclaim(vnode_t *vp)
+{
+       lwp_t *l = curlwp;
+       bool recycle, active;
+       int error;
+
+       KASSERT((vp->v_vflag & VV_LOCKSWORK) == 0 ||
+           VOP_ISLOCKED(vp) == LK_EXCLUSIVE);
+       KASSERT(mutex_owned(vp->v_interlock));
+       KASSERT(vp->v_usecount != 0);
+
+       active = (vp->v_usecount > 1);
+       /*
+        * Prevent the vnode from being recycled or brought into use
+        * while we clean it out.
+        */
+       VSTATE_CHANGE(vp, VN_ACTIVE, VN_RECLAIMING);
+       if (vp->v_iflag & VI_EXECMAP) {
+               atomic_add_int(&uvmexp.execpages, -vp->v_uobj.uo_npages);
+               atomic_add_int(&uvmexp.filepages, vp->v_uobj.uo_npages);
+       }
+       vp->v_iflag &= ~(VI_TEXT|VI_EXECMAP);
+       mutex_exit(vp->v_interlock);
+
+       /*
+        * Clean out any cached data associated with the vnode.
+        * If purging an active vnode, it must be closed and
+        * deactivated before being reclaimed. Note that the
+        * VOP_INACTIVE will unlock the vnode.
+        */
+       error = vinvalbuf(vp, V_SAVE, NOCRED, l, 0, 0);
+       if (error != 0) {
+               if (wapbl_vphaswapbl(vp))
+                       WAPBL_DISCARD(wapbl_vptomp(vp));
+               error = vinvalbuf(vp, 0, NOCRED, l, 0, 0);
+       }
+       KASSERTMSG((error == 0), "vinvalbuf failed: %d", error);
+       KASSERT((vp->v_iflag & VI_ONWORKLST) == 0);
+       if (active && (vp->v_type == VBLK || vp->v_type == VCHR)) {
+                spec_node_revoke(vp);
+       }
+       if (active) {
+               VOP_INACTIVE(vp, &recycle);
+       } else {
+               /*
+                * Any other processes trying to obtain this lock must first
+                * wait for VN_RECLAIMED, then call the new lock operation.
+                */
+               VOP_UNLOCK(vp);
+       }
+
+       /* Disassociate the underlying file system from the vnode. */
+       if (VOP_RECLAIM(vp)) {
+               vnpanic(vp, "%s: cannot reclaim", __func__);
+       }
+
+       KASSERT(vp->v_data == NULL);
+       KASSERT(vp->v_uobj.uo_npages == 0);
+
+       if (vp->v_type == VREG && vp->v_ractx != NULL) {
+               uvm_ra_freectx(vp->v_ractx);
+               vp->v_ractx = NULL;
+       }
+
+       /* Purge name cache. */
+       cache_purge(vp);
+
+       /* Move to dead mount. */
+       vp->v_vflag &= ~VV_ROOT;
+       atomic_inc_uint(&dead_rootmount->mnt_refcnt);
+       vfs_insmntque(vp, dead_rootmount);
+
+       /* Done with purge, notify sleepers of the grim news. */
+       mutex_enter(vp->v_interlock);
+       vp->v_op = dead_vnodeop_p;
+       vp->v_vflag |= VV_LOCKSWORK;
+       VSTATE_CHANGE(vp, VN_RECLAIMING, VN_RECLAIMED);
+       vp->v_tag = VT_NON;
+       KNOTE(&vp->v_klist, NOTE_REVOKE);
+
+       KASSERT((vp->v_iflag & VI_ONWORKLST) == 0);
+}
+
+/*
  * Remove a vnode / fs node pair from the cache.
  */
 void



Home | Main Index | Thread Index | Old Index