From: Jeffrey Altman Date: Mon, 20 Feb 2012 06:48:20 +0000 (-0500) Subject: Windows: fsLockCount not accurate X-Git-Tag: upstream/1.8.0_pre1^2~2735 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=08d800b896db688cd96d742781e8225c9e58ef57;p=packages%2Fo%2Fopenafs.git Windows: fsLockCount not accurate Prior to 1.6.2 the file server does not report an accurate value for the lock state. In addition, callbacks are not broken when locks are freed due to lease expiration. Change-Id: I5b79d1d59c2ace9834cf23dfbef33e343ce6dda0 Reviewed-on: http://gerrit.openafs.org/6741 Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- diff --git a/src/WINNT/afsd/cm_vnodeops.c b/src/WINNT/afsd/cm_vnodeops.c index c857a5f4d..91dbcf1cd 100644 --- a/src/WINNT/afsd/cm_vnodeops.c +++ b/src/WINNT/afsd/cm_vnodeops.c @@ -4527,13 +4527,19 @@ long cm_IntSetLock(cm_scache_t * scp, cm_user_t * userp, int lockType, osi_Log2(afsd_logp, "CALL SetLock scp 0x%p for lock %d", scp, lockType); - if ((lockType != LOCKING_ANDX_SHARED_LOCK && scp->fsLockCount != 0) || - (lockType == LOCKING_ANDX_SHARED_LOCK && scp->fsLockCount < 0)) - { - code = CM_ERROR_LOCK_NOT_GRANTED; +#if 0 + /* + * The file server prior to 1.6.2 does not report an accurate value + * and callbacks are not issued if the lock is dropped due to expiration. + */ + if ((lockType != LOCKING_ANDX_SHARED_LOCK && scp->fsLockCount != 0) || + (lockType == LOCKING_ANDX_SHARED_LOCK && scp->fsLockCount < 0)) + { + code = CM_ERROR_LOCK_NOT_GRANTED; osi_Log2(afsd_logp, "CALL SetLock FAILURE, fsLockCount %d code 0x%x", scp->fsLockCount, code); - return code; - } + return code; + } +#endif memset(&volSync, 0, sizeof(volSync));