unlocking and locking lets us race and makes cacheCheck potentially go bad
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);
VOL_UNLOCK;
ObtainWriteLock(&vnp->lock);
VOL_LOCK;
+ if (vnp->volumePtr->cacheCheck != vnp->cacheCheck) {
+ ReleaseWriteLock(&vnp->lock);
+ goto vnrehash;
+ }
}
#ifdef AFS_PTHREAD_ENV
vnp->writer = pthread_self();