Make this compile again after the Lite2 merge.

Call vget/VOP_UNLOCK with the correct number of
arguments.  Call vn_lock where appropriate.
vfs_goneall is now replaced by VOP_REVOKE.

Submitted by:	bde
This commit is contained in:
mpp 1997-02-12 16:19:11 +00:00
parent be66779edf
commit 51b234aac4
3 changed files with 26 additions and 23 deletions

View File

@ -2,7 +2,7 @@
/*
* Written by Julian Elischer (julian@DIALix.oz.au)
*
* $Header: /home/ncvs/src/sys/miscfs/devfs/devfs_tree.c,v 1.32 1996/10/28 11:36:02 phk Exp $
* $Header: /home/ncvs/src/sys/miscfs/devfs/devfs_tree.c,v 1.33 1996/11/21 07:18:57 julian Exp $
*/
#include "opt_devfs.h"
@ -15,6 +15,7 @@
#include <sys/conf.h>
#include <sys/stat.h>
#include <sys/mount.h>
#include <sys/proc.h>
#include <sys/vnode.h>
#include <sys/malloc.h>
#include <sys/dir.h> /* defines dirent structure */
@ -892,6 +893,7 @@ devfs_dntovn(dn_p dnp, struct vnode **vn_pp)
{
struct vnode *vn_p, *nvp;
int error = 0;
struct proc *p = curproc; /* XXX */
vn_p = dnp->vn;
DBPRINT(("dntovn "));
@ -925,7 +927,7 @@ DBPRINT(("dntovn "));
}
if(vn_p->v_type != VNON)
{
vget(vn_p,1); /*XXX*/
vget(vn_p, LK_EXCLUSIVE, p);
*vn_pp = vn_p;
return(0);
}
@ -990,7 +992,7 @@ DBPRINT(("(New vnode)"));
{
error = EINVAL;
}
VOP_LOCK(vn_p);
vn_lock(vn_p, LK_EXCLUSIVE | LK_RETRY, p);
}
return error;
}

View File

@ -1,7 +1,7 @@
/*
* Written by Julian Elischer (julian@DIALix.oz.au)
*
* $Header: /home/ncvs/src/sys/miscfs/devfs/devfs_vfsops.c,v 1.14 1996/09/10 08:27:35 bde Exp $
* $Header: /home/ncvs/src/sys/miscfs/devfs/devfs_vfsops.c,v 1.15 1996/11/21 07:18:58 julian Exp $
*
*
*/
@ -25,13 +25,13 @@ static int devfs_statfs( struct mount *mp, struct statfs *sbp, struct proc *p);
static int mountdevfs( struct mount *mp, struct proc *p);
static int
devfs_init(void)
devfs_init(struct vfsconf *vfsp)
{
/*
* fill in the missing members on the "hidden" mount
*/
dev_root->dnp->dvm->mount->mnt_op = vfssw[MOUNT_DEVFS];
dev_root->dnp->dvm->mount->mnt_vfc = vfsconf[MOUNT_DEVFS];
dev_root->dnp->dvm->mount->mnt_op = vfsp->vfc_vfsops;
dev_root->dnp->dvm->mount->mnt_vfc = vfsp;
/* Mark a reference for the "invisible" blueprint mount */
dev_root->dnp->dvm->mount->mnt_vfc->vfc_refcount++;
@ -248,7 +248,7 @@ loop:
if ( vp->v_dirtyblkhd.lh_first == NULL)
continue;
if (vp->v_type == VBLK) {
if (vget(vp, 1))
if (vget(vp, LK_EXCLUSIVE, p))
goto loop;
error = VOP_FSYNC(vp, cred, waitfor, p);
printf("syncing device\n");

View File

@ -1,7 +1,7 @@
/*
* Written by Julian Elischer (julian@DIALix.oz.au)
*
* $Header: /home/ncvs/src/sys/miscfs/devfs/devfs_vnops.c,v 1.32 1996/10/28 11:36:06 phk Exp $
* $Header: /home/ncvs/src/sys/miscfs/devfs/devfs_vnops.c,v 1.33 1996/11/21 07:18:59 julian Exp $
*
* symlinks can wait 'til later.
*/
@ -144,14 +144,14 @@ DBPRINT(("cached "));
VREF(*result_vnode); /* not a full vget() */
error = 0;
} else if (flags & ISDOTDOT) {/* do a locking dance */
VOP_UNLOCK(dir_vnode);
VOP_UNLOCK(dir_vnode, 0, p);
error = vget(*result_vnode,1);
if (!error && lockparent && (flags & ISLASTCN))
VOP_LOCK(dir_vnode);
vn_lock(dir_vnode, LK_EXCLUSIVE | LK_RETRY, p);
} else {
error = vget(*result_vnode,1);
if (!lockparent || error || !(flags & ISLASTCN))
VOP_UNLOCK(dir_vnode);
VOP_UNLOCK(dir_vnode, 0, p);
}
/*
* Check that the capability number did not change
@ -164,11 +164,11 @@ DBPRINT(("cached "));
if (lockparent
&& (dir_vnode != *result_vnode)
&& (flags & ISLASTCN))
VOP_UNLOCK(dir_vnode);
VOP_UNLOCK(dir_vnode, 0, p);
} else { /* we have an error */
}
if( error = VOP_LOCK(dir_vnode))
if (error = vn_lock(dir_vnode, LK_EXCLUSIVE | LK_RETRY, p))
return error;
*result_vnode = NULL; /* safe not sorry */
DBPRINT(("errr, maybe not cached "));
@ -229,7 +229,7 @@ DBPRINT(("MKACCESS "));
*/
cnp->cn_flags |= SAVENAME; /*XXX why? */
if (!lockparent)
VOP_UNLOCK(dir_vnode);
VOP_UNLOCK(dir_vnode, 0, p);
return (EJUSTRETURN);
}
@ -272,12 +272,12 @@ DBPRINT(("MKACCESS "));
cnp->cn_cred->cr_uid != 0 &&
cnp->cn_cred->cr_uid != dir_node->uid &&
cnp->cn_cred->cr_uid != new_node->uid) {
VOP_UNLOCK((*result_vnode));
VOP_UNLOCK(*result_vnode, 0, p);
return (EPERM);
}
#endif
if (!lockparent)
VOP_UNLOCK(dir_vnode);
VOP_UNLOCK(dir_vnode, 0, p);
return (0);
}
@ -304,7 +304,7 @@ DBPRINT(("MKACCESS "));
/* hmm save the 'from' name (we need to delete it) */
cnp->cn_flags |= SAVENAME;
if (!lockparent)
VOP_UNLOCK(dir_vnode);
VOP_UNLOCK(dir_vnode, 0, p);
return (0);
}
@ -329,17 +329,17 @@ DBPRINT(("MKACCESS "));
* that point backwards in the directory structure.
*/
if (flags & ISDOTDOT) {
VOP_UNLOCK(dir_vnode); /* race to get the node */
VOP_UNLOCK(dir_vnode, 0, p); /* race to get the node */
devfs_dntovn(new_node,result_vnode);
if (lockparent && (flags & ISLASTCN))
VOP_LOCK(dir_vnode);
vn_lock(dir_vnode, LK_EXCLUSIVE | LK_RETRY, p);
} else if (dir_node == new_node) {
VREF(dir_vnode); /* we want ourself, ie "." */
*result_vnode = dir_vnode;
} else {
devfs_dntovn(new_node,result_vnode);
if (!lockparent || (flags & ISLASTCN))
VOP_UNLOCK(dir_vnode);
VOP_UNLOCK(dir_vnode, 0, p);
}
/*
@ -1097,6 +1097,7 @@ devfs_rename(struct vop_rename_args *ap)
struct vnode *fdvp = ap->a_fdvp;
struct componentname *tcnp = ap->a_tcnp;
struct componentname *fcnp = ap->a_fcnp;
struct proc *p = fcnp->cn_proc;
dn_p fp, fdp, tp, tdp;
devnm_p fnp,tnp;
int doingdirectory = 0;
@ -1287,7 +1288,7 @@ bad:
vput(tvp);
vput(tdvp);
out:
if (VOP_LOCK(fvp) == 0) {
if (vn_lock(fvp, LK_EXCLUSIVE | LK_RETRY, p) == 0) {
fp->links--; /* we added one earlier*/
vput(fvp);
} else
@ -1720,7 +1721,7 @@ devfs_dropvnode(dn_p dnp)
*/
if((vn_p) && ( dnp->vn_id == vn_p->v_id) && (dnp == (dn_p)vn_p->v_data))
{
vgoneall(vn_p);
VOP_REVOKE(vn_p, REVOKEALL);
}
dnp->vn = NULL; /* be pedantic about this */
}