]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
STABLE14-vnrehash-avoid-cachecheck-change-20050618
authorDerrick Brashear <shadow@dementia.org>
Tue, 21 Jun 2005 21:19:41 +0000 (21:19 +0000)
committerDerrick Brashear <shadow@dementia.org>
Tue, 21 Jun 2005 21:19:41 +0000 (21:19 +0000)
unlocking and locking lets us race and makes cacheCheck potentially go bad

src/vol/vnode.c

index ac922b595abf9b81c990e4af045db8910e20b030..7f4876bbce8ec48f101ce0d7b27ffaf4ecea0c27 100644 (file)
@@ -321,6 +321,7 @@ VAllocVnode_r(Error * ec, Volume * vp, VnodeType type)
        return NULL;
     vnodeNumber = bitNumberToVnodeNumber(bitNumber, class);
 
+ vnrehash:
     VNLog(2, 1, vnodeNumber);
     /* Prepare to move it to the new hash chain */
     newHash = VNODE_HASH(vp, vnodeNumber);
@@ -349,6 +350,8 @@ VAllocVnode_r(Error * ec, Volume * vp, VnodeType type)
            VOL_UNLOCK;
            ObtainWriteLock(&vnp->lock);
            VOL_LOCK;
+           if (vnp->volumePtr->cacheCheck != vnp->cacheCheck)
+               goto vnrehash;
        }
 #ifdef AFS_PTHREAD_ENV
        vnp->writer = pthread_self();