osi_Log0(afsd_logp, "cm_Analyze passed CM_ERROR_ALLOFFLINE.");
thrd_Sleep(5000);
/* cm_ForceUpdateVolume marks all servers as non_busy */
- /* No it doesn't. It won't do anything if all of the
+ /* No it doesn't and it won't do anything if all of the
* the servers are marked as DOWN. So clear the DOWN
* flag and reset the busy state as well.
*/
}
lock_ReleaseWrite(&cm_serverLock);
- if (fidp != NULL)
+ if (fidp != NULL) /* Not a VLDB call */
cm_ForceUpdateVolume(fidp, userp, reqp);
+
retry = 1;
}
cm_mountRootGen++;
lock_ObtainMutex(&volp->mx);
volp->flags |= CM_VOLUMEFLAG_RESET;
+#ifdef COMMENT
+ /* Mark the volume to be updated but don't update it now.
+ * This function is called only from within cm_Analyze
+ * when cm_ConnByMServers has failed with all servers down
+ * The problem is that cm_UpdateVolume is going to call
+ * cm_ConnByMServers which may cause a recursive chain
+ * of calls each returning a retry on failure.
+ * Instead, set the flag so the next time the volume is
+ * accessed by Name or ID the UpdateVolume call will
+ * occur.
+ */
code = cm_UpdateVolume(cellp, userp, reqp, volp);
if (code == 0)
volp->flags &= ~CM_VOLUMEFLAG_RESET;
+#endif
lock_ReleaseMutex(&volp->mx);
cm_PutVolume(volp);