From ccd13d1f80b3036d63d78c3d8b8bf70a70f200ff Mon Sep 17 00:00:00 2001 From: drh Date: Wed, 5 May 2010 19:09:49 +0000 Subject: Further simplifications to the SHM locking logic. Remove the SQLITE_SHM_QUERY option. Unify the WRITE to READ and RECOVER to READ transitions. FossilOrigin-Name: e9bfa6e4ce7d1edc6be8b9173ac3b6bfd180632a --- src/os_unix.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) (limited to 'src/os_unix.c') diff --git a/src/os_unix.c b/src/os_unix.c index daca1c365..34f98f55a 100644 --- a/src/os_unix.c +++ b/src/os_unix.c @@ -5266,8 +5266,7 @@ static int unixShmLock( ** directly requested; they are side effects from requesting ** SQLITE_SHM_READ and SQLITE_SHM_CHECKPOINT, respectively. */ - assert( desiredLock==SQLITE_SHM_QUERY - || desiredLock==SQLITE_SHM_UNLOCK + assert( desiredLock==SQLITE_SHM_UNLOCK || desiredLock==SQLITE_SHM_READ || desiredLock==SQLITE_SHM_WRITE || desiredLock==SQLITE_SHM_CHECKPOINT @@ -5276,8 +5275,7 @@ static int unixShmLock( /* Return directly if this is just a lock state query, or if ** the connection is already in the desired locking state. */ - if( desiredLock==SQLITE_SHM_QUERY - || desiredLock==p->lockState + if( desiredLock==p->lockState || (desiredLock==SQLITE_SHM_READ && p->lockState==SQLITE_SHM_READ_FULL) ){ OSTRACE(("SHM-LOCK shmid-%d, pid-%d request %s and got %s\n", @@ -5320,15 +5318,12 @@ static int unixShmLock( p->lockState = SQLITE_SHM_READ; } } - }else if( p->lockState==SQLITE_SHM_WRITE ){ + }else{ + assert( p->lockState==SQLITE_SHM_WRITE + || p->lockState==SQLITE_SHM_RECOVER ); rc = unixShmSharedLock(pFile, p, UNIX_SHM_A); unixShmUnlock(pFile, p, UNIX_SHM_C|UNIX_SHM_D); p->lockState = SQLITE_SHM_READ; - }else{ - assert( p->lockState==SQLITE_SHM_RECOVER ); - unixShmUnlock(pFile, p, UNIX_SHM_C); - p->lockState = SQLITE_SHM_READ; - rc = SQLITE_OK; } break; } -- cgit v1.2.3