]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
STABLE14-getdcache-no-slowpass-enforcement-on-dynroot-20070514
authorChaskiel M Grundman <cg2v@andrew.cmu.edu>
Mon, 14 May 2007 22:38:43 +0000 (22:38 +0000)
committerDerrick Brashear <shadow@dementia.org>
Mon, 14 May 2007 22:38:43 +0000 (22:38 +0000)
don't enforce slowpass check (and don't do unnecessary work) for dynroot vnodes

(cherry picked from commit 1b1c0eda5a3db6fe92d46d5f3d8529bf7c6378c2)

src/afs/afs_dcache.c

index ee20777322ece83d3085f11c4804abfa2223a760..df04a5a5f571f889f67936a724f647b803fe7c69 100644 (file)
@@ -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;
        }