]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
DEVEL15-getdcache-no-slowpass-enforcement-on-dynroot-20070514
authorChaskiel M Grundman <cg2v@andrew.cmu.edu>
Mon, 14 May 2007 22:37:51 +0000 (22:37 +0000)
committerDerrick Brashear <shadow@dementia.org>
Mon, 14 May 2007 22:37:51 +0000 (22:37 +0000)
don't enforce slowpass restriction on dynroot vcaches (and don't do unneeded work)

====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================

oops, another change slipped in

(cherry picked from commit 1b1c0eda5a3db6fe92d46d5f3d8529bf7c6378c2)

src/afs/afs_dcache.c

index 480a700e0d0af7271d41e5780adf9ae748927896..a5cd5146be3e231cd374cf06feaeb84451b3b361 100644 (file)
@@ -2581,17 +2581,19 @@ afs_GetDCache(register struct vcache *avc, afs_size_t abyte,
            afs_DCMoveBucket(tdc, 0, 0);
            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->f.states &= ~(DRO|DBackup|DRW);
            afs_DCMoveBucket(tdc, 0, 0);
            tdc = NULL;