Module Name: src
Committed By: hannken
Date: Sun May 7 08:22:40 UTC 2017
Modified Files:
src/sys/fs/union: union_vnops.c
Log Message:
Move v_writecount adjustment from revoke to reclaim.
To generate a diff of this commit:
cvs rdiff -u -r1.67 -r1.68 src/sys/fs/union/union_vnops.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/fs/union/union_vnops.c
diff -u src/sys/fs/union/union_vnops.c:1.67 src/sys/fs/union/union_vnops.c:1.68
--- src/sys/fs/union/union_vnops.c:1.67 Wed Apr 26 03:02:48 2017
+++ src/sys/fs/union/union_vnops.c Sun May 7 08:22:40 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: union_vnops.c,v 1.67 2017/04/26 03:02:48 riastradh Exp $ */
+/* $NetBSD: union_vnops.c,v 1.68 2017/05/07 08:22:40 hannken Exp $ */
/*
* Copyright (c) 1992, 1993, 1994, 1995
@@ -72,7 +72,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: union_vnops.c,v 1.67 2017/04/26 03:02:48 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: union_vnops.c,v 1.68 2017/05/07 08:22:40 hannken Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -1064,13 +1064,8 @@ union_revoke(void *v)
} */ *ap = v;
struct vnode *vp = ap->a_vp;
- if (UPPERVP(vp)) {
- mutex_enter(UPPERVP(vp)->v_interlock);
- KASSERT(vp->v_interlock == UPPERVP(vp)->v_interlock);
- UPPERVP(vp)->v_writecount -= vp->v_writecount;
- mutex_exit(UPPERVP(vp)->v_interlock);
+ if (UPPERVP(vp))
VOP_REVOKE(UPPERVP(vp), ap->a_flags);
- }
if (LOWERVP(vp))
VOP_REVOKE(LOWERVP(vp), ap->a_flags);
vgone(vp); /* XXXAD?? */
@@ -1585,8 +1580,17 @@ union_reclaim(void *v)
struct vop_reclaim_args /* {
struct vnode *a_vp;
} */ *ap = v;
+ struct vnode *vp = ap->a_vp;
+ struct vnode *uvp = UPPERVP(vp);
+
+ if (uvp != NULL) {
+ mutex_enter(uvp->v_interlock);
+ KASSERT(vp->v_interlock == uvp->v_interlock);
+ uvp->v_writecount -= vp->v_writecount;
+ mutex_exit(uvp->v_interlock);
+ }
- union_freevp(ap->a_vp);
+ union_freevp(vp);
return (0);
}