flagIndex++;
ReleaseWriteLock(&tvcp->lock);
#ifdef AFS_DARWIN80_ENV
- if (!isdead)
- /* re-acquire the usecount that the other finalizevnode disposed of */
+ if (!isdead) {
+ /* re-acquire the io&usecount that the other finalizevnode disposed of */
+ vnode_get(AFSTOV(tvcp));
vnode_ref(AFSTOV(tvcp));
+ }
#endif
afs_PutVCache(tvcp);
continue;
if (!(tvcp->f.states & CBulkFetching) || (tvcp->f.m.Length != statSeqNo)) {
flagIndex++;
#ifdef AFS_DARWIN80_ENV
- if ((!(tvcp->f.states & CDeadVnode)&&!(tvcp->f.states & CVInit)))
- /* re-acquire the usecount that the other finalizevnode disposed of */
+ if ((!(tvcp->f.states & CDeadVnode)&&!(tvcp->f.states & CVInit))) {
+ /* re-acquire the io&usecount that the other finalizevnode disposed of */
+ vnode_get(AFSTOV(tvcp));
vnode_ref(AFSTOV(tvcp));
+ }
#endif
ReleaseWriteLock(&tvcp->lock);
ReleaseWriteLock(&afs_xcbhash);
afs_DequeueCallback(tvcp);
if ((tvcp->f.states & CForeign) || (vType(tvcp) == VDIR))
osi_dnlc_purgedp(tvcp); /* if it (could be) a directory */
- } else
- /* re-acquire the usecount that finalizevnode disposed of */
+ } else {
+ /* re-acquire the io&usecount that finalizevnode disposed of */
+ vnode_get(AFSTOV(tvcp));
vnode_ref(AFSTOV(tvcp));
+ }
}
#endif
}
if (tvcp != NULL) {
#ifdef AFS_DARWIN80_ENV
- if ((!(tvcp->f.states & CDeadVnode)&&!(tvcp->f.states & CVInit)))
- /* re-acquire the usecount that the other finalizevnode disposed of */
+ if ((!(tvcp->f.states & CDeadVnode)&&!(tvcp->f.states & CVInit))) {
+ /* re-acquire the io&usecount that the other finalizevnode disposed of */
+ vnode_get(AFSTOV(tvcp));
vnode_ref(AFSTOV(tvcp));
+ }
#endif
afs_PutVCache(tvcp);
}