From: Chaskiel M Grundman Date: Mon, 14 May 2007 22:38:43 +0000 (+0000) Subject: STABLE14-getdcache-no-slowpass-enforcement-on-dynroot-20070514 X-Git-Tag: openafs-stable-1_4_5-pre1~121 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=f52d9908cf14254ca724cb110ae9e4c73df792db;p=packages%2Fo%2Fopenafs.git STABLE14-getdcache-no-slowpass-enforcement-on-dynroot-20070514 don't enforce slowpass check (and don't do unnecessary work) for dynroot vnodes (cherry picked from commit 1b1c0eda5a3db6fe92d46d5f3d8529bf7c6378c2) --- diff --git a/src/afs/afs_dcache.c b/src/afs/afs_dcache.c index ee2077732..df04a5a5f 100644 --- a/src/afs/afs_dcache.c +++ b/src/afs/afs_dcache.c @@ -2382,17 +2382,19 @@ afs_GetDCache(register struct vcache *avc, afs_size_t abyte, } ReleaseWriteLock(&tdc->lock); afs_PutDCache(tdc); - ObtainWriteLock(&afs_xcbhash, 454); - afs_DequeueCallback(avc); - avc->states &= ~(CStatd | CUnique); - ReleaseWriteLock(&afs_xcbhash); - if (avc->fid.Fid.Vnode & 1 || (vType(avc) == VDIR)) - osi_dnlc_purgedp(avc); - /* - * Locks held: - * avc->lock(W); assert(!setLocks || slowPass) - */ - osi_Assert(!setLocks || slowPass); + if (!afs_IsDynroot(avc)) { + ObtainWriteLock(&afs_xcbhash, 454); + afs_DequeueCallback(avc); + avc->states &= ~(CStatd | CUnique); + ReleaseWriteLock(&afs_xcbhash); + if (avc->fid.Fid.Vnode & 1 || (vType(avc) == VDIR)) + osi_dnlc_purgedp(avc); + /* + * Locks held: + * avc->lock(W); assert(!setLocks || slowPass) + */ + osi_Assert(!setLocks || slowPass); + } tdc = NULL; goto done; }