From fa778e5cb8c6dbbfa9bbd9e5cce8367f0097f718 Mon Sep 17 00:00:00 2001 From: Derrick Brashear Date: Tue, 21 Jun 2005 21:19:41 +0000 Subject: [PATCH] STABLE14-vnrehash-avoid-cachecheck-change-20050618 unlocking and locking lets us race and makes cacheCheck potentially go bad --- src/vol/vnode.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/vol/vnode.c b/src/vol/vnode.c index ac922b595..7f4876bbc 100644 --- a/src/vol/vnode.c +++ b/src/vol/vnode.c @@ -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(); -- 2.39.5