OpenAFS CVS Commit: openafs/src/WINNT/afsd by jaltman

Fri, 23 Jul 2004 17:55:23 EDT

Update of /cvs/openafs/src/WINNT/afsd
In directory GRAND.CENTRAL.ORG:/home/jaltman/openafs/cvs-tree/src/WINNT/afsd

Modified Files:
Log Message:
DELTA allserversdown-20040723

When all servers associated with a volume get into the CM_SERVERFLAG_DOWN
state, the error CM_ERROR_ALLOFFLINE would be returned by cm_ConnByMServers.
cm_Analyze was then supposed to be pausing for 5 seconds and then reset the
volume information.  Unfortunately, although it called cm_ForceUpdateVolume,
cm_ForceUpdateVolume does not reset the CM_SERVERFLAG_DOWN state on the 
servers.  Therefore, when cm_ForceUpdateVolume calls cm_ConnByMServers it
would be given a CM_ERROR_ALLOFFLINE.  In other words, there was no way
out of the state.

cm_Analyze will now reset the CM_SERVERFLAG_DOWN as well as setting the
server status to not_busy after its 5 second wait.  This will allow 
cm_ForceUpdateVolume to actually reset the volume information, and 
refresh it if servers for the volume are newly accessible.

Also, added some missing locking calls in cm_Analyze.

In cm_ConnByMServers, change the error reporting to return CM_ERROR_ALLBUSY
only when all servers are busy or down; return CM_ERROR_ALLOFFLINE when all
servers are down; and only return CM_ERROR_NOSUCHVOLUME if the server list
for the volume is empty.  In all other cases return CM_ERROR_TIMEDOUT.

--- DELTA config follows ---
allserversdown-20040723 openafs/src/WINNT/afsd/cm_conn.c 1.16 1.17