From 9c7471bd5bcb84e5fd3a6374c86cd98c0958e418 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Thu, 14 Feb 2008 14:13:28 +0000 Subject: [PATCH] DEVEL15-windows-volstat-vl-unknown-20080214 LICENSE MIT Add volumes in the vl_unknown state to the list of objects to be checked as offline or retried when an allbusy error is received in cm_Analyze. (cherry picked from commit 093433b981cd1917215a4ee6196c5a0a55352d92) --- src/WINNT/afsd/cm_conn.c | 21 +++++++++------------ src/WINNT/afsd/cm_scache.c | 4 ++-- src/WINNT/afsd/cm_volume.c | 6 +++--- 3 files changed, 14 insertions(+), 17 deletions(-) diff --git a/src/WINNT/afsd/cm_conn.c b/src/WINNT/afsd/cm_conn.c index 05498dd95..0985ace4d 100644 --- a/src/WINNT/afsd/cm_conn.c +++ b/src/WINNT/afsd/cm_conn.c @@ -459,19 +459,17 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp, break; } - if (serverp && fidp) { - /* Log server being offline for this volume */ - sprintf(addr, "%d.%d.%d.%d", - ((serverp->addr.sin_addr.s_addr & 0xff)), - ((serverp->addr.sin_addr.s_addr & 0xff00)>> 8), - ((serverp->addr.sin_addr.s_addr & 0xff0000)>> 16), - ((serverp->addr.sin_addr.s_addr & 0xff000000)>> 24)); - - osi_Log2(afsd_logp, format, osi_LogSaveString(afsd_logp,addr), fidp->volume); + /* Log server being offline for this volume */ + sprintf(addr, "%d.%d.%d.%d", + ((serverp->addr.sin_addr.s_addr & 0xff)), + ((serverp->addr.sin_addr.s_addr & 0xff00)>> 8), + ((serverp->addr.sin_addr.s_addr & 0xff0000)>> 16), + ((serverp->addr.sin_addr.s_addr & 0xff000000)>> 24)); + + osi_Log2(afsd_logp, format, osi_LogSaveString(afsd_logp,addr), fidp->volume); #ifndef DJGPP - LogEvent(EVENTLOG_WARNING_TYPE, msgID, addr, fidp->volume); + LogEvent(EVENTLOG_WARNING_TYPE, msgID, addr, fidp->volume); #endif - } /* Mark server offline for this volume */ if (!serversp && fidp) { @@ -481,7 +479,6 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp, free_svr_list = 1; } } - lock_ObtainWrite(&cm_serverLock); for (tsrp = serversp; tsrp; tsrp=tsrp->next) { if (tsrp->server == serverp) { diff --git a/src/WINNT/afsd/cm_scache.c b/src/WINNT/afsd/cm_scache.c index 6bacbf25a..5c42fcbae 100644 --- a/src/WINNT/afsd/cm_scache.c +++ b/src/WINNT/afsd/cm_scache.c @@ -640,8 +640,8 @@ long cm_GetSCache(cm_fid_t *fidp, cm_scache_t **outScpp, cm_user_t *userp, long code; cm_volume_t *volp = NULL; cm_cell_t *cellp; - int special; // yj: boolean variable to test if file is on root.afs - int isRoot; + int special = 0; // yj: boolean variable to test if file is on root.afs + int isRoot = 0; extern cm_fid_t cm_rootFid; hash = CM_SCACHE_HASH(fidp); diff --git a/src/WINNT/afsd/cm_volume.c b/src/WINNT/afsd/cm_volume.c index f348d468c..a7f5682b4 100644 --- a/src/WINNT/afsd/cm_volume.c +++ b/src/WINNT/afsd/cm_volume.c @@ -1014,7 +1014,7 @@ cm_CheckOfflineVolume(cm_volume_t *volp, afs_uint32 volID) lock_ObtainMutex(&volp->mx); if (volp->rw.ID != 0 && (!volID || volID == volp->rw.ID) && - (volp->rw.state == vl_busy || volp->rw.state == vl_offline)) { + (volp->rw.state == vl_busy || volp->rw.state == vl_offline || volp->rw.state == vl_unknown)) { cm_InitReq(&req); for (serversp = volp->rw.serversp; serversp; serversp = serversp->next) { @@ -1049,7 +1049,7 @@ cm_CheckOfflineVolume(cm_volume_t *volp, afs_uint32 volID) } if (volp->ro.ID != 0 && (!volID || volID == volp->ro.ID) && - (volp->ro.state == vl_busy || volp->ro.state == vl_offline)) { + (volp->ro.state == vl_busy || volp->ro.state == vl_offline || volp->ro.state == vl_unknown)) { cm_InitReq(&req); for (serversp = volp->ro.serversp; serversp; serversp = serversp->next) { @@ -1084,7 +1084,7 @@ cm_CheckOfflineVolume(cm_volume_t *volp, afs_uint32 volID) } if (volp->bk.ID != 0 && (!volID || volID == volp->bk.ID) && - (volp->bk.state == vl_busy || volp->bk.state == vl_offline)) { + (volp->bk.state == vl_busy || volp->bk.state == vl_offline || volp->bk.state == vl_unknown)) { cm_InitReq(&req); for (serversp = volp->bk.serversp; serversp; serversp = serversp->next) { -- 2.39.5