ObtainWriteLock(&afs_discon_lock, 998);
afs_in_sync = 1;
+ afs_MarkAllServersUp();
code = afs_ResyncDisconFiles(areq, *acred);
afs_in_sync = 0;
if (code && !force) {
printf("Files not synchronized properly, still in discon state. \n"
"Please retry or use \"force\".\n");
+ mode = 0;
} else {
if (force) {
afs_DisconDiscardAll(*acred);
memcpy(aout, &mode, sizeof(afs_int32));
*aoutSize = sizeof(afs_int32);
- return 0;
+ return code;
#else
return EINVAL;
#endif
extern int afs_HaveCallBacksFrom(struct server *aserver);
extern void shutdown_server(void);
extern void afs_RemoveAllConns(void);
-
+extern void afs_MarkAllServersUp(void);
/* afs_osidnlc.c */
extern int osi_dnlc_enter(struct vcache *adp, char *aname, struct vcache *avc,
}
}
-#ifdef AFS_DISCON_ENV
-
void afs_RemoveAllConns()
{
int i;
}
-#endif /* AFS_DISCON_ENV */
+void afs_MarkAllServersUp()
+{
+ int i;
+ struct server *ts;
+ struct srvAddr *sa;
+
+ ObtainWriteLock(&afs_xserver, 721);
+ ObtainWriteLock(&afs_xsrvAddr, 722);
+ for (i = 0; i< NSERVERS; i++) {
+ for (ts = afs_servers[i]; ts; ts = ts->next) {
+ for (sa = ts->addr; sa; sa = sa->next_sa) {
+ afs_MarkServerUpOrDown(sa, 0);
+ }
+ }
+ }
+ ReleaseWriteLock(&afs_xsrvAddr);
+ ReleaseWriteLock(&afs_xserver);
+}
void shutdown_server()
{