From eddcb03d0273cd929cf87f7d6beb4e8f0795ef2e Mon Sep 17 00:00:00 2001 From: Jeff Roberson Date: Mon, 28 Mar 2005 09:34:36 +0000 Subject: - We no longer have to bother with PDIRUNLOCK, lookup() handles it for us. Sponsored by: Isilon Systems, Inc. --- sys/fs/devfs/devfs_vnops.c | 23 ++--------------------- 1 file changed, 2 insertions(+), 21 deletions(-) (limited to 'sys/fs/devfs') diff --git a/sys/fs/devfs/devfs_vnops.c b/sys/fs/devfs/devfs_vnops.c index 0fa8e30aa1650..c28dfa0849103 100644 --- a/sys/fs/devfs/devfs_vnops.c +++ b/sys/fs/devfs/devfs_vnops.c @@ -587,9 +587,7 @@ devfs_lookupx(ap) nameiop = cnp->cn_nameiop; dmp = VFSTODEVFS(dvp->v_mount); dd = dvp->v_data; - *vpp = NULLVP; - cnp->cn_flags &= ~PDIRUNLOCK; if ((flags & ISLASTCN) && nameiop == RENAME) return (EOPNOTSUPP); @@ -616,15 +614,12 @@ devfs_lookupx(ap) if ((flags & ISLASTCN) && nameiop != LOOKUP) return (EINVAL); VOP_UNLOCK(dvp, 0, td); - cnp->cn_flags |= PDIRUNLOCK; de = TAILQ_FIRST(&dd->de_dlist); /* "." */ de = TAILQ_NEXT(de, de_list); /* ".." */ de = de->de_dir; error = devfs_allocv(de, dvp->v_mount, vpp, td); - if (error || ((flags & LOCKPARENT) && (flags & ISLASTCN))) { + if (error) vn_lock(dvp, LK_EXCLUSIVE | LK_RETRY, td); - cnp->cn_flags &= ~PDIRUNLOCK; - } return (error); } @@ -675,10 +670,6 @@ notfound: if ((nameiop == CREATE || nameiop == RENAME) && (flags & (LOCKPARENT | WANTPARENT)) && (flags & ISLASTCN)) { cnp->cn_flags |= SAVENAME; - if (!(flags & LOCKPARENT)) { - VOP_UNLOCK(dvp, 0, td); - cnp->cn_flags |= PDIRUNLOCK; - } return (EJUSTRETURN); } return (ENOENT); @@ -698,20 +689,10 @@ found: error = devfs_allocv(de, dvp->v_mount, vpp, td); if (error) return (error); - if (!(flags & LOCKPARENT)) { - VOP_UNLOCK(dvp, 0, td); - cnp->cn_flags |= PDIRUNLOCK; - } return (0); } error = devfs_allocv(de, dvp->v_mount, vpp, td); - if (error) - return (error); - if (!(flags & LOCKPARENT) || !(flags & ISLASTCN)) { - VOP_UNLOCK(dvp, 0, td); - cnp->cn_flags |= PDIRUNLOCK; - } - return (0); + return (error); } static int -- cgit v1.3