rwID = uvldbEntry.volumeId[0];
roID = uvldbEntry.volumeId[1];
bkID = uvldbEntry.volumeId[2];
- for ( i=0, j=0; i<nServers && j<NMAXNSERVERS; i++ ) {
+ for ( i=0, j=0; code == 0 && i<nServers && j<NMAXNSERVERS; i++ ) {
if ( !(uvldbEntry.serverFlags[i] & VLSERVER_FLAG_UUID) ) {
serverFlags[j] = uvldbEntry.serverFlags[i];
serverNumber[j] = uvldbEntry.serverNumber[i].time_low;
continue;
code = VL_GetAddrsU(connp->callp, &attrs, &uuid, &unique, &nentries, &addrs);
-
- if (code == 0 && nentries == 0)
- code = VL_NOENT;
} while (cm_Analyze(connp, userp, reqp, NULL, NULL, cellp->vlServersp, NULL, code));
- code = cm_MapVLRPCError(code, reqp);
- if (code)
- return code;
+
+ if ( code ) {
+ code = cm_MapVLRPCError(code, reqp);
+ osi_Log2(afsd_logp, "CALL VL_GetAddrsU serverNumber %u FAILURE, code 0x%x",
+ i, code);
+ continue;
+ }
+ osi_Log1(afsd_logp, "CALL VL_GetAddrsU serverNumber %u SUCCESS", i);
addrp = addrs.bulkaddrs_val;
for (k = 0; k < nentries && j < NMAXNSERVERS; j++, k++) {
}
free(addrs.bulkaddrs_val); /* This is wrong */
+
+ if (nentries == 0)
+ code = CM_ERROR_INVAL;
}
}
nServers = j; /* update the server count */
volp->vol[BACKVOL].state = bkNewstate;
}
+ if (code == 0)
+ volp->flags &= ~CM_VOLUMEFLAG_RESET;
+
volp->flags &= ~CM_VOLUMEFLAG_UPDATING_VL;
osi_Wakeup((LONG_PTR) &volp->flags);
code = 0;
if ((volp->flags & CM_VOLUMEFLAG_RESET) && !(flags & CM_GETVOL_FLAG_NO_RESET)) {
code = cm_UpdateVolumeLocation(cellp, userp, reqp, volp);
- if (code == 0)
- volp->flags &= ~CM_VOLUMEFLAG_RESET;
}
lock_ReleaseWrite(&volp->rw);
if (code == 0) {
/* if we get here we are holding the mutex */
if ((volp->flags & CM_VOLUMEFLAG_RESET) && !(flags & CM_GETVOL_FLAG_NO_RESET)) {
code = cm_UpdateVolumeLocation(cellp, userp, reqp, volp);
- if (code == 0)
- volp->flags &= ~CM_VOLUMEFLAG_RESET;
}
lock_ReleaseWrite(&volp->rw);
* occur.
*/
code = cm_UpdateVolumeLocation(cellp, userp, reqp, volp);
- if (code == 0)
- volp->flags &= ~CM_VOLUMEFLAG_RESET;
#endif
lock_ReleaseWrite(&volp->rw);
if (volp->flags & CM_VOLUMEFLAG_RESET) {
cm_InitReq(&req);
code = cm_UpdateVolumeLocation(volp->cellp, cm_rootUserp, &req, volp);
- if (code == 0)
- volp->flags &= ~CM_VOLUMEFLAG_RESET;
}
if (volp->vol[RWVOL].ID != 0 && (!volID || volID == volp->vol[RWVOL].ID) &&