summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
authorjeff <jeff@FreeBSD.org>2005-03-29 10:08:23 +0000
committerjeff <jeff@FreeBSD.org>2005-03-29 10:08:23 +0000
commit767230ce780384c3e83434302e1a0afbde2d1391 (patch)
tree182c48a5673d0f04cf76b28785c218622021d9c8 /sys/kern
parent4a949bda2b74c7182c22451d4943553ca5005957 (diff)
downloadFreeBSD-src-767230ce780384c3e83434302e1a0afbde2d1391.zip
FreeBSD-src-767230ce780384c3e83434302e1a0afbde2d1391.tar.gz
- Get rid of the old LOOKUP_SHARED code. namei() now supplies the
proper lock flags via cn_lkflag. Sponsored by: Isilon Systems, Inc.
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/vfs_cache.c36
1 files changed, 6 insertions, 30 deletions
diff --git a/sys/kern/vfs_cache.c b/sys/kern/vfs_cache.c
index b12d16a..e65b9b8 100644
--- a/sys/kern/vfs_cache.c
+++ b/sys/kern/vfs_cache.c
@@ -657,18 +657,10 @@ vfs_cache_lookup(ap)
return (error);
error = cache_lookup(dvp, vpp, cnp);
-
- if (!error) {
- error = VOP_CACHEDLOOKUP(dvp, vpp, cnp);
-#ifdef LOOKUP_SHARED
- if (!error && (flags & ISLASTCN) && (flags & LOCKSHARED))
- VOP_LOCK(*vpp, LK_DOWNGRADE, td);
-#endif
- return (error);
- }
+ if (!error)
+ return (VOP_CACHEDLOOKUP(dvp, vpp, cnp));
if (error == ENOENT)
return (error);
-
vp = *vpp;
vpid = vp->v_id;
if (dvp == vp) { /* lookup on "." */
@@ -676,22 +668,11 @@ vfs_cache_lookup(ap)
error = 0;
} else if (flags & ISDOTDOT) {
VOP_UNLOCK(dvp, 0, td);
-#ifdef LOOKUP_SHARED
- if ((flags & ISLASTCN) && (flags & LOCKSHARED))
- error = vget(vp, LK_SHARED, td);
- else
-#endif
- error = vget(vp, LK_EXCLUSIVE, td);
+ error = vget(vp, cnp->cn_lkflags, td);
if (error)
vn_lock(dvp, LK_EXCLUSIVE | LK_RETRY, td);
- } else {
-#ifdef LOOKUP_SHARED
- if ((flags & ISLASTCN) && (flags & LOCKSHARED))
- error = vget(vp, LK_SHARED, td);
- else
-#endif
- error = vget(vp, LK_EXCLUSIVE, td);
- }
+ } else
+ error = vget(vp, cnp->cn_lkflags, td);
/*
* Check that the capability number did not change
* while we were waiting for the lock.
@@ -703,12 +684,7 @@ vfs_cache_lookup(ap)
if (flags & ISDOTDOT)
vn_lock(dvp, LK_EXCLUSIVE | LK_RETRY, td);
}
- error = VOP_CACHEDLOOKUP(dvp, vpp, cnp);
-#ifdef LOOKUP_SHARED
- if (!error && (flags & ISLASTCN) && (flags & LOCKSHARED))
- VOP_LOCK(*vpp, LK_DOWNGRADE, td);
-#endif
- return (error);
+ return (VOP_CACHEDLOOKUP(dvp, vpp, cnp));
}
OpenPOWER on IntegriCloud