Hi,
After reading VOP_LOOKUP.9 based on recent commit, a try to remove some dead
code in VFS.
https://marc.info/?l=openbsd-cvs&m=153886730207657&w=2
VFSLCKDEBUG is not defined anywhere. It is misleading to read in
sys/kern/vfs_vops.c that ASSERT_VP_ISLOCKED(dvp) is being checked, when in
fact, it is just dead code.
Please review and comment!
Thanks
diff --git sys/kern/vfs_subr.c sys/kern/vfs_subr.c
index b89037e499a..2d09c6446c8 100644
--- sys/kern/vfs_subr.c
+++ sys/kern/vfs_subr.c
@@ -1049,9 +1049,6 @@ vclean(struct vnode *vp, int flags, struct proc *p)
VN_KNOTE(vp, NOTE_REVOKE);
vp->v_tag = VT_NON;
vp->v_flag &= ~VXLOCK;
-#ifdef VFSLCKDEBUG
- vp->v_flag &= ~VLOCKSWORK;
-#endif
if (vp->v_flag & VXWANT) {
vp->v_flag &= ~VXWANT;
wakeup(vp);
@@ -1886,11 +1883,6 @@ vinvalbuf(struct vnode *vp, int flags, struct ucred
*cred, struct proc *p,
struct buf *nbp, *blist;
int s, error;
-#ifdef VFSLCKDEBUG
- if ((vp->v_flag & VLOCKSWORK) && !VOP_ISLOCKED(vp))
- panic("%s: vp isn't locked, vp %p", __func__, vp);
-#endif
-
if (flags & V_SAVE) {
s = splbio();
vwaitforio(vp, 0, "vinvalbuf", 0);
diff --git sys/kern/vfs_vops.c sys/kern/vfs_vops.c
index 32fcb4a24cc..c1996e1e4a8 100644
--- sys/kern/vfs_vops.c
+++ sys/kern/vfs_vops.c
@@ -47,19 +47,6 @@
#include <sys/unistd.h>
#include <sys/systm.h>
-#ifdef VFSLCKDEBUG
-#include <sys/systm.h> /* for panic() */
-
-#define ASSERT_VP_ISLOCKED(vp) do { \
- if (((vp)->v_flag & VLOCKSWORK) && !VOP_ISLOCKED(vp)) { \
- VOP_PRINT(vp); \
- panic("vp not locked"); \
- } \
-} while (0)
-#else
-#define ASSERT_VP_ISLOCKED(vp) /* nothing */
-#endif
-
int
VOP_ISLOCKED(struct vnode *vp)
{
@@ -102,8 +89,6 @@ VOP_CREATE(struct vnode *dvp, struct vnode **vpp,
a.a_cnp = cnp;
a.a_vap = vap;
- ASSERT_VP_ISLOCKED(dvp);
-
if (dvp->v_op->vop_create == NULL)
return (EOPNOTSUPP);
@@ -124,8 +109,6 @@ VOP_MKNOD(struct vnode *dvp, struct vnode **vpp,
a.a_cnp = cnp;
a.a_vap = vap;
- ASSERT_VP_ISLOCKED(dvp);
-
if (dvp->v_op->vop_mknod == NULL)
return (EOPNOTSUPP);
@@ -164,8 +147,6 @@ VOP_CLOSE(struct vnode *vp, int fflag, struct ucred *cred,
struct proc *p)
a.a_cred = cred;
a.a_p = p;
- ASSERT_VP_ISLOCKED(vp);
-
if (vp->v_op->vop_close == NULL)
return (EOPNOTSUPP);
@@ -184,8 +165,6 @@ VOP_ACCESS(struct vnode *vp, int mode, struct ucred *cred,
struct proc *p)
a.a_cred = cred;
a.a_p = p;
- ASSERT_VP_ISLOCKED(vp);
-
if (vp->v_op->vop_access == NULL)
return (EOPNOTSUPP);
@@ -219,8 +198,6 @@ VOP_SETATTR(struct vnode *vp, struct vattr *vap, struct
ucred *cred,
a.a_cred = cred;
a.a_p = p;
- ASSERT_VP_ISLOCKED(vp);
-
if (vp->v_op->vop_setattr == NULL)
return (EOPNOTSUPP);
@@ -239,8 +216,6 @@ VOP_READ(struct vnode *vp, struct uio *uio, int ioflag,
struct ucred *cred)
a.a_ioflag = ioflag;
a.a_cred = cred;
- ASSERT_VP_ISLOCKED(vp);
-
if (vp->v_op->vop_read == NULL)
return (EOPNOTSUPP);
@@ -258,8 +233,6 @@ VOP_WRITE(struct vnode *vp, struct uio *uio, int ioflag,
a.a_ioflag = ioflag;
a.a_cred = cred;
- ASSERT_VP_ISLOCKED(vp);
-
if (vp->v_op->vop_write == NULL)
return (EOPNOTSUPP);
@@ -343,8 +316,6 @@ VOP_FSYNC(struct vnode *vp, struct ucred *cred, int waitfor,
a.a_waitfor = waitfor;
a.a_p = p;
- ASSERT_VP_ISLOCKED(vp);
-
if (vp->v_op->vop_fsync == NULL)
return (EOPNOTSUPP);
@@ -363,9 +334,6 @@ VOP_REMOVE(struct vnode *dvp, struct vnode *vp, struct
componentname *cnp)
a.a_vp = vp;
a.a_cnp = cnp;
- ASSERT_VP_ISLOCKED(dvp);
- ASSERT_VP_ISLOCKED(vp);
-
if (dvp->v_op->vop_remove == NULL)
return (EOPNOTSUPP);
@@ -384,8 +352,6 @@ VOP_LINK(struct vnode *dvp, struct vnode *vp, struct
componentname *cnp)
a.a_vp = vp;
a.a_cnp = cnp;
- ASSERT_VP_ISLOCKED(dvp);
-
if (dvp->v_op->vop_link == NULL)
return (EOPNOTSUPP);
@@ -411,8 +377,6 @@ VOP_RENAME(struct vnode *fdvp, struct vnode *fvp,
a.a_tvp = tvp;
a.a_tcnp = tcnp;
- ASSERT_VP_ISLOCKED(tdvp);
-
if (fdvp->v_op->vop_rename == NULL)
return (EOPNOTSUPP);
@@ -435,8 +399,6 @@ VOP_MKDIR(struct vnode *dvp, struct vnode **vpp,
a.a_cnp = cnp;
a.a_vap = vap;
- ASSERT_VP_ISLOCKED(dvp);
-
if (dvp->v_op->vop_mkdir == NULL)
return (EOPNOTSUPP);
@@ -455,9 +417,6 @@ VOP_RMDIR(struct vnode *dvp, struct vnode *vp, struct
componentname *cnp)
a.a_vp = vp;
a.a_cnp = cnp;
- ASSERT_VP_ISLOCKED(dvp);
- ASSERT_VP_ISLOCKED(vp);
-
KASSERT(dvp != vp);
if (dvp->v_op->vop_rmdir == NULL)
@@ -483,8 +442,6 @@ VOP_SYMLINK(struct vnode *dvp, struct vnode **vpp,
a.a_vap = vap;
a.a_target = target;
- ASSERT_VP_ISLOCKED(dvp);
-
if (dvp->v_op->vop_symlink == NULL)
return (EOPNOTSUPP);
@@ -505,8 +462,6 @@ VOP_READDIR(struct vnode *vp, struct uio *uio, struct ucred
*cred,
a.a_cred = cred;
a.a_eofflag = eofflag;
- ASSERT_VP_ISLOCKED(vp);
-
if (vp->v_op->vop_readdir == NULL)
return (EOPNOTSUPP);
@@ -525,8 +480,6 @@ VOP_READLINK(struct vnode *vp, struct uio *uio, struct
ucred *cred)
a.a_uio = uio;
a.a_cred = cred;
- ASSERT_VP_ISLOCKED(vp);
-
if (vp->v_op->vop_readlink == NULL)
return (EOPNOTSUPP);
@@ -560,8 +513,6 @@ VOP_INACTIVE(struct vnode *vp, struct proc *p)
a.a_vp = vp;
a.a_p = p;
- ASSERT_VP_ISLOCKED(vp);
-
if (vp->v_op->vop_inactive == NULL)
return (EOPNOTSUPP);
@@ -625,8 +576,6 @@ VOP_BMAP(struct vnode *vp, daddr_t bn, struct vnode **vpp,
a.a_bnp = bnp;
a.a_runp = runp;
- ASSERT_VP_ISLOCKED(vp);
-
if (vp->v_op->vop_bmap == NULL)
return (EOPNOTSUPP);
@@ -672,8 +621,6 @@ VOP_PATHCONF(struct vnode *vp, int name, register_t *retval)
a.a_name = name;
a.a_retval = retval;
- ASSERT_VP_ISLOCKED(vp);
-
if (vp->v_op->vop_pathconf == NULL)
return (EOPNOTSUPP);
diff --git sys/nfs/nfs_node.c sys/nfs/nfs_node.c
index 155426e3666..fd33a71065b 100644
--- sys/nfs/nfs_node.c
+++ sys/nfs/nfs_node.c
@@ -133,9 +133,6 @@ loop:
}
vp = nvp;
-#ifdef VFSLCKDEBUG
- vp->v_flag |= VLOCKSWORK;
-#endif
rrw_init_flags(&np->n_lock, "nfsnode", RWL_DUPOK | RWL_IS_VNODE);
vp->v_data = np;
/* we now have an nfsnode on this vnode */
diff --git sys/sys/vnode.h sys/sys/vnode.h
index 44ed35962f8..500b6a5dafe 100644
--- sys/sys/vnode.h
+++ sys/sys/vnode.h
@@ -140,7 +140,6 @@ struct vnode {
#define VCLONED 0x0400 /* vnode was cloned */
#define VALIASED 0x0800 /* vnode has an alias */
#define VLARVAL 0x1000 /* vnode data not yet set up by higher
level */
-#define VLOCKSWORK 0x4000 /* FS supports locking discipline */
#define VCLONE 0x8000 /* vnode is a clone */
/*
diff --git sys/ufs/ext2fs/ext2fs_subr.c sys/ufs/ext2fs/ext2fs_subr.c
index d859d216b40..dc20e6494c1 100644
--- sys/ufs/ext2fs/ext2fs_subr.c
+++ sys/ufs/ext2fs/ext2fs_subr.c
@@ -170,9 +170,6 @@ ext2fs_vinit(struct mount *mp, struct vnode **vpp)
nvp->v_data = vp->v_data;
vp->v_data = NULL;
vp->v_op = &spec_vops;
-#ifdef VFSLCKDEBUG
- vp->v_flag &= ~VLOCKSWORK;
-#endif
vrele(vp);
vgone(vp);
/* Reinitialize aliased vnode. */
diff --git sys/ufs/ffs/ffs_subr.c sys/ufs/ffs/ffs_subr.c
index 2aedef06acf..abd8a784c08 100644
--- sys/ufs/ffs/ffs_subr.c
+++ sys/ufs/ffs/ffs_subr.c
@@ -272,9 +272,6 @@ ffs_vinit(struct mount *mntp, struct vnode **vpp)
nvp->v_data = vp->v_data;
vp->v_data = NULL;
vp->v_op = &spec_vops;
-#ifdef VFSLCKDEBUG
- vp->v_flag &= ~VLOCKSWORK;
-#endif
vrele(vp);
vgone(vp);
/*
diff --git sys/ufs/ffs/ffs_vfsops.c sys/ufs/ffs/ffs_vfsops.c
index 41532f35faf..dc609242386 100644
--- sys/ufs/ffs/ffs_vfsops.c
+++ sys/ufs/ffs/ffs_vfsops.c
@@ -1329,9 +1329,6 @@ retry:
return (error);
}
-#ifdef VFSLCKDEBUG
- vp->v_flag |= VLOCKSWORK;
-#endif
ip = pool_get(&ffs_ino_pool, PR_WAITOK|PR_ZERO);
rrw_init_flags(&ip->i_lock, "inode", RWL_DUPOK | RWL_IS_VNODE);
ip->i_ump = ump;
diff --git sys/uvm/uvm_vnode.c sys/uvm/uvm_vnode.c
index 3803d31db7b..ade21ebdac6 100644
--- sys/uvm/uvm_vnode.c
+++ sys/uvm/uvm_vnode.c
@@ -1306,15 +1306,6 @@ uvm_vnp_uncache(struct vnode *vp)
vref(vp); /* seems ok, even with VOP_LOCK */
uvn->u_obj.uo_refs++; /* value is now 1 */
-#ifdef VFSLCKDEBUG
- /*
- * carry over sanity check from old vnode pager: the vnode should
- * be VOP_LOCK'd, and we confirm it here.
- */
- if ((vp->v_flag & VLOCKSWORK) && !VOP_ISLOCKED(vp))
- panic("uvm_vnp_uncache: vnode not locked!");
-#endif
-
/*
* now drop our reference to the vnode. if we have the sole
* reference to the vnode then this will cause it to die [as we