From: Jeffrey Altman Date: Mon, 5 Sep 2011 14:11:09 +0000 (-0400) Subject: Windows: use lock conversion in cm_EndDirOp X-Git-Tag: upstream/1.6.1.pre1^2~114 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=be4987fac067fd72166e46cfc883a89af06a2b27;p=packages%2Fo%2Fopenafs.git Windows: use lock conversion in cm_EndDirOp Instead of dropping the lock for read and reacquiring for write use lock_ConvertRToW() which will make the change atomicly if it is possible or place the thread into the wait list if not. LICENSE MIT Reviewed-on: http://gerrit.openafs.org/5360 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman (cherry picked from commit 33af0f92e9b8a50c5a6dd17a9065c0ef58597c28) Change-Id: Id92298fa848becb4131139579fd31b0c5f98a4ad Reviewed-on: http://gerrit.openafs.org/6032 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- diff --git a/src/WINNT/afsd/cm_dir.c b/src/WINNT/afsd/cm_dir.c index f7db9b039..9f5624d71 100644 --- a/src/WINNT/afsd/cm_dir.c +++ b/src/WINNT/afsd/cm_dir.c @@ -1206,8 +1206,9 @@ cm_EndDirOp(cm_dirOp_t * op) switch (op->lockType) { case CM_DIRLOCK_READ: - lock_ReleaseRead(&op->scp->dirlock); - /* fall through ... */ + lock_ConvertRToW(&op->scp->dirlock); + op->lockType = CM_DIRLOCK_WRITE; + break; case CM_DIRLOCK_NONE: lock_ObtainWrite(&op->scp->dirlock); op->lockType = CM_DIRLOCK_WRITE;