Index: devfs_vnops.c =================================================================== RCS file: /cognet/ncvs/src/sys/fs/devfs/devfs_vnops.c,v retrieving revision 1.129 diff -u -p -r1.129 devfs_vnops.c --- devfs_vnops.c 30 Jan 2006 08:24:14 -0000 1.129 +++ devfs_vnops.c 27 Feb 2006 17:51:22 -0000 @@ -565,8 +565,11 @@ devfs_lookup(struct vop_lookup_args *ap) int j; struct devfs_mount *dmp; + VOP_UNLOCK(ap->a_dvp, 0, ap->a_cnp->cn_thread); /* XXX */ dmp = VFSTODEVFS(ap->a_dvp->v_mount); sx_xlock(&dmp->dm_lock); + vn_lock(ap->a_dvp, LK_EXCLUSIVE | LK_RETRY, + ap->a_cnp->cn_thread); /* XXX */ j = devfs_lookupx(ap); sx_xunlock(&dmp->dm_lock); return (j); @@ -816,7 +819,9 @@ devfs_readdir(struct vop_readdir_args *a } dmp = VFSTODEVFS(ap->a_vp->v_mount); + VOP_UNLOCK(ap->a_vp, 0, ap->a_uio->uio_td); /* XXX */ sx_xlock(&dmp->dm_lock); + vn_lock(ap->a_vp, LK_EXCLUSIVE | LK_RETRY, ap->a_uio->uio_td); /* XXX */ devfs_populate(dmp); error = 0; de = ap->a_vp->v_data;