diff options
author | jeff <jeff@FreeBSD.org> | 2005-03-29 10:08:23 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2005-03-29 10:08:23 +0000 |
commit | 767230ce780384c3e83434302e1a0afbde2d1391 (patch) | |
tree | 182c48a5673d0f04cf76b28785c218622021d9c8 /sys/kern | |
parent | 4a949bda2b74c7182c22451d4943553ca5005957 (diff) | |
download | FreeBSD-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.c | 36 |
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)); } |