static int
VLDB_Same(struct VenusFid *afid, struct vrequest *areq)
{
- struct vrequest treq;
+ struct vrequest *treq = NULL;
struct afs_conn *tconn;
int i, type = 0;
union {
AFS_STATCNT(CheckVLDB);
afs_FinalizeReq(areq);
- if ((i = afs_InitReq(&treq, afs_osi_credp)))
+ if ((i = afs_CreateReq(&treq, afs_osi_credp)))
return DUNNO;
v = afs_osi_Alloc(sizeof(*v));
osi_Assert(v != NULL);
VSleep(2); /* Better safe than sorry. */
tconn =
afs_ConnByMHosts(tcell->cellHosts, tcell->vlport, tcell->cellNum,
- &treq, SHARED_LOCK, 0, &rxconn);
+ treq, SHARED_LOCK, 0, &rxconn);
if (tconn) {
if ( tconn->parent->srvr->server->flags & SNO_LHOSTS) {
type = 0;
}
} else
i = -1;
- } while (afs_Analyze(tconn, rxconn, i, NULL, &treq, -1, /* no op code for this */
+ } while (afs_Analyze(tconn, rxconn, i, NULL, treq, -1, /* no op code for this */
SHARED_LOCK, tcell));
afs_PutCell(tcell, READ_LOCK);
ICL_TYPE_INT32, i);
if (i) {
+ afs_DestroyReq(treq);
afs_osi_Free(v, sizeof(*v));
return DUNNO;
}
ReleaseWriteLock(&tvp->lock);
if (type == 2) {
- LockAndInstallUVolumeEntry(tvp, &v->utve, afid->Cell, tcell, &treq);
+ LockAndInstallUVolumeEntry(tvp, &v->utve, afid->Cell, tcell, treq);
} else if (type == 1) {
LockAndInstallNVolumeEntry(tvp, &v->ntve, afid->Cell);
} else {
ReleaseWriteLock(&tvp->lock);
afs_PutVolume(tvp, WRITE_LOCK);
} else { /* can't find volume */
- tvp = afs_GetVolume(afid, &treq, WRITE_LOCK);
+ tvp = afs_GetVolume(afid, treq, WRITE_LOCK);
if (tvp) {
afs_PutVolume(tvp, WRITE_LOCK);
+ afs_DestroyReq(treq);
afs_osi_Free(v, sizeof(*v));
return DIFFERENT;
} else {
+ afs_DestroyReq(treq);
afs_osi_Free(v, sizeof(*v));
return DUNNO;
}
}
+ afs_DestroyReq(treq);
afs_osi_Free(v, sizeof(*v));
return (changed ? DIFFERENT : SAME);
} /*VLDB_Same */