Index: openafs/src/WINNT/afsd/cm_buf.c diff -c openafs/src/WINNT/afsd/cm_buf.c:1.13.2.9 openafs/src/WINNT/afsd/cm_buf.c:1.13.2.10 *** openafs/src/WINNT/afsd/cm_buf.c:1.13.2.9 Sun May 29 23:52:52 2005 --- openafs/src/WINNT/afsd/cm_buf.c Sun Jun 5 02:45:31 2005 *************** *** 309,314 **** --- 309,317 ---- for (i=0; imx, "Buffer mutex"); bp->userp = NULL; + bp->waitCount = 0; + bp->waitRequests = 0; + bp->flags &= ~CM_BUF_WAITING; bp++; } } *************** *** 426,433 **** /* wait for reading or writing to clear; called with write-locked * buffer, and returns with locked buffer. */ ! void buf_WaitIO(cm_buf_t *bp) { osi_assert(bp->magic == CM_BUF_MAGIC); while (1) { --- 429,438 ---- /* wait for reading or writing to clear; called with write-locked * buffer, and returns with locked buffer. */ ! void buf_WaitIO(cm_scache_t * scp, cm_buf_t *bp) { + if (scp) + osi_assert(scp->magic == CM_SCACHE_MAGIC); osi_assert(bp->magic == CM_BUF_MAGIC); while (1) { *************** *** 439,458 **** * the I/O already. Wait for that guy to figure out what happened, * and then check again. */ ! if ( bp->flags & CM_BUF_WAITING ) osi_Log1(buf_logp, "buf_WaitIO CM_BUF_WAITING already set for 0x%x", bp); ! ! bp->flags |= CM_BUF_WAITING; osi_SleepM((long) bp, &bp->mx); lock_ObtainMutex(&bp->mx); osi_Log1(buf_logp, "buf_WaitIO conflict wait done for 0x%x", bp); } /* if we get here, the IO is done, but we may have to wakeup people waiting for * the I/O to complete. Do so. */ if (bp->flags & CM_BUF_WAITING) { ! bp->flags &= ~CM_BUF_WAITING; osi_Wakeup((long) bp); } osi_Log1(buf_logp, "WaitIO finished wait for bp 0x%x", (long) bp); --- 444,483 ---- * the I/O already. Wait for that guy to figure out what happened, * and then check again. */ ! if ( bp->flags & CM_BUF_WAITING ) { ! bp->waitCount++; ! bp->waitRequests++; osi_Log1(buf_logp, "buf_WaitIO CM_BUF_WAITING already set for 0x%x", bp); ! } else { ! osi_Log1(buf_logp, "buf_WaitIO CM_BUF_WAITING set for 0x%x", bp); ! bp->flags |= CM_BUF_WAITING; ! bp->waitCount = bp->waitRequests = 1; ! } osi_SleepM((long) bp, &bp->mx); lock_ObtainMutex(&bp->mx); osi_Log1(buf_logp, "buf_WaitIO conflict wait done for 0x%x", bp); + bp->waitCount--; + if (bp->waitCount == 0) { + osi_Log1(afsd_logp, "buf_WaitIO CM_BUF_WAITING reset for 0x%x", bp); + bp->flags &= ~CM_BUF_WAITING; + bp->waitRequests = 0; + } + + if ( scp ) { + lock_ObtainMutex(&scp->mx); + if (scp->flags & CM_SCACHEFLAG_WAITING) { + osi_Log1(buf_logp, "buf_WaitIO waking scp 0x%x", scp); + osi_Wakeup(&scp->flags); + lock_ReleaseMutex(&scp->mx); + } + } } /* if we get here, the IO is done, but we may have to wakeup people waiting for * the I/O to complete. Do so. */ if (bp->flags & CM_BUF_WAITING) { ! osi_Log1(buf_logp, "buf_WaitIO Waking bp 0x%x", bp); osi_Wakeup((long) bp); } osi_Log1(buf_logp, "WaitIO finished wait for bp 0x%x", (long) bp); *************** *** 550,556 **** */ if (bp->flags & CM_BUF_WAITING) { /* turn off flags and wakeup users */ ! bp->flags &= ~CM_BUF_WAITING; osi_Wakeup((long) bp); } } --- 575,581 ---- */ if (bp->flags & CM_BUF_WAITING) { /* turn off flags and wakeup users */ ! osi_Log1(buf_logp, "buf_WaitIO Waking bp 0x%x", bp); osi_Wakeup((long) bp); } } *************** *** 833,839 **** /* wait for reads */ if (bp->flags & CM_BUF_READING) ! buf_WaitIO(bp); /* once it has been read once, we can unlock it and return it, still * with its refcount held. --- 858,864 ---- /* wait for reads */ if (bp->flags & CM_BUF_READING) ! buf_WaitIO(scp, bp); /* once it has been read once, we can unlock it and return it, still * with its refcount held. *************** *** 933,939 **** bp->flags |= CM_BUF_ERROR; bp->flags &= ~CM_BUF_READING; if (bp->flags & CM_BUF_WAITING) { ! bp->flags &= ~CM_BUF_WAITING; osi_Wakeup((long) bp); } lock_ReleaseMutex(&bp->mx); --- 958,964 ---- bp->flags |= CM_BUF_ERROR; bp->flags &= ~CM_BUF_READING; if (bp->flags & CM_BUF_WAITING) { ! osi_Log1(buf_logp, "buf_Get Waking bp 0x%x", bp); osi_Wakeup((long) bp); } lock_ReleaseMutex(&bp->mx); *************** *** 956,962 **** } bp->flags &= ~CM_BUF_READING; if (bp->flags & CM_BUF_WAITING) { ! bp->flags &= ~CM_BUF_WAITING; osi_Wakeup((long) bp); } } --- 981,987 ---- } bp->flags &= ~CM_BUF_READING; if (bp->flags & CM_BUF_WAITING) { ! osi_Log1(buf_logp, "buf_Get Waking bp 0x%x", bp); osi_Wakeup((long) bp); } } *************** *** 967,973 **** * else started. We don't care if we return a buffer being cleaned. */ if (bp->flags & CM_BUF_READING) ! buf_WaitIO(bp); /* once it has been read once, we can unlock it and return it, still * with its refcount held. --- 992,998 ---- * else started. We don't care if we return a buffer being cleaned. */ if (bp->flags & CM_BUF_READING) ! buf_WaitIO(scp, bp); /* once it has been read once, we can unlock it and return it, still * with its refcount held. *************** *** 1030,1042 **** } /* wait for a buffer's cleaning to finish */ ! void buf_CleanWait(cm_buf_t *bp) { osi_assert(bp->magic == CM_BUF_MAGIC); lock_ObtainMutex(&bp->mx); if (bp->flags & CM_BUF_WRITING) { ! buf_WaitIO(bp); } lock_ReleaseMutex(&bp->mx); } --- 1055,1067 ---- } /* wait for a buffer's cleaning to finish */ ! void buf_CleanWait(cm_scache_t * scp, cm_buf_t *bp) { osi_assert(bp->magic == CM_BUF_MAGIC); lock_ObtainMutex(&bp->mx); if (bp->flags & CM_BUF_WRITING) { ! buf_WaitIO(scp, bp); } lock_ReleaseMutex(&bp->mx); } *************** *** 1096,1102 **** /* now no locks are held; clean buffer and go on */ cm_InitReq(&req); buf_CleanAsync(bp, &req); ! buf_CleanWait(bp); /* relock and release buffer */ lock_ObtainWrite(&buf_globalLock); --- 1121,1127 ---- /* now no locks are held; clean buffer and go on */ cm_InitReq(&req); buf_CleanAsync(bp, &req); ! buf_CleanWait(NULL, bp); /* relock and release buffer */ lock_ObtainWrite(&buf_globalLock); *************** *** 1207,1213 **** if (cm_FidCmp(&bufp->fid, &scp->fid) == 0 && LargeIntegerLessThan(*sizep, bufEnd)) { ! buf_WaitIO(bufp); } lock_ObtainMutex(&scp->mx); --- 1232,1238 ---- if (cm_FidCmp(&bufp->fid, &scp->fid) == 0 && LargeIntegerLessThan(*sizep, bufEnd)) { ! buf_WaitIO(scp, bufp); } lock_ObtainMutex(&scp->mx); *************** *** 1316,1322 **** /* start cleaning the buffer, and wait for it to finish */ buf_LockedCleanAsync(bp, reqp); ! buf_WaitIO(bp); lock_ReleaseMutex(&bp->mx); code = (*cm_buf_opsp->Stabilizep)(scp, userp, reqp); --- 1341,1347 ---- /* start cleaning the buffer, and wait for it to finish */ buf_LockedCleanAsync(bp, reqp); ! buf_WaitIO(scp, bp); lock_ReleaseMutex(&bp->mx); code = (*cm_buf_opsp->Stabilizep)(scp, userp, reqp); *************** *** 1387,1393 **** lock_ReleaseMutex(&bp->mx); } buf_CleanAsync(bp, reqp); ! buf_CleanWait(bp); lock_ObtainMutex(&bp->mx); if (bp->flags & CM_BUF_ERROR) { if (code == 0 || code == -1) --- 1412,1418 ---- lock_ReleaseMutex(&bp->mx); } buf_CleanAsync(bp, reqp); ! buf_CleanWait(scp, bp); lock_ObtainMutex(&bp->mx); if (bp->flags & CM_BUF_ERROR) { if (code == 0 || code == -1) Index: openafs/src/WINNT/afsd/cm_buf.h diff -c openafs/src/WINNT/afsd/cm_buf.h:1.4.2.5 openafs/src/WINNT/afsd/cm_buf.h:1.4.2.6 *** openafs/src/WINNT/afsd/cm_buf.h:1.4.2.5 Fri Mar 11 01:58:40 2005 --- openafs/src/WINNT/afsd/cm_buf.h Sun Jun 5 02:45:31 2005 *************** *** 95,100 **** --- 95,104 ---- #ifdef DISKCACHE95 cm_diskcache_t *dcp; /* diskcache structure */ #endif /* DISKCACHE95 */ + + /* syncop state */ + afs_uint32 waitCount; /* number of threads waiting */ + afs_uint32 waitRequests; /* num of thread wait requests */ } cm_buf_t; /* values for cmFlags */ *************** *** 140,146 **** extern void buf_Hold(cm_buf_t *); ! extern void buf_WaitIO(cm_buf_t *); extern void buf_LockedRelease(cm_buf_t *); --- 144,150 ---- extern void buf_Hold(cm_buf_t *); ! extern void buf_WaitIO(cm_scache_t *, cm_buf_t *); extern void buf_LockedRelease(cm_buf_t *); *************** *** 162,168 **** extern void buf_CleanAsync(cm_buf_t *, cm_req_t *); ! extern void buf_CleanWait(cm_buf_t *); extern void buf_SetDirty(cm_buf_t *); --- 166,172 ---- extern void buf_CleanAsync(cm_buf_t *, cm_req_t *); ! extern void buf_CleanWait(cm_scache_t *, cm_buf_t *); extern void buf_SetDirty(cm_buf_t *); Index: openafs/src/WINNT/afsd/cm_callback.c diff -c openafs/src/WINNT/afsd/cm_callback.c:1.20.2.11 openafs/src/WINNT/afsd/cm_callback.c:1.20.2.12 *** openafs/src/WINNT/afsd/cm_callback.c:1.20.2.11 Wed Apr 27 11:32:52 2005 --- openafs/src/WINNT/afsd/cm_callback.c Sun Jun 5 02:45:31 2005 *************** *** 1701,1708 **** /* now check to see if we got an error */ if (code) { ! osi_Log4(afsd_logp, "GetCallback Failed code 0x%x scp 0x%x cell %d vol %d", ! code, scp, scp->fid.cell, scp->fid.volume); return code; } } --- 1701,1709 ---- /* now check to see if we got an error */ if (code) { ! osi_Log2(afsd_logp, "GetCallback Failed code 0x%x scp 0x%x -->",code, scp); ! osi_Log4(afsd_logp, " cell %d vol %d vn %d uniq %d", ! scp->fid.cell, scp->fid.volume, scp->fid.vnode, scp->fid.unique); return code; } } Index: openafs/src/WINNT/afsd/cm_conn.c diff -c openafs/src/WINNT/afsd/cm_conn.c:1.25.2.9 openafs/src/WINNT/afsd/cm_conn.c:1.25.2.10 *** openafs/src/WINNT/afsd/cm_conn.c:1.25.2.9 Wed May 18 18:57:08 2005 --- openafs/src/WINNT/afsd/cm_conn.c Sun Jun 5 02:45:31 2005 *************** *** 303,310 **** } /* special codes: missing volumes */ ! else if (errorCode == VNOVOL || errorCode == VMOVED || errorCode == VOFFLINE ! || errorCode == VSALVAGE || errorCode == VNOSERVICE) { /* Log server being offline for this volume */ osi_Log4(afsd_logp, "cm_Analyze found server %d.%d.%d.%d marked offline for a volume", --- 303,310 ---- } /* special codes: missing volumes */ ! else if (errorCode == VNOVOL || errorCode == VMOVED || errorCode == VOFFLINE || ! errorCode == VSALVAGE || errorCode == VNOSERVICE || errorCode == VIO) { /* Log server being offline for this volume */ osi_Log4(afsd_logp, "cm_Analyze found server %d.%d.%d.%d marked offline for a volume", *************** *** 398,418 **** char * s = "unknown error"; switch ( errorCode ) { case RXKADINCONSISTENCY: s = "RXKADINCONSISTENCY"; break; ! case RXKADPACKETSHORT : s = "RXKADPACKETSHORT "; break; ! case RXKADLEVELFAIL : s = "RXKADLEVELFAIL "; break; ! case RXKADTICKETLEN : s = "RXKADTICKETLEN "; break; case RXKADOUTOFSEQUENCE: s = "RXKADOUTOFSEQUENCE"; break; ! case RXKADNOAUTH : s = "RXKADNOAUTH "; break; ! case RXKADBADKEY : s = "RXKADBADKEY "; break; ! case RXKADBADTICKET : s = "RXKADBADTICKET "; break; ! case RXKADUNKNOWNKEY : s = "RXKADUNKNOWNKEY "; break; ! case RXKADEXPIRED : s = "RXKADEXPIRED "; break; ! case RXKADSEALEDINCON : s = "RXKADSEALEDINCON "; break; ! case RXKADDATALEN : s = "RXKADDATALEN "; break; ! case RXKADILLEGALLEVEL : s = "RXKADILLEGALLEVEL "; break; } osi_Log2(afsd_logp, "cm_Analyze: ignoring error code 0x%x (%s)", errorCode, s); } } --- 398,434 ---- char * s = "unknown error"; switch ( errorCode ) { case RXKADINCONSISTENCY: s = "RXKADINCONSISTENCY"; break; ! case RXKADPACKETSHORT : s = "RXKADPACKETSHORT"; break; ! case RXKADLEVELFAIL : s = "RXKADLEVELFAIL"; break; ! case RXKADTICKETLEN : s = "RXKADTICKETLEN"; break; case RXKADOUTOFSEQUENCE: s = "RXKADOUTOFSEQUENCE"; break; ! case RXKADNOAUTH : s = "RXKADNOAUTH"; break; ! case RXKADBADKEY : s = "RXKADBADKEY"; break; ! case RXKADBADTICKET : s = "RXKADBADTICKET"; break; ! case RXKADUNKNOWNKEY : s = "RXKADUNKNOWNKEY"; break; ! case RXKADEXPIRED : s = "RXKADEXPIRED"; break; ! case RXKADSEALEDINCON : s = "RXKADSEALEDINCON"; break; ! case RXKADDATALEN : s = "RXKADDATALEN"; break; ! case RXKADILLEGALLEVEL : s = "RXKADILLEGALLEVEL"; break; ! case VSALVAGE : s = "VSALVAGE"; break; ! case VNOVNODE : s = "VNOVNODE"; break; ! case VNOVOL : s = "VNOVOL"; break; ! case VVOLEXISTS : s = "VVOLEXISTS"; break; ! case VNOSERVICE : s = "VNOSERVICE"; break; ! case VOFFLINE : s = "VOFFLINE"; break; ! case VONLINE : s = "VONLINE"; break; ! case VDISKFULL : s = "VDISKFULL"; break; ! case VOVERQUOTA : s = "VOVERQUOTA"; break; ! case VBUSY : s = "VBUSY"; break; ! case VMOVED : s = "VMOVED"; break; ! case VIO : s = "VIO"; break; ! case VRESTRICTED : s = "VRESTRICTED"; break; ! case VRESTARTING : s = "VRESTARTING"; break; ! case VREADONLY : s = "VREADONLY"; break; } osi_Log2(afsd_logp, "cm_Analyze: ignoring error code 0x%x (%s)", errorCode, s); + retry = 0; } } Index: openafs/src/WINNT/afsd/cm_conn.h diff -c openafs/src/WINNT/afsd/cm_conn.h:1.8.2.1 openafs/src/WINNT/afsd/cm_conn.h:1.8.2.2 *** openafs/src/WINNT/afsd/cm_conn.h:1.8.2.1 Mon Oct 18 00:09:26 2004 --- openafs/src/WINNT/afsd/cm_conn.h Sun Jun 5 02:45:31 2005 *************** *** 77,82 **** --- 77,88 ---- #define VMOVED 111 /* Volume has moved to another server; do a VGetVolumeInfo to THIS server to find out where */ + #define VIO 112 /* Vnode temporarily unaccessible, but not known + * to be permanently bad. */ + #define VRESTRICTED 120 /* Volume is restricted from using one or more + * of the given residencies; do a + * vos examine to find out the current + * restrictions. */ #define VRESTARTING -100 /* server is restarting, otherwise similar to VBUSY above. This is negative so that old Index: openafs/src/WINNT/afsd/cm_dcache.c diff -c openafs/src/WINNT/afsd/cm_dcache.c:1.11.2.11 openafs/src/WINNT/afsd/cm_dcache.c:1.11.2.12 *** openafs/src/WINNT/afsd/cm_dcache.c:1.11.2.11 Tue May 31 16:34:26 2005 --- openafs/src/WINNT/afsd/cm_dcache.c Sun Jun 5 02:45:31 2005 *************** *** 379,387 **** int code; if (!cm_HaveCallback(scp)) return 0; ! if ((bufp->cmFlags ! & (CM_BUF_CMFETCHING | CM_BUF_CMFULLYFETCHED)) ! == (CM_BUF_CMFETCHING | CM_BUF_CMFULLYFETCHED)) return 1; if (bufp->dataVersion == scp->dataVersion) return 1; --- 379,385 ---- int code; if (!cm_HaveCallback(scp)) return 0; ! if ((bufp->cmFlags & (CM_BUF_CMFETCHING | CM_BUF_CMFULLYFETCHED)) == (CM_BUF_CMFETCHING | CM_BUF_CMFULLYFETCHED)) return 1; if (bufp->dataVersion == scp->dataVersion) return 1; *************** *** 443,450 **** bp = buf_Find(scp, &tbase); /* We cheat slightly by not locking the bp mutex. */ if (bp) { ! if ((bp->cmFlags ! & (CM_BUF_CMFETCHING | CM_BUF_CMSTORING)) == 0 && bp->dataVersion != scp->dataVersion) stop = 1; buf_Release(bp); --- 441,447 ---- bp = buf_Find(scp, &tbase); /* We cheat slightly by not locking the bp mutex. */ if (bp) { ! if ((bp->cmFlags & (CM_BUF_CMFETCHING | CM_BUF_CMSTORING)) == 0 && bp->dataVersion != scp->dataVersion) stop = 1; buf_Release(bp); *************** *** 907,913 **** code = buf_Get(scp, &pageBase, &tbp); if (code) { ! lock_ReleaseMutex(&cm_bufGetMutex); lock_ObtainMutex(&scp->mx); cm_SyncOpDone(scp, NULL, CM_SCACHESYNC_NEEDCALLBACK | CM_SCACHESYNC_GETSTATUS); return code; --- 904,910 ---- code = buf_Get(scp, &pageBase, &tbp); if (code) { ! //lock_ReleaseMutex(&cm_bufGetMutex); lock_ObtainMutex(&scp->mx); cm_SyncOpDone(scp, NULL, CM_SCACHESYNC_NEEDCALLBACK | CM_SCACHESYNC_GETSTATUS); return code; *************** *** 1097,1105 **** /* turn off writing and wakeup users */ if (isStore) { if (bufp->flags & CM_BUF_WAITING) { osi_Wakeup((long) bufp); } ! bufp->flags &= ~(CM_BUF_WAITING | CM_BUF_WRITING | CM_BUF_DIRTY); } lock_ReleaseMutex(&bufp->mx); --- 1094,1103 ---- /* turn off writing and wakeup users */ if (isStore) { if (bufp->flags & CM_BUF_WAITING) { + osi_Log1(afsd_logp, "cm_ReleaseBIOD Waking bp 0x%x", bufp); osi_Wakeup((long) bufp); } ! bufp->flags &= ~(CM_BUF_WRITING | CM_BUF_DIRTY); } lock_ReleaseMutex(&bufp->mx); *************** *** 1125,1131 **** AFSCallBack callback; AFSVolSync volSync; char *bufferp; ! cm_buf_t *tbufp; /* buf we're filling */ osi_queueData_t *qdp; /* q element we're scanning */ AFSFid tfid; struct rx_call *callp; --- 1123,1129 ---- AFSCallBack callback; AFSVolSync volSync; char *bufferp; ! cm_buf_t *tbufp; /* buf we're filling */ osi_queueData_t *qdp; /* q element we're scanning */ AFSFid tfid; struct rx_call *callp; *************** *** 1319,1325 **** tbufp->cmFlags |= CM_BUF_CMFULLYFETCHED; lock_ObtainMutex(&scp->mx); if (scp->flags & CM_SCACHEFLAG_WAITING) { ! scp->flags &= ~CM_SCACHEFLAG_WAITING; osi_Wakeup((long) &scp->flags); } if (cpffp && !*cpffp && !osi_QPrev(&qdp->q)) { --- 1317,1323 ---- tbufp->cmFlags |= CM_BUF_CMFULLYFETCHED; lock_ObtainMutex(&scp->mx); if (scp->flags & CM_SCACHEFLAG_WAITING) { ! osi_Log1(afsd_logp, "CM GetBuffer Waking scp 0x%x", scp); osi_Wakeup((long) &scp->flags); } if (cpffp && !*cpffp && !osi_QPrev(&qdp->q)) { *************** *** 1412,1416 **** --- 1410,1415 ---- if (code == 0) cm_MergeStatus(scp, &afsStatus, &volSync, up, 0); + return code; } Index: openafs/src/WINNT/afsd/cm_scache.c diff -c openafs/src/WINNT/afsd/cm_scache.c:1.14.2.8 openafs/src/WINNT/afsd/cm_scache.c:1.14.2.10 *** openafs/src/WINNT/afsd/cm_scache.c:1.14.2.8 Thu Mar 31 01:05:48 2005 --- openafs/src/WINNT/afsd/cm_scache.c Sun Jun 5 09:39:29 2005 *************** *** 100,105 **** --- 100,111 ---- scp->serverModTime = 0; scp->dataVersion = 0; scp->bulkStatProgress = hzero; + scp->waitCount = 0; + + scp->fid.vnode = 0; + scp->fid.volume = 0; + scp->fid.unique = 0; + scp->fid.cell = 0; /* discard callback */ if (scp->cbServerp) { *************** *** 281,289 **** for ( scp = cm_data.scacheLRULastp; scp; scp = (cm_scache_t *) osi_QPrev(&scp->q) ) { if (scp->randomACLp) { ! lock_ObtainWrite(&scp->mx); cm_FreeAllACLEnts(scp); ! lock_ReleaseWrite(&scp->mx); } lock_FinalizeMutex(&scp->mx); lock_FinalizeRWLock(&scp->bufCreateLock); --- 287,295 ---- for ( scp = cm_data.scacheLRULastp; scp; scp = (cm_scache_t *) osi_QPrev(&scp->q) ) { if (scp->randomACLp) { ! lock_ObtainMutex(&scp->mx); cm_FreeAllACLEnts(scp); ! lock_ReleaseMutex(&scp->mx); } lock_FinalizeMutex(&scp->mx); lock_FinalizeRWLock(&scp->bufCreateLock); *************** *** 318,323 **** --- 324,331 ---- scp->openWrites = 0; scp->openShares = 0; scp->openExcls = 0; + scp->waitCount = 0; + scp->flags &= ~CM_SCACHEFLAG_WAITING; } } cm_allFileLocks = NULL; *************** *** 412,418 **** if (cm_freelanceEnabled && special) { osi_Log0(afsd_logp,"cm_getSCache Freelance and special"); ! if (fidp->vnode > 1 && fidp->vnode <= cm_localMountPoints + 2) { lock_ObtainMutex(&cm_Freelance_Lock); mp =(cm_localMountPoints+fidp->vnode-2)->mountPointStringp; lock_ReleaseMutex(&cm_Freelance_Lock); --- 420,426 ---- if (cm_freelanceEnabled && special) { osi_Log0(afsd_logp,"cm_getSCache Freelance and special"); ! if (fidp->vnode > 1 && fidp->vnode <= cm_noLocalMountPoints + 2) { lock_ObtainMutex(&cm_Freelance_Lock); mp =(cm_localMountPoints+fidp->vnode-2)->mountPointStringp; lock_ReleaseMutex(&cm_Freelance_Lock); *************** *** 432,438 **** cm_data.hashTablep[hash]=scp; scp->flags |= CM_SCACHEFLAG_INHASH; scp->refCount = 1; ! if (fidp->vnode > 1 && fidp->vnode <= cm_localMountPoints + 2) scp->fileType = (cm_localMountPoints+fidp->vnode-2)->fileType; else scp->fileType = CM_SCACHETYPE_INVALID; --- 440,446 ---- cm_data.hashTablep[hash]=scp; scp->flags |= CM_SCACHEFLAG_INHASH; scp->refCount = 1; ! if (fidp->vnode > 1 && fidp->vnode <= cm_noLocalMountPoints + 2) scp->fileType = (cm_localMountPoints+fidp->vnode-2)->fileType; else scp->fileType = CM_SCACHETYPE_INVALID; *************** *** 658,664 **** goto sleep; } if (bufp && (bufp->cmFlags & (CM_BUF_CMFETCHING | CM_BUF_CMSTORING))) { ! osi_Log1(afsd_logp, "CM SyncOp scp 0x%x is BUF_CMFETCHING|BUF_CMSTORING want FETCHDATA", scp); goto sleep; } } --- 666,672 ---- goto sleep; } if (bufp && (bufp->cmFlags & (CM_BUF_CMFETCHING | CM_BUF_CMSTORING))) { ! osi_Log2(afsd_logp, "CM SyncOp scp 0x%x bufp 0x%x is BUF_CMFETCHING|BUF_CMSTORING want FETCHDATA", scp, bufp); goto sleep; } } *************** *** 670,676 **** goto sleep; } if (bufp && (bufp->cmFlags & (CM_BUF_CMFETCHING | CM_BUF_CMSTORING))) { ! osi_Log1(afsd_logp, "CM SyncOp scp 0x%x is BUF_CMFETCHING|BUF_CMSTORING want STOREDATA", scp); goto sleep; } } --- 678,684 ---- goto sleep; } if (bufp && (bufp->cmFlags & (CM_BUF_CMFETCHING | CM_BUF_CMSTORING))) { ! osi_Log2(afsd_logp, "CM SyncOp scp 0x%x bufp 0x%x is BUF_CMFETCHING|BUF_CMSTORING want STOREDATA", scp, bufp); goto sleep; } } *************** *** 718,725 **** * operations don't change any of the data that we're * changing here. */ ! if (scp->flags & (CM_SCACHEFLAG_FETCHING | CM_SCACHEFLAG_STORING ! | CM_SCACHEFLAG_SIZESTORING)) { osi_Log1(afsd_logp, "CM SyncOp scp 0x%x is FETCHING|STORING|SIZESTORING want SETSTATUS", scp); goto sleep; } --- 726,732 ---- * operations don't change any of the data that we're * changing here. */ ! if (scp->flags & (CM_SCACHEFLAG_FETCHING | CM_SCACHEFLAG_STORING | CM_SCACHEFLAG_SIZESTORING)) { osi_Log1(afsd_logp, "CM SyncOp scp 0x%x is FETCHING|STORING|SIZESTORING want SETSTATUS", scp); goto sleep; } *************** *** 733,743 **** osi_Log1(afsd_logp, "CM SyncOp scp 0x%x is FETCHING want READ", scp); goto sleep; } ! if (bufp && ((bufp->cmFlags ! & (CM_BUF_CMFETCHING ! | CM_BUF_CMFULLYFETCHED)) ! == CM_BUF_CMFETCHING)) { ! osi_Log1(afsd_logp, "CM SyncOp scp 0x%x is BUF_CMFETCHING want READ", scp); goto sleep; } } --- 740,747 ---- osi_Log1(afsd_logp, "CM SyncOp scp 0x%x is FETCHING want READ", scp); goto sleep; } ! if (bufp && ((bufp->cmFlags & (CM_BUF_CMFETCHING | CM_BUF_CMFULLYFETCHED)) == CM_BUF_CMFETCHING)) { ! osi_Log2(afsd_logp, "CM SyncOp scp 0x%x bufp 0x%x is BUF_CMFETCHING want READ", scp, bufp); goto sleep; } } *************** *** 751,757 **** goto sleep; } if (bufp && (bufp->cmFlags & (CM_BUF_CMFETCHING | CM_BUF_CMSTORING))) { ! osi_Log1(afsd_logp, "CM SyncOp scp 0x%x is BUF_CMFETCHING|BUF_CMSTORING want WRITE", scp); goto sleep; } } --- 755,761 ---- goto sleep; } if (bufp && (bufp->cmFlags & (CM_BUF_CMFETCHING | CM_BUF_CMSTORING))) { ! osi_Log2(afsd_logp, "CM SyncOp scp 0x%x bufp 0x%x is BUF_CMFETCHING|BUF_CMSTORING want WRITE", scp, bufp); goto sleep; } } *************** *** 822,831 **** /* wait here, then try again */ osi_Log1(afsd_logp, "CM SyncOp sleeping scp 0x%x", scp); if ( scp->flags & CM_SCACHEFLAG_WAITING ) { ! osi_Log1(afsd_logp, "CM SyncOp CM_SCACHEFLAG_WAITING already set for 0x%x", scp); } else { osi_Log1(afsd_logp, "CM SyncOp CM_SCACHEFLAG_WAITING set for 0x%x", scp); scp->flags |= CM_SCACHEFLAG_WAITING; } if (bufLocked) lock_ReleaseMutex(&bufp->mx); --- 826,839 ---- /* wait here, then try again */ osi_Log1(afsd_logp, "CM SyncOp sleeping scp 0x%x", scp); if ( scp->flags & CM_SCACHEFLAG_WAITING ) { ! scp->waitCount++; ! scp->waitRequests++; ! osi_Log3(afsd_logp, "CM SyncOp CM_SCACHEFLAG_WAITING already set for 0x%x; %d threads; %d requests", ! scp, scp->waitCount, scp->waitRequests); } else { osi_Log1(afsd_logp, "CM SyncOp CM_SCACHEFLAG_WAITING set for 0x%x", scp); scp->flags |= CM_SCACHEFLAG_WAITING; + scp->waitCount = scp->waitRequests = 1; } if (bufLocked) lock_ReleaseMutex(&bufp->mx); *************** *** 833,839 **** if (bufLocked) lock_ObtainMutex(&bufp->mx); lock_ObtainMutex(&scp->mx); ! osi_Log1(afsd_logp, "CM SyncOp woke! scp 0x%x", scp); } /* big while loop */ /* now, update the recorded state for RPC-type calls */ --- 841,854 ---- if (bufLocked) lock_ObtainMutex(&bufp->mx); lock_ObtainMutex(&scp->mx); ! scp->waitCount--; ! osi_Log3(afsd_logp, "CM SyncOp woke! scp 0x%x; still waiting %d threads of %d requests", ! scp, scp->waitCount, scp->waitRequests); ! if (scp->waitCount == 0) { ! osi_Log1(afsd_logp, "CM SyncOp CM_SCACHEFLAG_WAITING reset for 0x%x", scp); ! scp->flags &= ~CM_SCACHEFLAG_WAITING; ! scp->waitRequests = 0; ! } } /* big while loop */ /* now, update the recorded state for RPC-type calls */ *************** *** 930,937 **** osi_QRemove((osi_queue_t **) &scp->bufReadsp, &qdp->q); osi_QDFree(qdp); if (bufp) { ! bufp->cmFlags &= ! ~(CM_BUF_CMFETCHING | CM_BUF_CMFULLYFETCHED); buf_Release(bufp); } } --- 945,955 ---- osi_QRemove((osi_queue_t **) &scp->bufReadsp, &qdp->q); osi_QDFree(qdp); if (bufp) { ! bufp->cmFlags &= ~(CM_BUF_CMFETCHING | CM_BUF_CMFULLYFETCHED); ! if (bufp->flags & CM_BUF_WAITING) { ! osi_Log2(afsd_logp, "CM SyncOpDone Waking [scp 0x%x] bufp 0x%x", scp, bufp); ! osi_Wakeup((long) &bufp); ! } buf_Release(bufp); } } *************** *** 949,962 **** osi_QDFree(qdp); if (bufp) { bufp->cmFlags &= ~CM_BUF_CMSTORING; buf_Release(bufp); } } /* and wakeup anyone who is waiting */ if (scp->flags & CM_SCACHEFLAG_WAITING) { ! osi_Log1(afsd_logp, "CM SyncOp CM_SCACHEFLAG_WAITING reset for 0x%x", scp); ! scp->flags &= ~CM_SCACHEFLAG_WAITING; osi_Wakeup((long) &scp->flags); } } --- 967,983 ---- osi_QDFree(qdp); if (bufp) { bufp->cmFlags &= ~CM_BUF_CMSTORING; + if (bufp->flags & CM_BUF_WAITING) { + osi_Log2(afsd_logp, "CM SyncOpDone Waking [scp 0x%x] bufp 0x%x", scp, bufp); + osi_Wakeup((long) &bufp); + } buf_Release(bufp); } } /* and wakeup anyone who is waiting */ if (scp->flags & CM_SCACHEFLAG_WAITING) { ! osi_Log1(afsd_logp, "CM SyncOpDone Waking scp 0x%x", scp); osi_Wakeup((long) &scp->flags); } } Index: openafs/src/WINNT/afsd/cm_scache.h diff -c openafs/src/WINNT/afsd/cm_scache.h:1.4.2.6 openafs/src/WINNT/afsd/cm_scache.h:1.4.2.7 *** openafs/src/WINNT/afsd/cm_scache.h:1.4.2.6 Fri Mar 11 01:58:42 2005 --- openafs/src/WINNT/afsd/cm_scache.h Sun Jun 5 02:45:31 2005 *************** *** 130,135 **** --- 130,139 ---- afs_uint16 openWrites; /* open for writing */ afs_uint16 openShares; /* open for read excl */ afs_uint16 openExcls; /* open for exclusives */ + + /* syncop state */ + afs_uint32 waitCount; /* number of threads waiting */ + afs_uint32 waitRequests; /* num of thread wait requests */ } cm_scache_t; /* mask field - tell what has been modified */ Index: openafs/src/WINNT/afsd/cm_vnodeops.c diff -c openafs/src/WINNT/afsd/cm_vnodeops.c:1.19.2.18 openafs/src/WINNT/afsd/cm_vnodeops.c:1.19.2.19 *** openafs/src/WINNT/afsd/cm_vnodeops.c:1.19.2.18 Tue May 31 13:36:57 2005 --- openafs/src/WINNT/afsd/cm_vnodeops.c Sun Jun 5 02:45:31 2005 *************** *** 128,134 **** int cm_Is8Dot3(char *namep) { int sawDot = 0; - int sawUpper = 0, sawLower = 0; unsigned char tc; int charCount = 0; --- 128,133 ---- *************** *** 153,162 **** } if (cm_LegalChars[tc] == 0) return 0; - if (tc >= 'A' && tc <= 'Z') - sawUpper = 1; - else if (tc >= 'a' && tc <= 'z') - sawLower = 1; charCount++; if (!sawDot && charCount > 8) /* more than 8 chars in name */ --- 152,157 ---- *************** *** 165,178 **** /* more than 3 chars in extension */ return 0; } - /* - * Used to check that all characters were the same case. - * This doesn't help 16-bit apps, and meanwhile it causes the - * MS-DOS Command Prompt to misbehave; see Sybase defect 10709. - * - if (sawUpper && sawLower) - return 0; - */ return 1; } --- 160,165 ---- Index: openafs/src/WINNT/afsd/smb.c diff -c openafs/src/WINNT/afsd/smb.c:1.55.2.23 openafs/src/WINNT/afsd/smb.c:1.55.2.24 *** openafs/src/WINNT/afsd/smb.c:1.55.2.23 Wed May 18 18:57:09 2005 --- openafs/src/WINNT/afsd/smb.c Sun Jun 5 02:45:32 2005 *************** *** 2250,2257 **** code = Netbios(ncbp, dos_ncb); #endif /* !DJGPP */ ! if (code != 0) ! osi_Log1(smb_logp, "SendPacket failure code %d", code); if (localNCB) FreeNCB(ncbp); --- 2250,2300 ---- code = Netbios(ncbp, dos_ncb); #endif /* !DJGPP */ ! if (code != 0) { ! char * s; ! switch ( code ) { ! case 0x01: s = "llegal buffer length "; break; ! case 0x03: s = "illegal command "; break; ! case 0x05: s = "command timed out "; break; ! case 0x06: s = "message incomplete, issue another command"; break; ! case 0x07: s = "illegal buffer address "; break; ! case 0x08: s = "session number out of range "; break; ! case 0x09: s = "no resource available "; break; ! case 0x0a: s = "session closed "; break; ! case 0x0b: s = "command cancelled "; break; ! case 0x0d: s = "duplicate name "; break; ! case 0x0e: s = "name table full "; break; ! case 0x0f: s = "no deletions, name has active sessions "; break; ! case 0x11: s = "local session table full "; break; ! case 0x12: s = "remote session table full "; break; ! case 0x13: s = "illegal name number "; break; ! case 0x14: s = "no callname "; break; ! case 0x15: s = "cannot put * in NCB_NAME "; break; ! case 0x16: s = "name in use on remote adapter "; break; ! case 0x17: s = "name deleted "; break; ! case 0x18: s = "session ended abnormally "; break; ! case 0x19: s = "name conflict detected "; break; ! case 0x21: s = "interface busy, IRET before retrying "; break; ! case 0x22: s = "too many commands outstanding, retry later"; break; ! case 0x23: s = "ncb_lana_num field invalid "; break; ! case 0x24: s = "command completed while cancel occurring "; break; ! case 0x26: s = "command not valid to cancel "; break; ! case 0x30: s = "name defined by anther local process "; break; ! case 0x34: s = "environment undefined. RESET required "; break; ! case 0x35: s = "required OS resources exhausted "; break; ! case 0x36: s = "max number of applications exceeded "; break; ! case 0x37: s = "no saps available for netbios "; break; ! case 0x38: s = "requested resources are not available "; break; ! case 0x39: s = "invalid ncb address or length > segment "; break; ! case 0x3B: s = "invalid NCB DDID "; break; ! case 0x3C: s = "lock of user area failed "; break; ! case 0x3f: s = "NETBIOS not loaded "; break; ! case 0x40: s = "system error "; break; ! default: ! s = "unknown error"; ! } ! osi_Log2(smb_logp, "SendPacket failure code %d \"%s\"", code, s); ! } if (localNCB) FreeNCB(ncbp); *************** *** 5519,5532 **** lock_ObtainMutex(&scp->mx); /* start by looking up the file's end */ - osi_Log1(smb_logp, "smb_WriteData fid %d calling cm_SyncOp NEEDCALLBACK|SETSTATUS|GETSTATUS", - fidp->fid); code = cm_SyncOp(scp, NULL, userp, &req, 0, CM_SCACHESYNC_NEEDCALLBACK | CM_SCACHESYNC_SETSTATUS | CM_SCACHESYNC_GETSTATUS); - osi_Log2(smb_logp, "smb_WriteData fid %d calling cm_SyncOp NEEDCALLBACK|SETSTATUS|GETSTATUS returns %d", - fidp->fid,code); if (code) goto done; --- 5562,5571 ---- *************** *** 5606,5619 **** /* now get the data in the cache */ while (1) { - osi_Log1(smb_logp, "smb_WriteData fid %d calling cm_SyncOp NEEDCALLBACK|WRITE|BUFLOCKED", - fidp->fid); code = cm_SyncOp(scp, bufferp, userp, &req, 0, CM_SCACHESYNC_NEEDCALLBACK | CM_SCACHESYNC_WRITE | CM_SCACHESYNC_BUFLOCKED); - osi_Log2(smb_logp, "smb_WriteData fid %d calling cm_SyncOp NEEDCALLBACK|WRITE|BUFLOCKED returns %d", - fidp->fid,code); if (code) goto done; --- 5645,5654 ---- Index: openafs/src/afs/afs_dcache.c diff -c openafs/src/afs/afs_dcache.c:1.42.2.12 openafs/src/afs/afs_dcache.c:1.42.2.13 *** openafs/src/afs/afs_dcache.c:1.42.2.12 Mon May 30 00:05:40 2005 --- openafs/src/afs/afs_dcache.c Sun Jun 5 11:34:49 2005 *************** *** 14,20 **** #include "afs/param.h" RCSID ! ("$Header: /cvs/openafs/src/afs/afs_dcache.c,v 1.42.2.12 2005/05/30 04:05:40 shadow Exp $"); #include "afs/sysincludes.h" /*Standard vendor system headers */ #include "afsincludes.h" /*AFS-based standard headers */ --- 14,20 ---- #include "afs/param.h" RCSID ! ("$Header: /cvs/openafs/src/afs/afs_dcache.c,v 1.42.2.13 2005/06/05 15:34:49 shadow Exp $"); #include "afs/sysincludes.h" /*Standard vendor system headers */ #include "afsincludes.h" /*AFS-based standard headers */ *************** *** 646,654 **** if (tvc) { tchunkoffset = AFS_CHUNKTOBASE(tdc->f.chunk); chunkFlags = afs_indexFlags[tdc->index]; ! if ((((phase / 2) & 1) == 0) && osi_Active(tvc)) skip = 1; ! if ((((phase / 2) & 1) == 1) && osi_Active(tvc) && (tvc->states & CDCLock) && (chunkFlags & IFAnyPages)) skip = 1; --- 646,654 ---- if (tvc) { tchunkoffset = AFS_CHUNKTOBASE(tdc->f.chunk); chunkFlags = afs_indexFlags[tdc->index]; ! if (((phase & 1) == 0) && osi_Active(tvc)) skip = 1; ! if (((phase & 1) == 1) && osi_Active(tvc) && (tvc->states & CDCLock) && (chunkFlags & IFAnyPages)) skip = 1; *************** *** 794,800 **** } } else { /* found no one in phases 0-5, we're hosed */ ! if (victimPtr == 0) break; } } /* big while loop */ --- 794,800 ---- } } else { /* found no one in phases 0-5, we're hosed */ ! if (j == 0) break; } } /* big while loop */ Index: openafs/src/afs/LINUX/osi_vfsops.c diff -c openafs/src/afs/LINUX/osi_vfsops.c:1.29.2.3 openafs/src/afs/LINUX/osi_vfsops.c:1.29.2.4 *** openafs/src/afs/LINUX/osi_vfsops.c:1.29.2.3 Thu Mar 10 23:37:18 2005 --- openafs/src/afs/LINUX/osi_vfsops.c Sun Jun 5 11:34:42 2005 *************** *** 16,22 **** #include "afs/param.h" RCSID ! ("$Header: /cvs/openafs/src/afs/LINUX/osi_vfsops.c,v 1.29.2.3 2005/03/11 04:37:18 shadow Exp $"); #define __NO_VERSION__ /* don't define kernel_version in module.h */ #include /* early to avoid printf->printk mapping */ --- 16,22 ---- #include "afs/param.h" RCSID ! ("$Header: /cvs/openafs/src/afs/LINUX/osi_vfsops.c,v 1.29.2.4 2005/06/05 15:34:42 shadow Exp $"); #define __NO_VERSION__ /* don't define kernel_version in module.h */ #include /* early to avoid printf->printk mapping */ *************** *** 287,292 **** --- 287,300 ---- #endif } + #if defined(AFS_LINUX26_ENV) + static void + afs_drop_inode(struct inode *ip) + { + generic_delete_inode(ip); + AFS_GUNLOCK(); /* locked by afs_delete_inode() */ + } + #endif static void afs_destroy_inode(struct inode *ip) *************** *** 305,317 **** static void afs_delete_inode(struct inode *ip) { ! #ifdef AFS_LINUX26_ENV put_inode_on_dummy_list(ip); ! #endif ! AFS_GLOCK(); osi_clear_inode(ip); AFS_GUNLOCK(); } --- 313,327 ---- static void afs_delete_inode(struct inode *ip) { ! #if defined(AFS_LINUX26_ENV) ! AFS_GLOCK(); /* after spin_unlock(inode_lock) */ put_inode_on_dummy_list(ip); ! osi_clear_inode(ip); ! #else AFS_GLOCK(); osi_clear_inode(ip); AFS_GUNLOCK(); + #endif } *************** *** 404,410 **** struct super_operations afs_sops = { #if defined(AFS_LINUX26_ENV) ! .drop_inode = generic_delete_inode, .destroy_inode = afs_destroy_inode, #endif .delete_inode = afs_delete_inode, --- 414,420 ---- struct super_operations afs_sops = { #if defined(AFS_LINUX26_ENV) ! .drop_inode = afs_drop_inode, .destroy_inode = afs_destroy_inode, #endif .delete_inode = afs_delete_inode, Index: openafs/src/config/NTMakefile.amd64_w2k diff -c openafs/src/config/NTMakefile.amd64_w2k:1.1.2.8 openafs/src/config/NTMakefile.amd64_w2k:1.1.2.9 *** openafs/src/config/NTMakefile.amd64_w2k:1.1.2.8 Wed May 18 18:57:11 2005 --- openafs/src/config/NTMakefile.amd64_w2k Sun Jun 5 10:52:45 2005 *************** *** 80,86 **** #define used in WinNT/2000 installation and program version display AFSPRODUCT_VER_MAJOR=1 AFSPRODUCT_VER_MINOR=3 ! AFSPRODUCT_VER_PATCH=8300 AFSPRODUCT_VER_BUILD=0 # For MSI installer, each major release should have a different GUID --- 80,86 ---- #define used in WinNT/2000 installation and program version display AFSPRODUCT_VER_MAJOR=1 AFSPRODUCT_VER_MINOR=3 ! AFSPRODUCT_VER_PATCH=8400 AFSPRODUCT_VER_BUILD=0 # For MSI installer, each major release should have a different GUID Index: openafs/src/config/NTMakefile.i386_nt40 diff -c openafs/src/config/NTMakefile.i386_nt40:1.46.2.23 openafs/src/config/NTMakefile.i386_nt40:1.46.2.24 *** openafs/src/config/NTMakefile.i386_nt40:1.46.2.23 Wed May 18 18:57:11 2005 --- openafs/src/config/NTMakefile.i386_nt40 Sun Jun 5 10:52:45 2005 *************** *** 80,86 **** #define used in WinNT/2000 installation and program version display AFSPRODUCT_VER_MAJOR=1 AFSPRODUCT_VER_MINOR=3 ! AFSPRODUCT_VER_PATCH=8300 AFSPRODUCT_VER_BUILD=0 # For MSI installer, each major release should have a different GUID --- 80,86 ---- #define used in WinNT/2000 installation and program version display AFSPRODUCT_VER_MAJOR=1 AFSPRODUCT_VER_MINOR=3 ! AFSPRODUCT_VER_PATCH=8400 AFSPRODUCT_VER_BUILD=0 # For MSI installer, each major release should have a different GUID Index: openafs/src/config/NTMakefile.i386_w2k diff -c openafs/src/config/NTMakefile.i386_w2k:1.1.2.8 openafs/src/config/NTMakefile.i386_w2k:1.1.2.9 *** openafs/src/config/NTMakefile.i386_w2k:1.1.2.8 Wed May 18 18:57:11 2005 --- openafs/src/config/NTMakefile.i386_w2k Sun Jun 5 10:52:45 2005 *************** *** 80,86 **** #define used in WinNT/2000 installation and program version display AFSPRODUCT_VER_MAJOR=1 AFSPRODUCT_VER_MINOR=3 ! AFSPRODUCT_VER_PATCH=8300 AFSPRODUCT_VER_BUILD=0 # For MSI installer, each major release should have a different GUID --- 80,86 ---- #define used in WinNT/2000 installation and program version display AFSPRODUCT_VER_MAJOR=1 AFSPRODUCT_VER_MINOR=3 ! AFSPRODUCT_VER_PATCH=8400 AFSPRODUCT_VER_BUILD=0 # For MSI installer, each major release should have a different GUID Index: openafs/src/des/des.c diff -c openafs/src/des/des.c:1.11.2.3 openafs/src/des/des.c:1.11.2.4 *** openafs/src/des/des.c:1.11.2.3 Mon May 30 00:57:34 2005 --- openafs/src/des/des.c Thu Jun 2 01:21:57 2005 *************** *** 37,43 **** #include RCSID ! ("$Header: /cvs/openafs/src/des/des.c,v 1.11.2.3 2005/05/30 04:57:34 shadow Exp $"); #ifndef KERNEL #include --- 37,43 ---- #include RCSID ! ("$Header: /cvs/openafs/src/des/des.c,v 1.11.2.4 2005/06/02 05:21:57 shadow Exp $"); #ifndef KERNEL #include *************** *** 92,98 **** #endif #endif afs_uint32 P_temp; ! register unsigned char *P_temp_p = (unsigned char *)&P_temp; #ifdef BITS16 sbox_out S_out; afs_uint32 *S_out_p = (afs_uint32 *) & S_out; --- 92,98 ---- #endif #endif afs_uint32 P_temp; ! volatile unsigned char *P_temp_p = (unsigned char *)&P_temp; #ifdef BITS16 sbox_out S_out; afs_uint32 *S_out_p = (afs_uint32 *) & S_out; Index: openafs/src/libafs/afs.ppc_darwin_70.plist.in diff -c openafs/src/libafs/afs.ppc_darwin_70.plist.in:1.2.2.2 openafs/src/libafs/afs.ppc_darwin_70.plist.in:1.2.2.3 *** openafs/src/libafs/afs.ppc_darwin_70.plist.in:1.2.2.2 Tue May 31 10:49:19 2005 --- openafs/src/libafs/afs.ppc_darwin_70.plist.in Sun Jun 5 11:43:42 2005 *************** *** 15,25 **** CFBundlePackageType KEXT CFBundleShortVersionString ! 1.3.83 CFBundleSignature ???? CFBundleVersion ! 1.3.83 OSBundleLibraries com.apple.kernel.bsd --- 15,25 ---- CFBundlePackageType KEXT CFBundleShortVersionString ! 1.3.84 CFBundleSignature ???? CFBundleVersion ! 1.3.84 OSBundleLibraries com.apple.kernel.bsd Index: openafs/src/packaging/MacOS/OpenAFS.Info.plist diff -c openafs/src/packaging/MacOS/OpenAFS.Info.plist:1.2.2.10 openafs/src/packaging/MacOS/OpenAFS.Info.plist:1.2.2.11 *** openafs/src/packaging/MacOS/OpenAFS.Info.plist:1.2.2.10 Tue May 31 10:51:03 2005 --- openafs/src/packaging/MacOS/OpenAFS.Info.plist Sun Jun 5 11:43:43 2005 *************** *** 3,19 **** CFBundleGetInfoString ! OpenAFS 1.3.83 CFBundleIdentifier org.openafs.OpenAFS.pkg CFBundleName OpenAFS CFBundleShortVersionString ! 1.3.83 IFMajorVersion 1 IFMinorVersion ! 3 IFPkgFlagAllowBackRev IFPkgFlagAuthorizationAction --- 3,19 ---- CFBundleGetInfoString ! OpenAFS 1.3.84 CFBundleIdentifier org.openafs.OpenAFS.pkg CFBundleName OpenAFS CFBundleShortVersionString ! 1.3.84 IFMajorVersion 1 IFMinorVersion ! 2 IFPkgFlagAllowBackRev IFPkgFlagAuthorizationAction Index: openafs/src/packaging/MacOS/OpenAFS.info diff -c openafs/src/packaging/MacOS/OpenAFS.info:1.1.4.10 openafs/src/packaging/MacOS/OpenAFS.info:1.1.4.11 *** openafs/src/packaging/MacOS/OpenAFS.info:1.1.4.10 Tue May 31 10:51:03 2005 --- openafs/src/packaging/MacOS/OpenAFS.info Sun Jun 5 11:43:43 2005 *************** *** 1,5 **** Title OpenAFS ! Version 1.3.83 Description The OpenAFS distributed filesystem. This package installs an almost-ready-to-run client for OpenAFS. see http://www.openafs.org for more information. DefaultLocation / Diskname (null) --- 1,5 ---- Title OpenAFS ! Version 1.3.84 Description The OpenAFS distributed filesystem. This package installs an almost-ready-to-run client for OpenAFS. see http://www.openafs.org for more information. DefaultLocation / Diskname (null) Index: openafs/src/rxkad/rxkad_common.c diff -c openafs/src/rxkad/rxkad_common.c:1.20.2.6 openafs/src/rxkad/rxkad_common.c:1.20.2.7 *** openafs/src/rxkad/rxkad_common.c:1.20.2.6 Mon May 30 14:30:36 2005 --- openafs/src/rxkad/rxkad_common.c Tue May 31 17:12:59 2005 *************** *** 23,29 **** #define INCLUDE_RXKAD_PRIVATE_DECLS RCSID ! ("$Header: /cvs/openafs/src/rxkad/rxkad_common.c,v 1.20.2.6 2005/05/30 18:30:36 shadow Exp $"); #ifdef KERNEL #ifndef UKERNEL --- 23,29 ---- #define INCLUDE_RXKAD_PRIVATE_DECLS RCSID ! ("$Header: /cvs/openafs/src/rxkad/rxkad_common.c,v 1.20.2.7 2005/05/31 21:12:59 shadow Exp $"); #ifdef KERNEL #ifndef UKERNEL *************** *** 89,96 **** pthread_mutex_t rxkad_global_stats_lock; pthread_key_t rxkad_stats_key; #else /* AFS_PTHREAD_ENV */ /* Move delaration of this to des/key_sched.c */ ! /* struct rxkad_stats rxkad_stats = { { 0 } }; */ #endif /* AFS_PTHREAD_ENV */ #ifdef AFS_PTHREAD_ENV --- 89,99 ---- pthread_mutex_t rxkad_global_stats_lock; pthread_key_t rxkad_stats_key; #else /* AFS_PTHREAD_ENV */ + #if defined(KERNEL) && !defined(UKERNEL) + struct rxkad_stats rxkad_stats = { { 0 } }; + #else /* Move delaration of this to des/key_sched.c */ ! #endif #endif /* AFS_PTHREAD_ENV */ #ifdef AFS_PTHREAD_ENV Index: openafs/src/rxkad/domestic/fcrypt.c diff -c openafs/src/rxkad/domestic/fcrypt.c:1.11.2.3 openafs/src/rxkad/domestic/fcrypt.c:1.11.2.4 *** openafs/src/rxkad/domestic/fcrypt.c:1.11.2.3 Mon May 30 00:57:38 2005 --- openafs/src/rxkad/domestic/fcrypt.c Thu Jun 2 01:21:58 2005 *************** *** 20,26 **** #endif RCSID ! ("$Header: /cvs/openafs/src/rxkad/domestic/fcrypt.c,v 1.11.2.3 2005/05/30 04:57:38 shadow Exp $"); #define DEBUG 0 #ifdef KERNEL --- 20,26 ---- #endif RCSID ! ("$Header: /cvs/openafs/src/rxkad/domestic/fcrypt.c,v 1.11.2.4 2005/06/02 05:21:58 shadow Exp $"); #define DEBUG 0 #ifdef KERNEL *************** *** 112,120 **** fc_KeySchedule schedule, int encrypt) { afs_uint32 L, R; ! afs_uint32 S, P; ! unsigned char *Pchar = (unsigned char *)&P; ! unsigned char *Schar = (unsigned char *)&S; int i; #if defined(vax) || (defined(mips) && defined(MIPSEL)) || defined(AFSLITTLE_ENDIAN) --- 112,120 ---- fc_KeySchedule schedule, int encrypt) { afs_uint32 L, R; ! volatile afs_uint32 S, P; ! volatile unsigned char *Pchar = (unsigned char *)&P; ! volatile unsigned char *Schar = (unsigned char *)&S; int i; #if defined(vax) || (defined(mips) && defined(MIPSEL)) || defined(AFSLITTLE_ENDIAN) Index: openafs/src/util/softsig.c diff -c openafs/src/util/softsig.c:1.8 openafs/src/util/softsig.c:1.8.2.1 *** openafs/src/util/softsig.c:1.8 Sat Dec 27 20:26:32 2003 --- openafs/src/util/softsig.c Thu Jun 2 00:41:30 2005 *************** *** 36,44 **** static struct { void (*handler) (int); int pending; ! #if !defined(AFS_DARWIN60_ENV) int fatal; ! #endif /* !defined(AFS_DARWIN60_ENV) */ int inited; } softsig_sigs[NSIG]; --- 36,44 ---- static struct { void (*handler) (int); int pending; ! #if !defined(AFS_DARWIN60_ENV) || !defined(AFS_NBSD_ENV) int fatal; ! #endif /* !defined(AFS_DARWIN60_ENV) || !defined(AFS_NBSD_ENV) */ int inited; } softsig_sigs[NSIG]; *************** *** 53,69 **** pthread_sigmask(SIG_BLOCK, &ss, &os); pthread_sigmask(SIG_SETMASK, &os, NULL); sigaddset(&ss, SIGUSR1); ! #if defined(AFS_DARWIN60_ENV) pthread_sigmask (SIG_BLOCK, &ss, NULL); sigdelset (&os, SIGUSR1); ! #else /* !defined(AFS_DARWIN60_ENV) */ for (i = 0; i < NSIG; i++) { if (!sigismember(&os, i) && i != SIGSTOP && i != SIGKILL) { sigaddset(&ss, i); softsig_sigs[i].fatal = 1; } } ! #endif /* defined(AFS_DARWIN60_ENV) */ while (1) { void (*h) (int); --- 53,69 ---- pthread_sigmask(SIG_BLOCK, &ss, &os); pthread_sigmask(SIG_SETMASK, &os, NULL); sigaddset(&ss, SIGUSR1); ! #if defined(AFS_DARWIN60_ENV) || defined(AFS_NBSD_ENV) pthread_sigmask (SIG_BLOCK, &ss, NULL); sigdelset (&os, SIGUSR1); ! #else /* !defined(AFS_DARWIN60_ENV) && !defined(AFS_NBSD_ENV) */ for (i = 0; i < NSIG; i++) { if (!sigismember(&os, i) && i != SIGSTOP && i != SIGKILL) { sigaddset(&ss, i); softsig_sigs[i].fatal = 1; } } ! #endif /* defined(AFS_DARWIN60_ENV) || defined(AFS_NBSD_ENV) */ while (1) { void (*h) (int); *************** *** 74,83 **** for (i = 0; i < NSIG; i++) { if (softsig_sigs[i].handler && !softsig_sigs[i].inited) { sigaddset(&ss, i); ! #if defined(AFS_DARWIN60_ENV) pthread_sigmask (SIG_BLOCK, &ss, NULL); sigdelset (&os, i); ! #endif /* defined(AFS_DARWIN60_ENV) */ softsig_sigs[i].inited = 1; } if (softsig_sigs[i].pending) { --- 74,83 ---- for (i = 0; i < NSIG; i++) { if (softsig_sigs[i].handler && !softsig_sigs[i].inited) { sigaddset(&ss, i); ! #if defined(AFS_DARWIN60_ENV) || defined(AFS_NBSD_ENV) pthread_sigmask (SIG_BLOCK, &ss, NULL); sigdelset (&os, i); ! #endif /* defined(AFS_DARWIN60_ENV) || defined(AFS_NBSD_ENV) */ softsig_sigs[i].inited = 1; } if (softsig_sigs[i].pending) { *************** *** 87,102 **** } } if (i == NSIG) { ! #if defined(AFS_DARWIN60_ENV) sigsuspend (&os); ! #else /* !defined(AFS_DARWIN60_ENV) */ sigwait(&ss, &sigw); if (sigw != SIGUSR1) { if (softsig_sigs[sigw].fatal) exit(0); softsig_sigs[sigw].pending = 1; } ! #endif /* defined(AFS_DARWIN60_ENV) */ } else if (h) h(i); } --- 87,102 ---- } } if (i == NSIG) { ! #if defined(AFS_DARWIN60_ENV) || defined(AFS_NBSD_ENV) sigsuspend (&os); ! #else /* !defined(AFS_DARWIN60_ENV) && !defined(AFS_NBSD_ENV) */ sigwait(&ss, &sigw); if (sigw != SIGUSR1) { if (softsig_sigs[sigw].fatal) exit(0); softsig_sigs[sigw].pending = 1; } ! #endif /* defined(AFS_DARWIN60_ENV) || defined(AFS_NBSD_ENV) */ } else if (h) h(i); }