From: Jeffrey Altman Date: Tue, 31 May 2005 18:36:57 +0000 (+0000) Subject: STABLE14-windows-more-races-20050531 X-Git-Tag: openafs-devel-1_3_83~2 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=23eeafd5fd8693794278701312912cd68594b76c;p=packages%2Fo%2Fopenafs.git STABLE14-windows-more-races-20050531 a couple of more locations at which cm_SyncOpDone() either was not called or was called without holding the scache mutex. (cherry picked from commit 528c511aabaefcafc01361c8038766ce56fe8e45) --- diff --git a/src/WINNT/afsd/cm_dcache.c b/src/WINNT/afsd/cm_dcache.c index d5d7c70a7..cd7d1c0df 100644 --- a/src/WINNT/afsd/cm_dcache.c +++ b/src/WINNT/afsd/cm_dcache.c @@ -670,6 +670,7 @@ long cm_SetupStoreBIOD(cm_scache_t *scp, osi_hyper_t *inOffsetp, long inSize, osi_assertx(!(bufp->flags & CM_BUF_WRITING), "WRITING w/o CMSTORING in SetupStoreBIOD"); bufp->flags |= CM_BUF_WRITING; + cm_SyncOpDone(scp, bufp, flags); break; } diff --git a/src/WINNT/afsd/cm_vnodeops.c b/src/WINNT/afsd/cm_vnodeops.c index 2cfcf8cb3..555023aec 100644 --- a/src/WINNT/afsd/cm_vnodeops.c +++ b/src/WINNT/afsd/cm_vnodeops.c @@ -2599,8 +2599,10 @@ long cm_Rename(cm_scache_t *oldDscp, char *oldNamep, cm_scache_t *newDscp, lock_ReleaseMutex(&newDscp->mx); if (code) { /* cleanup first one */ + lock_ObtainMutex(&newDscp->mx); cm_SyncOpDone(oldDscp, NULL, CM_SCACHESYNC_STOREDATA); + lock_ReleaseMutex(&oldDscp->mx); } } } @@ -2619,8 +2621,10 @@ long cm_Rename(cm_scache_t *oldDscp, char *oldNamep, cm_scache_t *newDscp, lock_ReleaseMutex(&oldDscp->mx); if (code) { /* cleanup first one */ + lock_ObtainMutex(&newDscp->mx); cm_SyncOpDone(newDscp, NULL, CM_SCACHESYNC_STOREDATA); + lock_ReleaseMutex(&newDscp->mx); } } }