Lines Matching refs:pFile
26754 sqlite3_file *pFile, in sqlite3OsOpen() argument
26765 rc = pVfs->xOpen(pVfs, zPath, pFile, flags & 0x1087f7f, pFlagsOut); in sqlite3OsOpen()
26766 assert( rc==SQLITE_OK || pFile->pMethods==0 ); in sqlite3OsOpen()
26852 sqlite3_file *pFile; in sqlite3OsOpenMalloc() local
26853 pFile = (sqlite3_file *)sqlite3MallocZero(pVfs->szOsFile); in sqlite3OsOpenMalloc()
26854 if( pFile ){ in sqlite3OsOpenMalloc()
26855 rc = sqlite3OsOpen(pVfs, zFile, pFile, flags, pOutFlags); in sqlite3OsOpenMalloc()
26857 sqlite3_free(pFile); in sqlite3OsOpenMalloc()
26860 *ppFile = pFile; in sqlite3OsOpenMalloc()
26869 SQLITE_PRIVATE void sqlite3OsCloseFree(sqlite3_file *pFile){ in sqlite3OsCloseFree() argument
26870 assert( pFile ); in sqlite3OsCloseFree()
26871 sqlite3OsClose(pFile); in sqlite3OsCloseFree()
26872 sqlite3_free(pFile); in sqlite3OsCloseFree()
38305 KVVfsFile *pFile, /* Store decoding in pFile->aJrnl */ in kvvfsDecodeJournal() argument
38317 sqlite3_free(pFile->aJrnl); in kvvfsDecodeJournal()
38318 pFile->aJrnl = sqlite3_malloc64( n ); in kvvfsDecodeJournal()
38319 if( pFile->aJrnl==0 ){ in kvvfsDecodeJournal()
38320 pFile->nJrnl = 0; in kvvfsDecodeJournal()
38323 pFile->nJrnl = n; in kvvfsDecodeJournal()
38324 n = kvvfsDecode(zTxt+i, pFile->aJrnl, pFile->nJrnl); in kvvfsDecodeJournal()
38325 if( n<pFile->nJrnl ){ in kvvfsDecodeJournal()
38326 sqlite3_free(pFile->aJrnl); in kvvfsDecodeJournal()
38327 pFile->aJrnl = 0; in kvvfsDecodeJournal()
38328 pFile->nJrnl = 0; in kvvfsDecodeJournal()
38335 static sqlite3_int64 kvvfsReadFileSize(KVVfsFile *pFile){ in kvvfsReadFileSize() argument
38338 sqlite3KvvfsMethods.xRead(pFile->zClass, "sz", zData, sizeof(zData)-1); in kvvfsReadFileSize()
38341 static int kvvfsWriteFileSize(KVVfsFile *pFile, sqlite3_int64 sz){ in kvvfsWriteFileSize() argument
38344 return sqlite3KvvfsMethods.xWrite(pFile->zClass, "sz", zData); in kvvfsWriteFileSize()
38353 KVVfsFile *pFile = (KVVfsFile *)pProtoFile; in kvvfsClose() local
38355 SQLITE_KV_LOG(("xClose %s %s\n", pFile->zClass, in kvvfsClose()
38356 pFile->isJournal ? "journal" : "db")); in kvvfsClose()
38357 sqlite3_free(pFile->aJrnl); in kvvfsClose()
38358 sqlite3_free(pFile->aData); in kvvfsClose()
38371 KVVfsFile *pFile = (KVVfsFile*)pProtoFile; in kvvfsReadJrnl() local
38372 assert( pFile->isJournal ); in kvvfsReadJrnl()
38373 SQLITE_KV_LOG(("xRead('%s-journal',%d,%lld)\n", pFile->zClass, iAmt, iOfst)); in kvvfsReadJrnl()
38374 if( pFile->aJrnl==0 ){ in kvvfsReadJrnl()
38375 int szTxt = kvstorageRead(pFile->zClass, "jrnl", 0, 0); in kvvfsReadJrnl()
38382 kvstorageRead(pFile->zClass, "jrnl", aTxt, szTxt+1); in kvvfsReadJrnl()
38383 kvvfsDecodeJournal(pFile, aTxt, szTxt); in kvvfsReadJrnl()
38385 if( pFile->aJrnl==0 ) return SQLITE_IOERR; in kvvfsReadJrnl()
38387 if( iOfst+iAmt>pFile->nJrnl ){ in kvvfsReadJrnl()
38390 memcpy(zBuf, pFile->aJrnl+iOfst, iAmt); in kvvfsReadJrnl()
38403 KVVfsFile *pFile = (KVVfsFile*)pProtoFile; in kvvfsReadDb() local
38407 char *aData = pFile->aData; in kvvfsReadDb()
38410 SQLITE_KV_LOG(("xRead('%s-db',%d,%lld)\n", pFile->zClass, iAmt, iOfst)); in kvvfsReadDb()
38418 pFile->szPage = iAmt; in kvvfsReadDb()
38424 got = sqlite3KvvfsMethods.xRead(pFile->zClass, zKey, in kvvfsReadDb()
38461 KVVfsFile *pFile = (KVVfsFile*)pProtoFile; in kvvfsWriteJrnl() local
38463 SQLITE_KV_LOG(("xWrite('%s-journal',%d,%lld)\n", pFile->zClass, iAmt, iOfst)); in kvvfsWriteJrnl()
38465 if( pFile->aJrnl==0 || pFile->nJrnl<iEnd ){ in kvvfsWriteJrnl()
38466 char *aNew = sqlite3_realloc(pFile->aJrnl, iEnd); in kvvfsWriteJrnl()
38470 pFile->aJrnl = aNew; in kvvfsWriteJrnl()
38471 if( pFile->nJrnl<iOfst ){ in kvvfsWriteJrnl()
38472 memset(pFile->aJrnl+pFile->nJrnl, 0, iOfst-pFile->nJrnl); in kvvfsWriteJrnl()
38474 pFile->nJrnl = iEnd; in kvvfsWriteJrnl()
38476 memcpy(pFile->aJrnl+iOfst, zBuf, iAmt); in kvvfsWriteJrnl()
38489 KVVfsFile *pFile = (KVVfsFile*)pProtoFile; in kvvfsWriteDb() local
38492 char *aData = pFile->aData; in kvvfsWriteDb()
38493 SQLITE_KV_LOG(("xWrite('%s-db',%d,%lld)\n", pFile->zClass, iAmt, iOfst)); in kvvfsWriteDb()
38496 assert( pFile->szPage<0 || pFile->szPage==iAmt ); in kvvfsWriteDb()
38497 pFile->szPage = iAmt; in kvvfsWriteDb()
38501 if( sqlite3KvvfsMethods.xWrite(pFile->zClass, zKey, aData) ){ in kvvfsWriteDb()
38504 if( iOfst+iAmt > pFile->szDb ){ in kvvfsWriteDb()
38505 pFile->szDb = iOfst + iAmt; in kvvfsWriteDb()
38514 KVVfsFile *pFile = (KVVfsFile *)pProtoFile; in kvvfsTruncateJrnl() local
38515 SQLITE_KV_LOG(("xTruncate('%s-journal',%lld)\n", pFile->zClass, size)); in kvvfsTruncateJrnl()
38517 sqlite3KvvfsMethods.xDelete(pFile->zClass, "jrnl"); in kvvfsTruncateJrnl()
38518 sqlite3_free(pFile->aJrnl); in kvvfsTruncateJrnl()
38519 pFile->aJrnl = 0; in kvvfsTruncateJrnl()
38520 pFile->nJrnl = 0; in kvvfsTruncateJrnl()
38524 KVVfsFile *pFile = (KVVfsFile *)pProtoFile; in kvvfsTruncateDb() local
38525 if( pFile->szDb>size in kvvfsTruncateDb()
38526 && pFile->szPage>0 in kvvfsTruncateDb()
38527 && (size % pFile->szPage)==0 in kvvfsTruncateDb()
38531 SQLITE_KV_LOG(("xTruncate('%s-db',%lld)\n", pFile->zClass, size)); in kvvfsTruncateDb()
38532 pgno = 1 + size/pFile->szPage; in kvvfsTruncateDb()
38533 pgnoMax = 2 + pFile->szDb/pFile->szPage; in kvvfsTruncateDb()
38536 sqlite3KvvfsMethods.xDelete(pFile->zClass, zKey); in kvvfsTruncateDb()
38539 pFile->szDb = size; in kvvfsTruncateDb()
38540 return kvvfsWriteFileSize(pFile, size) ? SQLITE_IOERR : SQLITE_OK; in kvvfsTruncateDb()
38550 KVVfsFile *pFile = (KVVfsFile *)pProtoFile; in kvvfsSyncJrnl() local
38552 SQLITE_KV_LOG(("xSync('%s-journal')\n", pFile->zClass)); in kvvfsSyncJrnl()
38553 if( pFile->nJrnl<=0 ){ in kvvfsSyncJrnl()
38556 zOut = sqlite3_malloc64( pFile->nJrnl*2 + 50 ); in kvvfsSyncJrnl()
38560 n = pFile->nJrnl; in kvvfsSyncJrnl()
38567 kvvfsEncode(pFile->aJrnl, pFile->nJrnl, &zOut[i]); in kvvfsSyncJrnl()
38568 i = sqlite3KvvfsMethods.xWrite(pFile->zClass, "jrnl", zOut); in kvvfsSyncJrnl()
38580 KVVfsFile *pFile = (KVVfsFile *)pProtoFile; in kvvfsFileSizeJrnl() local
38581 SQLITE_KV_LOG(("xFileSize('%s-journal')\n", pFile->zClass)); in kvvfsFileSizeJrnl()
38582 *pSize = pFile->nJrnl; in kvvfsFileSizeJrnl()
38586 KVVfsFile *pFile = (KVVfsFile *)pProtoFile; in kvvfsFileSizeDb() local
38587 SQLITE_KV_LOG(("xFileSize('%s-db')\n", pFile->zClass)); in kvvfsFileSizeDb()
38588 if( pFile->szDb>=0 ){ in kvvfsFileSizeDb()
38589 *pSize = pFile->szDb; in kvvfsFileSizeDb()
38591 *pSize = kvvfsReadFileSize(pFile); in kvvfsFileSizeDb()
38600 KVVfsFile *pFile = (KVVfsFile *)pProtoFile; in kvvfsLock() local
38601 assert( !pFile->isJournal ); in kvvfsLock()
38602 SQLITE_KV_LOG(("xLock(%s,%d)\n", pFile->zClass, eLock)); in kvvfsLock()
38605 pFile->szDb = kvvfsReadFileSize(pFile); in kvvfsLock()
38614 KVVfsFile *pFile = (KVVfsFile *)pProtoFile; in kvvfsUnlock() local
38615 assert( !pFile->isJournal ); in kvvfsUnlock()
38616 SQLITE_KV_LOG(("xUnlock(%s,%d)\n", pFile->zClass, eLock)); in kvvfsUnlock()
38618 pFile->szDb = -1; in kvvfsUnlock()
38642 KVVfsFile *pFile = (KVVfsFile *)pProtoFile; in kvvfsFileControlDb() local
38644 SQLITE_KV_LOG(("xSync('%s-db')\n", pFile->zClass)); in kvvfsFileControlDb()
38645 if( pFile->szDb>0 && 0!=kvvfsWriteFileSize(pFile, pFile->szDb) ){ in kvvfsFileControlDb()
38656 static int kvvfsSectorSize(sqlite3_file *pFile){ in kvvfsSectorSize() argument
38679 KVVfsFile *pFile = (KVVfsFile*)pProtoFile; in kvvfsOpen() local
38685 pFile->isJournal = 0; in kvvfsOpen()
38686 pFile->base.pMethods = &kvvfs_db_io_methods; in kvvfsOpen()
38691 pFile->isJournal = 1; in kvvfsOpen()
38692 pFile->base.pMethods = &kvvfs_jrnl_io_methods; in kvvfsOpen()
38697 pFile->zClass = "session"; in kvvfsOpen()
38699 pFile->zClass = "local"; in kvvfsOpen()
38701 pFile->aData = sqlite3_malloc64(SQLITE_KVOS_SZ); in kvvfsOpen()
38702 if( pFile->aData==0 ){ in kvvfsOpen()
38705 pFile->aJrnl = 0; in kvvfsOpen()
38706 pFile->nJrnl = 0; in kvvfsOpen()
38707 pFile->szPage = -1; in kvvfsOpen()
38708 pFile->szDb = -1; in kvvfsOpen()
40086 int unixFileMutexHeld(unixFile *pFile){ in unixFileMutexHeld() argument
40087 assert( pFile->pInode ); in unixFileMutexHeld()
40088 return sqlite3_mutex_held(pFile->pInode->pLockMutex); in unixFileMutexHeld()
40090 int unixFileMutexNotheld(unixFile *pFile){ in unixFileMutexNotheld() argument
40091 assert( pFile->pInode ); in unixFileMutexNotheld()
40092 return sqlite3_mutex_notheld(pFile->pInode->pLockMutex); in unixFileMutexNotheld()
40182 static void robust_close(unixFile *pFile, int h, int lineno){ in robust_close() argument
40185 pFile ? pFile->zPath : 0, lineno); in robust_close()
40193 static void storeLastErrno(unixFile *pFile, int error){ in storeLastErrno() argument
40194 pFile->lastErrno = error; in storeLastErrno()
40200 static void closePendingFds(unixFile *pFile){ in closePendingFds() argument
40201 unixInodeInfo *pInode = pFile->pInode; in closePendingFds()
40204 assert( unixFileMutexHeld(pFile) ); in closePendingFds()
40207 robust_close(pFile, p->fd, __LINE__); in closePendingFds()
40219 static void releaseInodeInfo(unixFile *pFile){ in releaseInodeInfo() argument
40220 unixInodeInfo *pInode = pFile->pInode; in releaseInodeInfo()
40222 assert( unixFileMutexNotheld(pFile) ); in releaseInodeInfo()
40228 closePendingFds(pFile); in releaseInodeInfo()
40257 unixFile *pFile, /* Unix file with file desc used in the key */ in findInodeInfo() argument
40271 fd = pFile->h; in findInodeInfo()
40274 storeLastErrno(pFile, errno); in findInodeInfo()
40276 if( pFile->lastErrno==EOVERFLOW ) return SQLITE_NOLFS; in findInodeInfo()
40292 if( statbuf.st_size==0 && (pFile->fsFlags & SQLITE_FSFLAGS_IS_MSDOS)!=0 ){ in findInodeInfo()
40295 storeLastErrno(pFile, errno); in findInodeInfo()
40300 storeLastErrno(pFile, errno); in findInodeInfo()
40309 fileId.pId = pFile->pId; in findInodeInfo()
40348 static int fileHasMoved(unixFile *pFile){ in fileHasMoved() argument
40350 return pFile->pInode!=0 && pFile->pId!=pFile->pInode->fileId.pId; in fileHasMoved()
40353 return pFile->pInode!=0 && in fileHasMoved()
40354 (osStat(pFile->zPath, &buf)!=0 in fileHasMoved()
40355 || (u64)buf.st_ino!=pFile->pInode->fileId.ino); in fileHasMoved()
40369 static void verifyDbFile(unixFile *pFile){ in verifyDbFile() argument
40374 if( pFile->ctrlFlags & UNIXFILE_NOLOCK ) return; in verifyDbFile()
40376 rc = osFstat(pFile->h, &buf); in verifyDbFile()
40378 sqlite3_log(SQLITE_WARNING, "cannot fstat db file %s", pFile->zPath); in verifyDbFile()
40382 sqlite3_log(SQLITE_WARNING, "file unlinked while open: %s", pFile->zPath); in verifyDbFile()
40386 sqlite3_log(SQLITE_WARNING, "multiple links to file: %s", pFile->zPath); in verifyDbFile()
40389 if( fileHasMoved(pFile) ){ in verifyDbFile()
40390 sqlite3_log(SQLITE_WARNING, "file renamed while open: %s", pFile->zPath); in verifyDbFile()
40405 unixFile *pFile = (unixFile*)id; in unixCheckReservedLock() local
40409 assert( pFile ); in unixCheckReservedLock()
40410 assert( pFile->eFileLock<=SHARED_LOCK ); in unixCheckReservedLock()
40411 sqlite3_mutex_enter(pFile->pInode->pLockMutex); in unixCheckReservedLock()
40414 if( pFile->pInode->eFileLock>SHARED_LOCK ){ in unixCheckReservedLock()
40421 if( !reserved && !pFile->pInode->bProcessLock ){ in unixCheckReservedLock()
40427 if( osFcntl(pFile->h, F_GETLK, &lock) ){ in unixCheckReservedLock()
40429 storeLastErrno(pFile, errno); in unixCheckReservedLock()
40436 sqlite3_mutex_leave(pFile->pInode->pLockMutex); in unixCheckReservedLock()
40437 OSTRACE(("TEST WR-LOCK %d %d %d (unix)\n", pFile->h, rc, reserved)); in unixCheckReservedLock()
40465 unixFile *pFile /* Structure holding timeout value */ in osSetPosixAdvisoryLock() argument
40467 int tm = pFile->iBusyTimeout; in osSetPosixAdvisoryLock()
40503 static int unixFileLock(unixFile *pFile, struct flock *pLock){ in unixFileLock() argument
40505 unixInodeInfo *pInode = pFile->pInode; in unixFileLock()
40508 if( (pFile->ctrlFlags & (UNIXFILE_EXCL|UNIXFILE_RDONLY))==UNIXFILE_EXCL ){ in unixFileLock()
40516 rc = osSetPosixAdvisoryLock(pFile->h, &lock, pFile); in unixFileLock()
40525 if( pFile->bBlockOnConnect && pLock->l_type==F_RDLCK in unixFileLock()
40528 rc = osFcntl(pFile->h, F_SETLKW, pLock); in unixFileLock()
40531 rc = osSetPosixAdvisoryLock(pFile->h, pLock, pFile); in unixFileLock()
40602 unixFile *pFile = (unixFile*)id; in unixLock() local
40607 assert( pFile ); in unixLock()
40608 OSTRACE(("LOCK %d %s was %s(%s,%d) pid=%d (unix)\n", pFile->h, in unixLock()
40609 azFileLock(eFileLock), azFileLock(pFile->eFileLock), in unixLock()
40610 azFileLock(pFile->pInode->eFileLock), pFile->pInode->nShared, in unixLock()
40617 if( pFile->eFileLock>=eFileLock ){ in unixLock()
40618 OSTRACE(("LOCK %d %s ok (already held) (unix)\n", pFile->h, in unixLock()
40628 assert( pFile->eFileLock!=NO_LOCK || eFileLock==SHARED_LOCK ); in unixLock()
40630 assert( eFileLock!=RESERVED_LOCK || pFile->eFileLock==SHARED_LOCK ); in unixLock()
40634 pInode = pFile->pInode; in unixLock()
40640 if( (pFile->eFileLock!=pInode->eFileLock && in unixLock()
40654 assert( pFile->eFileLock==0 ); in unixLock()
40656 pFile->eFileLock = SHARED_LOCK; in unixLock()
40670 || (eFileLock==EXCLUSIVE_LOCK && pFile->eFileLock==RESERVED_LOCK) in unixLock()
40674 if( unixFileLock(pFile, &lock) ){ in unixLock()
40678 storeLastErrno(pFile, tErrno); in unixLock()
40682 pFile->eFileLock = PENDING_LOCK; in unixLock()
40699 if( unixFileLock(pFile, &lock) ){ in unixLock()
40708 if( unixFileLock(pFile, &lock) && rc==SQLITE_OK ){ in unixLock()
40716 storeLastErrno(pFile, tErrno); in unixLock()
40720 pFile->eFileLock = SHARED_LOCK; in unixLock()
40733 assert( 0!=pFile->eFileLock ); in unixLock()
40745 if( unixFileLock(pFile, &lock) ){ in unixLock()
40749 storeLastErrno(pFile, tErrno); in unixLock()
40762 && pFile->eFileLock<=SHARED_LOCK in unixLock()
40765 pFile->transCntrChng = 0; in unixLock()
40766 pFile->dbUpdate = 0; in unixLock()
40767 pFile->inNormalWrite = 1; in unixLock()
40772 pFile->eFileLock = eFileLock; in unixLock()
40778 OSTRACE(("LOCK %d %s %s (unix)\n", pFile->h, azFileLock(eFileLock), in unixLock()
40787 static void setPendingFd(unixFile *pFile){ in setPendingFd() argument
40788 unixInodeInfo *pInode = pFile->pInode; in setPendingFd()
40789 UnixUnusedFd *p = pFile->pPreallocatedUnused; in setPendingFd()
40790 assert( unixFileMutexHeld(pFile) ); in setPendingFd()
40793 pFile->h = -1; in setPendingFd()
40794 pFile->pPreallocatedUnused = 0; in setPendingFd()
40811 unixFile *pFile = (unixFile*)id; in posixUnlock() local
40816 assert( pFile ); in posixUnlock()
40817 OSTRACE(("UNLOCK %d %d was %d(%d,%d) pid=%d (unix)\n", pFile->h, eFileLock, in posixUnlock()
40818 pFile->eFileLock, pFile->pInode->eFileLock, pFile->pInode->nShared, in posixUnlock()
40822 if( pFile->eFileLock<=eFileLock ){ in posixUnlock()
40825 pInode = pFile->pInode; in posixUnlock()
40828 if( pFile->eFileLock>SHARED_LOCK ){ in posixUnlock()
40829 assert( pInode->eFileLock==pFile->eFileLock ); in posixUnlock()
40840 pFile->inNormalWrite = 0; in posixUnlock()
40866 if( unixFileLock(pFile, &lock)==(-1) ){ in posixUnlock()
40869 storeLastErrno(pFile, tErrno); in posixUnlock()
40876 if( unixFileLock(pFile, &lock)==(-1) ){ in posixUnlock()
40880 storeLastErrno(pFile, tErrno); in posixUnlock()
40888 if( unixFileLock(pFile, &lock)==(-1) ){ in posixUnlock()
40891 storeLastErrno(pFile, tErrno); in posixUnlock()
40901 if( unixFileLock(pFile, &lock) ){ in posixUnlock()
40909 storeLastErrno(pFile, errno); in posixUnlock()
40918 if( unixFileLock(pFile, &lock)==0 ){ in posixUnlock()
40922 storeLastErrno(pFile, errno); in posixUnlock()
40936 if( unixFileLock(pFile, &lock)==0 ){ in posixUnlock()
40940 storeLastErrno(pFile, errno); in posixUnlock()
40942 pFile->eFileLock = NO_LOCK; in posixUnlock()
40952 if( pInode->nLock==0 ) closePendingFds(pFile); in posixUnlock()
40958 pFile->eFileLock = eFileLock; in posixUnlock()
40993 unixFile *pFile = (unixFile*)id; in closeUnixFile() local
40995 unixUnmapfile(pFile); in closeUnixFile()
40997 if( pFile->h>=0 ){ in closeUnixFile()
40998 robust_close(pFile, pFile->h, __LINE__); in closeUnixFile()
40999 pFile->h = -1; in closeUnixFile()
41002 if( pFile->pId ){ in closeUnixFile()
41003 if( pFile->ctrlFlags & UNIXFILE_DELETE ){ in closeUnixFile()
41004 osUnlink(pFile->pId->zCanonicalName); in closeUnixFile()
41006 vxworksReleaseFileId(pFile->pId); in closeUnixFile()
41007 pFile->pId = 0; in closeUnixFile()
41011 if( pFile->ctrlFlags & UNIXFILE_DELETE ){ in closeUnixFile()
41012 osUnlink(pFile->zPath); in closeUnixFile()
41013 sqlite3_free(*(char**)&pFile->zPath); in closeUnixFile()
41014 pFile->zPath = 0; in closeUnixFile()
41017 OSTRACE(("CLOSE %-3d\n", pFile->h)); in closeUnixFile()
41019 sqlite3_free(pFile->pPreallocatedUnused); in closeUnixFile()
41020 memset(pFile, 0, sizeof(unixFile)); in closeUnixFile()
41029 unixFile *pFile = (unixFile *)id; in unixClose() local
41030 unixInodeInfo *pInode = pFile->pInode; in unixClose()
41033 verifyDbFile(pFile); in unixClose()
41035 assert( unixFileMutexNotheld(pFile) ); in unixClose()
41041 assert( pFile->pInode->nLock>0 || pFile->pInode->bProcessLock==0 ); in unixClose()
41049 setPendingFd(pFile); in unixClose()
41052 releaseInodeInfo(pFile); in unixClose()
41053 assert( pFile->pShm==0 ); in unixClose()
41139 unixFile *pFile = (unixFile*)id; in dotlockCheckReservedLock() local
41142 if( pFile->eFileLock>=SHARED_LOCK ){ in dotlockCheckReservedLock()
41145 *pResOut = osAccess((const char*)pFile->lockingContext, 0)==0; in dotlockCheckReservedLock()
41147 OSTRACE(("TEST WR-LOCK %d %d %d (dotlock)\n", pFile->h, 0, *pResOut)); in dotlockCheckReservedLock()
41179 unixFile *pFile = (unixFile*)id; in dotlockLock() local
41180 char *zLockFile = (char *)pFile->lockingContext; in dotlockLock()
41187 if( pFile->eFileLock > NO_LOCK ){ in dotlockLock()
41188 pFile->eFileLock = eFileLock; in dotlockLock()
41208 storeLastErrno(pFile, tErrno); in dotlockLock()
41215 pFile->eFileLock = eFileLock; in dotlockLock()
41229 unixFile *pFile = (unixFile*)id; in dotlockUnlock() local
41230 char *zLockFile = (char *)pFile->lockingContext; in dotlockUnlock()
41233 assert( pFile ); in dotlockUnlock()
41234 OSTRACE(("UNLOCK %d %d was %d pid=%d (dotlock)\n", pFile->h, eFileLock, in dotlockUnlock()
41235 pFile->eFileLock, osGetpid(0))); in dotlockUnlock()
41239 if( pFile->eFileLock==eFileLock ){ in dotlockUnlock()
41247 pFile->eFileLock = SHARED_LOCK; in dotlockUnlock()
41260 storeLastErrno(pFile, tErrno); in dotlockUnlock()
41264 pFile->eFileLock = NO_LOCK; in dotlockUnlock()
41272 unixFile *pFile = (unixFile*)id; in dotlockClose() local
41275 sqlite3_free(pFile->lockingContext); in dotlockClose()
41319 unixFile *pFile = (unixFile*)id; in flockCheckReservedLock() local
41326 assert( pFile ); in flockCheckReservedLock()
41327 assert( pFile->eFileLock<=SHARED_LOCK ); in flockCheckReservedLock()
41378 unixFile *pFile = (unixFile*)id; in flockLock() local
41380 assert( pFile ); in flockLock()
41384 if (pFile->eFileLock > NO_LOCK) { in flockLock()
41385 pFile->eFileLock = eFileLock; in flockLock()
41391 if (robust_flock(pFile->h, LOCK_EX | LOCK_NB)) { in flockLock()
41396 storeLastErrno(pFile, tErrno); in flockLock()
41400 pFile->eFileLock = eFileLock; in flockLock()
41402 OSTRACE(("LOCK %d %s %s (flock)\n", pFile->h, azFileLock(eFileLock), in flockLock()
41421 unixFile *pFile = (unixFile*)id; in flockUnlock() local
41423 assert( pFile ); in flockUnlock()
41424 OSTRACE(("UNLOCK %d %d was %d pid=%d (flock)\n", pFile->h, eFileLock, in flockUnlock()
41425 pFile->eFileLock, osGetpid(0))); in flockUnlock()
41429 if( pFile->eFileLock==eFileLock ){ in flockUnlock()
41435 pFile->eFileLock = eFileLock; in flockUnlock()
41440 if( robust_flock(pFile->h, LOCK_UN) ){ in flockUnlock()
41446 pFile->eFileLock = NO_LOCK; in flockUnlock()
41486 unixFile *pFile = (unixFile*)id; in semXCheckReservedLock() local
41490 assert( pFile ); in semXCheckReservedLock()
41493 if( pFile->eFileLock>SHARED_LOCK ){ in semXCheckReservedLock()
41499 sem_t *pSem = pFile->pInode->pSem; in semXCheckReservedLock()
41505 storeLastErrno(pFile, tErrno); in semXCheckReservedLock()
41508 reserved = (pFile->eFileLock < SHARED_LOCK); in semXCheckReservedLock()
41515 OSTRACE(("TEST WR-LOCK %d %d %d (sem)\n", pFile->h, rc, reserved)); in semXCheckReservedLock()
41551 unixFile *pFile = (unixFile*)id; in semXLock() local
41552 sem_t *pSem = pFile->pInode->pSem; in semXLock()
41557 if (pFile->eFileLock > NO_LOCK) { in semXLock()
41558 pFile->eFileLock = eFileLock; in semXLock()
41570 pFile->eFileLock = eFileLock; in semXLock()
41584 unixFile *pFile = (unixFile*)id; in semXUnlock() local
41585 sem_t *pSem = pFile->pInode->pSem; in semXUnlock()
41587 assert( pFile ); in semXUnlock()
41589 OSTRACE(("UNLOCK %d %d was %d pid=%d (sem)\n", pFile->h, eFileLock, in semXUnlock()
41590 pFile->eFileLock, osGetpid(0))); in semXUnlock()
41594 if( pFile->eFileLock==eFileLock ){ in semXUnlock()
41600 pFile->eFileLock = eFileLock; in semXUnlock()
41609 storeLastErrno(pFile, tErrno); in semXUnlock()
41613 pFile->eFileLock = NO_LOCK; in semXUnlock()
41622 unixFile *pFile = (unixFile*)id; in semXClose() local
41624 assert( pFile ); in semXClose()
41625 assert( unixFileMutexNotheld(pFile) ); in semXClose()
41627 releaseInodeInfo(pFile); in semXClose()
41682 unixFile *pFile, /* Open file descriptor on path */ in afpSetLock() argument
41694 pb.fd = pFile->h; in afpSetLock()
41697 (setLockFlag?"ON":"OFF"), pFile->h, (pb.fd==-1?"[testval-1]":""), in afpSetLock()
41712 storeLastErrno(pFile, tErrno); in afpSetLock()
41729 unixFile *pFile = (unixFile*)id; in afpCheckReservedLock() local
41734 assert( pFile ); in afpCheckReservedLock()
41735 context = (afpLockingContext *) pFile->lockingContext; in afpCheckReservedLock()
41740 sqlite3_mutex_enter(pFile->pInode->pLockMutex); in afpCheckReservedLock()
41742 if( pFile->pInode->eFileLock>SHARED_LOCK ){ in afpCheckReservedLock()
41750 int lrc = afpSetLock(context->dbPath, pFile, RESERVED_BYTE, 1,1); in afpCheckReservedLock()
41754 lrc = afpSetLock(context->dbPath, pFile, RESERVED_BYTE, 1, 0); in afpCheckReservedLock()
41764 sqlite3_mutex_leave(pFile->pInode->pLockMutex); in afpCheckReservedLock()
41765 OSTRACE(("TEST WR-LOCK %d %d %d (afp)\n", pFile->h, rc, reserved)); in afpCheckReservedLock()
41797 unixFile *pFile = (unixFile*)id; in afpLock() local
41798 unixInodeInfo *pInode = pFile->pInode; in afpLock()
41799 afpLockingContext *context = (afpLockingContext *) pFile->lockingContext; in afpLock()
41801 assert( pFile ); in afpLock()
41802 OSTRACE(("LOCK %d %s was %s(%s,%d) pid=%d (afp)\n", pFile->h, in afpLock()
41803 azFileLock(eFileLock), azFileLock(pFile->eFileLock), in afpLock()
41810 if( pFile->eFileLock>=eFileLock ){ in afpLock()
41811 OSTRACE(("LOCK %d %s ok (already held) (afp)\n", pFile->h, in afpLock()
41821 assert( pFile->eFileLock!=NO_LOCK || eFileLock==SHARED_LOCK ); in afpLock()
41823 assert( eFileLock!=RESERVED_LOCK || pFile->eFileLock==SHARED_LOCK ); in afpLock()
41827 pInode = pFile->pInode; in afpLock()
41833 if( (pFile->eFileLock!=pInode->eFileLock && in afpLock()
41847 assert( pFile->eFileLock==0 ); in afpLock()
41849 pFile->eFileLock = SHARED_LOCK; in afpLock()
41860 || (eFileLock==EXCLUSIVE_LOCK && pFile->eFileLock<PENDING_LOCK) in afpLock()
41863 failed = afpSetLock(context->dbPath, pFile, PENDING_BYTE, 1, 1); in afpLock()
41885 lrc1 = afpSetLock(context->dbPath, pFile, in afpLock()
41888 lrc1Errno = pFile->lastErrno; in afpLock()
41891 lrc2 = afpSetLock(context->dbPath, pFile, PENDING_BYTE, 1, 0); in afpLock()
41894 storeLastErrno(pFile, lrc1Errno); in afpLock()
41903 pFile->eFileLock = SHARED_LOCK; in afpLock()
41917 assert( 0!=pFile->eFileLock ); in afpLock()
41918 if (eFileLock >= RESERVED_LOCK && pFile->eFileLock < RESERVED_LOCK) { in afpLock()
41920 failed = afpSetLock(context->dbPath, pFile, RESERVED_BYTE, 1,1); in afpLock()
41931 if( !(failed = afpSetLock(context->dbPath, pFile, SHARED_FIRST + in afpLock()
41935 failed = afpSetLock(context->dbPath, pFile, SHARED_FIRST, in afpLock()
41937 if( failed && (failed2 = afpSetLock(context->dbPath, pFile, in afpLock()
41956 pFile->eFileLock = eFileLock; in afpLock()
41959 pFile->eFileLock = PENDING_LOCK; in afpLock()
41965 OSTRACE(("LOCK %d %s %s (afp)\n", pFile->h, azFileLock(eFileLock), in afpLock()
41979 unixFile *pFile = (unixFile*)id; in afpUnlock() local
41981 afpLockingContext *context = (afpLockingContext *) pFile->lockingContext; in afpUnlock()
41984 assert( pFile ); in afpUnlock()
41985 OSTRACE(("UNLOCK %d %d was %d(%d,%d) pid=%d (afp)\n", pFile->h, eFileLock, in afpUnlock()
41986 pFile->eFileLock, pFile->pInode->eFileLock, pFile->pInode->nShared, in afpUnlock()
41990 if( pFile->eFileLock<=eFileLock ){ in afpUnlock()
41993 pInode = pFile->pInode; in afpUnlock()
41996 if( pFile->eFileLock>SHARED_LOCK ){ in afpUnlock()
41997 assert( pInode->eFileLock==pFile->eFileLock ); in afpUnlock()
42008 assert( pFile->inNormalWrite==0 in afpUnlock()
42009 || pFile->dbUpdate==0 in afpUnlock()
42010 || pFile->transCntrChng==1 ); in afpUnlock()
42011 pFile->inNormalWrite = 0; in afpUnlock()
42014 if( pFile->eFileLock==EXCLUSIVE_LOCK ){ in afpUnlock()
42015 rc = afpSetLock(context->dbPath, pFile, SHARED_FIRST, SHARED_SIZE, 0); in afpUnlock()
42019 rc = afpSetLock(context->dbPath, pFile, sharedLockByte, 1, 1); in afpUnlock()
42024 if( rc==SQLITE_OK && pFile->eFileLock>=PENDING_LOCK ){ in afpUnlock()
42025 rc = afpSetLock(context->dbPath, pFile, PENDING_BYTE, 1, 0); in afpUnlock()
42027 if( rc==SQLITE_OK && pFile->eFileLock>=RESERVED_LOCK && context->reserved ){ in afpUnlock()
42028 rc = afpSetLock(context->dbPath, pFile, RESERVED_BYTE, 1, 0); in afpUnlock()
42047 rc = afpSetLock(context->dbPath, pFile, sharedLockByte, 1, 0); in afpUnlock()
42051 pFile->eFileLock = NO_LOCK; in afpUnlock()
42057 if( pInode->nLock==0 ) closePendingFds(pFile); in afpUnlock()
42063 pFile->eFileLock = eFileLock; in afpUnlock()
42073 unixFile *pFile = (unixFile*)id; in afpClose() local
42076 assert( unixFileMutexNotheld(pFile) ); in afpClose()
42078 if( pFile->pInode ){ in afpClose()
42079 unixInodeInfo *pInode = pFile->pInode; in afpClose()
42087 setPendingFd(pFile); in afpClose()
42091 releaseInodeInfo(pFile); in afpClose()
42092 sqlite3_free(pFile->lockingContext); in afpClose()
42204 unixFile *pFile = (unixFile *)id; in unixRead() local
42213 assert( pFile->pPreallocatedUnused==0 in unixRead()
42222 if( offset<pFile->mmapSize ){ in unixRead()
42223 if( offset+amt <= pFile->mmapSize ){ in unixRead()
42224 memcpy(pBuf, &((u8 *)(pFile->pMapRegion))[offset], amt); in unixRead()
42227 int nCopy = pFile->mmapSize - offset; in unixRead()
42228 memcpy(pBuf, &((u8 *)(pFile->pMapRegion))[offset], nCopy); in unixRead()
42236 got = seekAndRead(pFile, offset, pBuf, amt); in unixRead()
42247 switch( pFile->lastErrno ){ in unixRead()
42260 storeLastErrno(pFile, 0); /* not a system error */ in unixRead()
42335 unixFile *pFile = (unixFile*)id; in unixWrite() local
42343 assert( pFile->pPreallocatedUnused==0 in unixWrite()
42356 if( pFile->inNormalWrite ){ in unixWrite()
42357 pFile->dbUpdate = 1; /* The database has been modified */ in unixWrite()
42362 rc = seekAndRead(pFile, 24, oldCntr, 4); in unixWrite()
42365 pFile->transCntrChng = 1; /* The transaction counter has changed */ in unixWrite()
42374 if( offset<pFile->mmapSize ){ in unixWrite()
42375 if( offset+amt <= pFile->mmapSize ){ in unixWrite()
42376 memcpy(&((u8 *)(pFile->pMapRegion))[offset], pBuf, amt); in unixWrite()
42379 int nCopy = pFile->mmapSize - offset; in unixWrite()
42380 memcpy(&((u8 *)(pFile->pMapRegion))[offset], pBuf, nCopy); in unixWrite()
42388 while( (wrote = seekAndWrite(pFile, offset, pBuf, amt))<amt && wrote>0 ){ in unixWrite()
42397 if( wrote<0 && pFile->lastErrno!=ENOSPC ){ in unixWrite()
42401 storeLastErrno(pFile, 0); /* not a system error */ in unixWrite()
42599 unixFile *pFile = (unixFile*)id; in unixSync() local
42614 assert( pFile ); in unixSync()
42615 OSTRACE(("SYNC %-3d\n", pFile->h)); in unixSync()
42616 rc = full_fsync(pFile->h, isFullsync, isDataOnly); in unixSync()
42619 storeLastErrno(pFile, errno); in unixSync()
42620 return unixLogError(SQLITE_IOERR_FSYNC, "full_fsync", pFile->zPath); in unixSync()
42627 if( pFile->ctrlFlags & UNIXFILE_DIRSYNC ){ in unixSync()
42629 OSTRACE(("DIRSYNC %s (have_fullfsync=%d fullsync=%d)\n", pFile->zPath, in unixSync()
42631 rc = osOpenDirectory(pFile->zPath, &dirfd); in unixSync()
42634 robust_close(pFile, dirfd, __LINE__); in unixSync()
42639 pFile->ctrlFlags &= ~UNIXFILE_DIRSYNC; in unixSync()
42648 unixFile *pFile = (unixFile *)id; in unixTruncate() local
42650 assert( pFile ); in unixTruncate()
42658 if( pFile->szChunk>0 ){ in unixTruncate()
42659 nByte = ((nByte + pFile->szChunk - 1)/pFile->szChunk) * pFile->szChunk; in unixTruncate()
42662 rc = robust_ftruncate(pFile->h, nByte); in unixTruncate()
42664 storeLastErrno(pFile, errno); in unixTruncate()
42665 return unixLogError(SQLITE_IOERR_TRUNCATE, "ftruncate", pFile->zPath); in unixTruncate()
42675 if( pFile->inNormalWrite && nByte==0 ){ in unixTruncate()
42676 pFile->transCntrChng = 1; in unixTruncate()
42685 if( nByte<pFile->mmapSize ){ in unixTruncate()
42686 pFile->mmapSize = nByte; in unixTruncate()
42735 static int fcntlSizeHint(unixFile *pFile, i64 nByte){ in fcntlSizeHint() argument
42736 if( pFile->szChunk>0 ){ in fcntlSizeHint()
42740 if( osFstat(pFile->h, &buf) ){ in fcntlSizeHint()
42744 nSize = ((nByte+pFile->szChunk-1) / pFile->szChunk) * pFile->szChunk; in fcntlSizeHint()
42753 err = osFallocate(pFile->h, buf.st_size, nSize-buf.st_size); in fcntlSizeHint()
42773 nWrite = seekAndWrite(pFile, iWrite, "", 1); in fcntlSizeHint()
42781 if( pFile->mmapSizeMax>0 && nByte>pFile->mmapSize ){ in fcntlSizeHint()
42783 if( pFile->szChunk<=0 ){ in fcntlSizeHint()
42784 if( robust_ftruncate(pFile->h, nByte) ){ in fcntlSizeHint()
42785 storeLastErrno(pFile, errno); in fcntlSizeHint()
42786 return unixLogError(SQLITE_IOERR_TRUNCATE, "ftruncate", pFile->zPath); in fcntlSizeHint()
42790 rc = unixMapfile(pFile, nByte); in fcntlSizeHint()
42804 static void unixModeBit(unixFile *pFile, unsigned char mask, int *pArg){ in unixModeBit() argument
42806 *pArg = (pFile->ctrlFlags & mask)!=0; in unixModeBit()
42808 pFile->ctrlFlags &= ~mask; in unixModeBit()
42810 pFile->ctrlFlags |= mask; in unixModeBit()
42824 unixFile *pFile = (unixFile*)id; in unixFileControl() local
42828 int rc = osIoctl(pFile->h, F2FS_IOC_START_ATOMIC_WRITE); in unixFileControl()
42832 int rc = osIoctl(pFile->h, F2FS_IOC_COMMIT_ATOMIC_WRITE); in unixFileControl()
42836 int rc = osIoctl(pFile->h, F2FS_IOC_ABORT_VOLATILE_WRITE); in unixFileControl()
42842 osClose(pFile->h); in unixFileControl()
42843 pFile->h = -1; in unixFileControl()
42847 *(int*)pArg = pFile->eFileLock; in unixFileControl()
42851 *(int*)pArg = pFile->lastErrno; in unixFileControl()
42855 pFile->szChunk = *(int *)pArg; in unixFileControl()
42861 rc = fcntlSizeHint(pFile, *(i64 *)pArg); in unixFileControl()
42866 unixModeBit(pFile, UNIXFILE_PERSIST_WAL, (int*)pArg); in unixFileControl()
42870 unixModeBit(pFile, UNIXFILE_PSOW, (int*)pArg); in unixFileControl()
42874 *(char**)pArg = sqlite3_mprintf("%s", pFile->pVfs->zName); in unixFileControl()
42878 char *zTFile = sqlite3_malloc64( pFile->pVfs->mxPathname ); in unixFileControl()
42880 unixGetTempname(pFile->pVfs->mxPathname, zTFile); in unixFileControl()
42886 *(int*)pArg = fileHasMoved(pFile); in unixFileControl()
42891 int iOld = pFile->iBusyTimeout; in unixFileControl()
42894 pFile->iBusyTimeout = iNew<0 ? 0x7FFFFFFF : (unsigned)iNew; in unixFileControl()
42896 pFile->iBusyTimeout = !!(*(int*)pArg); in unixFileControl()
42905 pFile->bBlockOnConnect = iNew; in unixFileControl()
42924 *(i64*)pArg = pFile->mmapSizeMax; in unixFileControl()
42925 if( newLimit>=0 && newLimit!=pFile->mmapSizeMax && pFile->nFetchOut==0 ){ in unixFileControl()
42926 pFile->mmapSizeMax = newLimit; in unixFileControl()
42927 if( pFile->mmapSize>0 ){ in unixFileControl()
42928 unixUnmapfile(pFile); in unixFileControl()
42929 rc = unixMapfile(pFile, -1); in unixFileControl()
43001 static void setDeviceCharacteristics(unixFile *pFile){ in setDeviceCharacteristics() argument
43002 if( pFile->sectorSize == 0 ){ in setDeviceCharacteristics()
43006 pFile->sectorSize = SQLITE_DEFAULT_SECTOR_SIZE; in setDeviceCharacteristics()
43007 pFile->deviceCharacteristics = 0; in setDeviceCharacteristics()
43008 if( fstatvfs(pFile->h, &fsInfo) == -1 ) { in setDeviceCharacteristics()
43013 pFile->sectorSize = fsInfo.f_bsize; in setDeviceCharacteristics()
43014 pFile->deviceCharacteristics = in setDeviceCharacteristics()
43022 pFile->sectorSize = fsInfo.f_bsize; in setDeviceCharacteristics()
43023 pFile->deviceCharacteristics = in setDeviceCharacteristics()
43025 (pFile->sectorSize / 512 * SQLITE_IOCAP_ATOMIC512) | in setDeviceCharacteristics()
43032 pFile->sectorSize = fsInfo.f_bsize; in setDeviceCharacteristics()
43033 pFile->deviceCharacteristics = in setDeviceCharacteristics()
43041 pFile->sectorSize = fsInfo.f_bsize; in setDeviceCharacteristics()
43042 pFile->deviceCharacteristics = in setDeviceCharacteristics()
43044 (((pFile->sectorSize / 512 * SQLITE_IOCAP_ATOMIC512) << 1) - 2) | in setDeviceCharacteristics()
43049 pFile->sectorSize = fsInfo.f_bsize; in setDeviceCharacteristics()
43050 pFile->deviceCharacteristics = in setDeviceCharacteristics()
43052 (((pFile->sectorSize / 512 * SQLITE_IOCAP_ATOMIC512) << 1) - 2) | in setDeviceCharacteristics()
43057 pFile->deviceCharacteristics = in setDeviceCharacteristics()
43066 if( pFile->sectorSize % 512 != 0 ){ in setDeviceCharacteristics()
43067 pFile->deviceCharacteristics = 0; in setDeviceCharacteristics()
43068 pFile->sectorSize = SQLITE_DEFAULT_SECTOR_SIZE; in setDeviceCharacteristics()
43235 static int unixFcntlExternalReader(unixFile *pFile, int *piOut){ in unixFcntlExternalReader() argument
43238 if( pFile->pShm){ in unixFcntlExternalReader()
43239 unixShmNode *pShmNode = pFile->pShm->pShmNode; in unixFcntlExternalReader()
43268 unixFile *pFile, /* Open connection to the WAL file */ in unixShmSystemLock() argument
43277 pShmNode = pFile->pInode->pShmNode; in unixShmSystemLock()
43314 res = osSetPosixAdvisoryLock(pShmNode->hShm, &f, pFile); in unixShmSystemLock()
43317 rc = (pFile->iBusyTimeout ? SQLITE_BUSY_TIMEOUT : SQLITE_BUSY); in unixShmSystemLock()
45094 sqlite3_file *pFile, /* The file descriptor to be filled in */ in unixOpen() argument
45098 unixFile *p = (unixFile *)pFile; in unixOpen()
45312 ((unixFile*)pFile)->fsFlags |= SQLITE_FSFLAGS_IS_MSDOS; in unixOpen()
45315 ((unixFile*)pFile)->fsFlags |= SQLITE_FSFLAGS_IS_MSDOS; in unixOpen()
45343 rc = fillInUnixFile(pVfs, fd, pFile, zPath, ctrlFlags); in unixOpen()
45345 rc = proxyTransformUnixFile((unixFile*)pFile, ":auto:"); in unixOpen()
45351 unixClose(pFile); in unixOpen()
45363 rc = fillInUnixFile(pVfs, fd, pFile, zPath, ctrlFlags); in unixOpen()
46194 static int proxyBreakConchLock(unixFile *pFile, uuid_t myHostID){ in proxyBreakConchLock() argument
46195 proxyLockingContext *pCtx = (proxyLockingContext *)pFile->lockingContext; in proxyBreakConchLock()
46236 robust_close(pFile, conchFile->h, __LINE__); in proxyBreakConchLock()
46244 robust_close(pFile, fd, __LINE__); in proxyBreakConchLock()
46254 static int proxyConchLock(unixFile *pFile, uuid_t myHostID, int lockType){ in proxyConchLock() argument
46255 proxyLockingContext *pCtx = (proxyLockingContext *)pFile->lockingContext; in proxyConchLock()
46274 storeLastErrno(pFile, errno); in proxyConchLock()
46294 storeLastErrno(pFile, errno); in proxyConchLock()
46311 if( 0==proxyBreakConchLock(pFile, myHostID) ){ in proxyConchLock()
46332 static int proxyTakeConch(unixFile *pFile){ in proxyTakeConch() argument
46333 proxyLockingContext *pCtx = (proxyLockingContext *)pFile->lockingContext; in proxyTakeConch()
46357 storeLastErrno(pFile, pError); in proxyTakeConch()
46360 rc = proxyConchLock(pFile, myHostID, SHARED_LOCK); in proxyTakeConch()
46368 storeLastErrno(pFile, conchFile->lastErrno); in proxyTakeConch()
46438 rc = proxyConchLock(pFile, myHostID, EXCLUSIVE_LOCK); in proxyTakeConch()
46441 rc = proxyConchLock(pFile, myHostID, EXCLUSIVE_LOCK); in proxyTakeConch()
46464 int err = osFstat(pFile->h, &buf); in proxyTakeConch()
46493 OSTRACE(("TRANSPROXY: CLOSE %d\n", pFile->h)); in proxyTakeConch()
46494 if( rc==SQLITE_OK && pFile->openFlags ){ in proxyTakeConch()
46496 if( pFile->h>=0 ){ in proxyTakeConch()
46497 robust_close(pFile, pFile->h, __LINE__); in proxyTakeConch()
46499 pFile->h = -1; in proxyTakeConch()
46500 fd = robust_open(pCtx->dbPath, pFile->openFlags, 0); in proxyTakeConch()
46503 pFile->h = fd; in proxyTakeConch()
46554 static int proxyReleaseConch(unixFile *pFile){ in proxyReleaseConch() argument
46559 pCtx = (proxyLockingContext *)pFile->lockingContext; in proxyReleaseConch()
46621 static int switchLockProxyPath(unixFile *pFile, const char *path) { in switchLockProxyPath() argument
46622 proxyLockingContext *pCtx = (proxyLockingContext*)pFile->lockingContext; in switchLockProxyPath()
46626 if( pFile->eFileLock!=NO_LOCK ){ in switchLockProxyPath()
46657 static int proxyGetDbPathForUnixFile(unixFile *pFile, char *dbPath){ in proxyGetDbPathForUnixFile() argument
46659 if( pFile->pMethod == &afpIoMethods ){ in proxyGetDbPathForUnixFile()
46662 assert( (int)strlen((char*)pFile->lockingContext)<=MAXPATHLEN ); in proxyGetDbPathForUnixFile()
46663 strlcpy(dbPath, ((afpLockingContext *)pFile->lockingContext)->dbPath, in proxyGetDbPathForUnixFile()
46667 if( pFile->pMethod == &dotlockIoMethods ){ in proxyGetDbPathForUnixFile()
46670 int len = strlen((char *)pFile->lockingContext) - strlen(DOTLOCK_SUFFIX); in proxyGetDbPathForUnixFile()
46671 memcpy(dbPath, (char *)pFile->lockingContext, len + 1); in proxyGetDbPathForUnixFile()
46674 assert( strlen((char*)pFile->lockingContext)<=MAXPATHLEN ); in proxyGetDbPathForUnixFile()
46675 strlcpy(dbPath, (char *)pFile->lockingContext, MAXPATHLEN); in proxyGetDbPathForUnixFile()
46688 static int proxyTransformUnixFile(unixFile *pFile, const char *path) { in proxyTransformUnixFile() argument
46694 if( pFile->eFileLock!=NO_LOCK ){ in proxyTransformUnixFile()
46697 proxyGetDbPathForUnixFile(pFile, dbPath); in proxyTransformUnixFile()
46704 OSTRACE(("TRANSPROXY %d for %s pid=%d\n", pFile->h, in proxyTransformUnixFile()
46716 if( rc==SQLITE_CANTOPEN && ((pFile->openFlags&O_RDWR) == 0) ){ in proxyTransformUnixFile()
46752 pCtx->oldLockingContext = pFile->lockingContext; in proxyTransformUnixFile()
46753 pFile->lockingContext = pCtx; in proxyTransformUnixFile()
46754 pCtx->pOldMethod = pFile->pMethod; in proxyTransformUnixFile()
46755 pFile->pMethod = &proxyIoMethods; in proxyTransformUnixFile()
46765 OSTRACE(("TRANSPROXY %d %s\n", pFile->h, in proxyTransformUnixFile()
46778 unixFile *pFile = (unixFile*)id; in proxyFileControl() local
46779 if( pFile->pMethod == &proxyIoMethods ){ in proxyFileControl()
46780 proxyLockingContext *pCtx = (proxyLockingContext*)pFile->lockingContext; in proxyFileControl()
46781 proxyTakeConch(pFile); in proxyFileControl()
46793 unixFile *pFile = (unixFile*)id; in proxyFileControl() local
46795 int isProxyStyle = (pFile->pMethod == &proxyIoMethods); in proxyFileControl()
46811 (proxyLockingContext*)pFile->lockingContext; in proxyFileControl()
46818 rc = switchLockProxyPath(pFile, proxyPath); in proxyFileControl()
46822 rc = proxyTransformUnixFile(pFile, proxyPath); in proxyFileControl()
46849 unixFile *pFile = (unixFile*)id; in proxyCheckReservedLock() local
46850 int rc = proxyTakeConch(pFile); in proxyCheckReservedLock()
46852 proxyLockingContext *pCtx = (proxyLockingContext *)pFile->lockingContext; in proxyCheckReservedLock()
46888 unixFile *pFile = (unixFile*)id; in proxyLock() local
46889 int rc = proxyTakeConch(pFile); in proxyLock()
46891 proxyLockingContext *pCtx = (proxyLockingContext *)pFile->lockingContext; in proxyLock()
46895 pFile->eFileLock = proxy->eFileLock; in proxyLock()
46912 unixFile *pFile = (unixFile*)id; in proxyUnlock() local
46913 int rc = proxyTakeConch(pFile); in proxyUnlock()
46915 proxyLockingContext *pCtx = (proxyLockingContext *)pFile->lockingContext; in proxyUnlock()
46919 pFile->eFileLock = proxy->eFileLock; in proxyUnlock()
46932 unixFile *pFile = (unixFile*)id; in proxyClose() local
46933 proxyLockingContext *pCtx = (proxyLockingContext *)pFile->lockingContext; in proxyClose()
46948 rc = proxyReleaseConch(pFile); in proxyClose()
46959 pFile->lockingContext = pCtx->oldLockingContext; in proxyClose()
46960 pFile->pMethod = pCtx->pOldMethod; in proxyClose()
46962 return pFile->pMethod->xClose(id); in proxyClose()
49502 static int winceCreateLock(const char *zFilename, winFile *pFile){ in winceCreateLock() argument
49516 memset(&pFile->local, 0, sizeof(pFile->local)); in winceCreateLock()
49526 pFile->hMutex = osCreateMutexW(NULL, FALSE, zName); in winceCreateLock()
49527 if (!pFile->hMutex){ in winceCreateLock()
49528 pFile->lastErrno = osGetLastError(); in winceCreateLock()
49530 return winLogError(SQLITE_IOERR, pFile->lastErrno, in winceCreateLock()
49535 winceMutexAcquire(pFile->hMutex); in winceCreateLock()
49542 pFile->hShared = osCreateFileMappingW(INVALID_HANDLE_VALUE, NULL, in winceCreateLock()
49556 if( pFile->hShared ){ in winceCreateLock()
49557 pFile->shared = (winceLock*)osMapViewOfFile(pFile->hShared, in winceCreateLock()
49560 if( !pFile->shared ){ in winceCreateLock()
49561 pFile->lastErrno = osGetLastError(); in winceCreateLock()
49562 winLogError(SQLITE_IOERR, pFile->lastErrno, in winceCreateLock()
49565 osCloseHandle(pFile->hShared); in winceCreateLock()
49566 pFile->hShared = NULL; in winceCreateLock()
49571 if( pFile->hShared==NULL ){ in winceCreateLock()
49573 pFile->lastErrno = lastErrno; in winceCreateLock()
49574 winLogError(SQLITE_IOERR, pFile->lastErrno, in winceCreateLock()
49578 winceMutexRelease(pFile->hMutex); in winceCreateLock()
49579 osCloseHandle(pFile->hMutex); in winceCreateLock()
49580 pFile->hMutex = NULL; in winceCreateLock()
49586 memset(pFile->shared, 0, sizeof(winceLock)); in winceCreateLock()
49589 winceMutexRelease(pFile->hMutex); in winceCreateLock()
49596 static void winceDestroyLock(winFile *pFile){ in winceDestroyLock() argument
49597 if (pFile->hMutex){ in winceDestroyLock()
49599 winceMutexAcquire(pFile->hMutex); in winceDestroyLock()
49603 if (pFile->local.nReaders){ in winceDestroyLock()
49604 pFile->shared->nReaders --; in winceDestroyLock()
49606 if (pFile->local.bReserved){ in winceDestroyLock()
49607 pFile->shared->bReserved = FALSE; in winceDestroyLock()
49609 if (pFile->local.bPending){ in winceDestroyLock()
49610 pFile->shared->bPending = FALSE; in winceDestroyLock()
49612 if (pFile->local.bExclusive){ in winceDestroyLock()
49613 pFile->shared->bExclusive = FALSE; in winceDestroyLock()
49617 osUnmapViewOfFile(pFile->shared); in winceDestroyLock()
49618 osCloseHandle(pFile->hShared); in winceDestroyLock()
49621 winceMutexRelease(pFile->hMutex); in winceDestroyLock()
49622 osCloseHandle(pFile->hMutex); in winceDestroyLock()
49623 pFile->hMutex = NULL; in winceDestroyLock()
49637 winFile *pFile = HANDLE_TO_WINFILE(phFile); in winceLockFile() local
49643 if (!pFile->hMutex) return TRUE; in winceLockFile()
49644 winceMutexAcquire(pFile->hMutex); in winceLockFile()
49649 if (pFile->shared->nReaders == 0 && pFile->shared->bExclusive == 0){ in winceLockFile()
49650 pFile->shared->bExclusive = TRUE; in winceLockFile()
49651 pFile->local.bExclusive = TRUE; in winceLockFile()
49659 if (pFile->shared->bExclusive == 0){ in winceLockFile()
49660 pFile->local.nReaders ++; in winceLockFile()
49661 if (pFile->local.nReaders == 1){ in winceLockFile()
49662 pFile->shared->nReaders ++; in winceLockFile()
49672 if (pFile->shared->bPending == 0) { in winceLockFile()
49673 pFile->shared->bPending = TRUE; in winceLockFile()
49674 pFile->local.bPending = TRUE; in winceLockFile()
49682 if (pFile->shared->bReserved == 0) { in winceLockFile()
49683 pFile->shared->bReserved = TRUE; in winceLockFile()
49684 pFile->local.bReserved = TRUE; in winceLockFile()
49689 winceMutexRelease(pFile->hMutex); in winceLockFile()
49703 winFile *pFile = HANDLE_TO_WINFILE(phFile); in winceUnlockFile() local
49709 if (!pFile->hMutex) return TRUE; in winceUnlockFile()
49710 winceMutexAcquire(pFile->hMutex); in winceUnlockFile()
49715 if (pFile->local.bExclusive){ in winceUnlockFile()
49717 pFile->local.bExclusive = FALSE; in winceUnlockFile()
49718 pFile->shared->bExclusive = FALSE; in winceUnlockFile()
49723 else if (pFile->local.nReaders){ in winceUnlockFile()
49726 pFile->local.nReaders --; in winceUnlockFile()
49727 if (pFile->local.nReaders == 0) in winceUnlockFile()
49729 pFile->shared->nReaders --; in winceUnlockFile()
49738 if (pFile->local.bPending){ in winceUnlockFile()
49739 pFile->local.bPending = FALSE; in winceUnlockFile()
49740 pFile->shared->bPending = FALSE; in winceUnlockFile()
49747 if (pFile->local.bReserved) { in winceUnlockFile()
49748 pFile->local.bReserved = FALSE; in winceUnlockFile()
49749 pFile->shared->bReserved = FALSE; in winceUnlockFile()
49754 winceMutexRelease(pFile->hMutex); in winceUnlockFile()
49985 static int winSeekFile(winFile *pFile, sqlite3_int64 iOffset){ in winSeekFile() argument
49988 rc = winHandleSeek(pFile->h, iOffset); in winSeekFile()
49990 pFile->lastErrno = osGetLastError(); in winSeekFile()
49991 winLogError(rc, pFile->lastErrno, "winSeekFile", pFile->zPath); in winSeekFile()
50016 winFile *pFile = (winFile*)id; in winClose() local
50020 assert( pFile->pShm==0 ); in winClose()
50022 assert( pFile->h!=NULL && pFile->h!=INVALID_HANDLE_VALUE ); in winClose()
50024 osGetCurrentProcessId(), pFile, pFile->h)); in winClose()
50027 winUnmapfile(pFile); in winClose()
50031 rc = osCloseHandle(pFile->h); in winClose()
50037 winVfsAppData *pAppData = (winVfsAppData*)pFile->pVfs->pAppData; in winClose()
50039 winceDestroyLock(pFile); in winClose()
50042 if( pFile->zDeleteOnClose ){ in winClose()
50045 osDeleteFileW(pFile->zDeleteOnClose)==0 in winClose()
50046 && osGetFileAttributesW(pFile->zDeleteOnClose)!=0xffffffff in winClose()
50051 sqlite3_free(pFile->zDeleteOnClose); in winClose()
50055 pFile->h = NULL; in winClose()
50059 osGetCurrentProcessId(), pFile, pFile->h, rc ? "ok" : "failed")); in winClose()
50062 "winClose", pFile->zPath); in winClose()
50079 winFile *pFile = (winFile*)id; /* file handle */ local
50088 "offset=%lld, lock=%d\n", osGetCurrentProcessId(), pFile,
50089 pFile->h, pBuf, amt, offset, pFile->locktype));
50094 if( offset<pFile->mmapSize ){
50095 if( offset+amt <= pFile->mmapSize ){
50096 memcpy(pBuf, &((u8 *)(pFile->pMapRegion))[offset], amt);
50098 osGetCurrentProcessId(), pFile, pFile->h));
50101 int nCopy = (int)(pFile->mmapSize - offset);
50102 memcpy(pBuf, &((u8 *)(pFile->pMapRegion))[offset], nCopy);
50111 if( winSeekFile(pFile, offset) ){
50113 osGetCurrentProcessId(), pFile, pFile->h));
50116 while( !osReadFile(pFile->h, pBuf, amt, &nRead, 0) ){
50121 while( !osReadFile(pFile->h, pBuf, amt, &nRead, &overlapped) &&
50126 pFile->lastErrno = lastErrno;
50128 osGetCurrentProcessId(), pFile, pFile->h));
50129 return winLogError(SQLITE_IOERR_READ, pFile->lastErrno,
50130 "winRead", pFile->zPath);
50137 osGetCurrentProcessId(), pFile, pFile->h));
50142 osGetCurrentProcessId(), pFile, pFile->h));
50157 winFile *pFile = (winFile*)id; /* File handle */ local
50161 assert( pFile );
50166 "offset=%lld, lock=%d\n", osGetCurrentProcessId(), pFile,
50167 pFile->h, pBuf, amt, offset, pFile->locktype));
50172 if( offset<pFile->mmapSize ){
50173 if( offset+amt <= pFile->mmapSize ){
50174 memcpy(&((u8 *)(pFile->pMapRegion))[offset], pBuf, amt);
50176 osGetCurrentProcessId(), pFile, pFile->h));
50179 int nCopy = (int)(pFile->mmapSize - offset);
50180 memcpy(&((u8 *)(pFile->pMapRegion))[offset], pBuf, nCopy);
50189 rc = winSeekFile(pFile, offset);
50210 if( !osWriteFile(pFile->h, aRem, nRem, &nWrite, 0) ){
50212 if( !osWriteFile(pFile->h, aRem, nRem, &nWrite, &overlapped) ){
50231 pFile->lastErrno = lastErrno;
50237 if( ( pFile->lastErrno==ERROR_HANDLE_DISK_FULL )
50238 || ( pFile->lastErrno==ERROR_DISK_FULL )){
50240 osGetCurrentProcessId(), pFile, pFile->h));
50241 return winLogError(SQLITE_FULL, pFile->lastErrno,
50242 "winWrite1", pFile->zPath);
50245 osGetCurrentProcessId(), pFile, pFile->h));
50246 return winLogError(SQLITE_IOERR_WRITE, pFile->lastErrno,
50247 "winWrite2", pFile->zPath);
50252 osGetCurrentProcessId(), pFile, pFile->h));
50314 winFile *pFile = (winFile*)id; /* File handle object */ local
50319 if( pFile->nFetchOut>0 ){
50341 assert( pFile );
50344 osGetCurrentProcessId(), pFile, pFile->h, nByte, pFile->locktype));
50351 if( pFile->szChunk>0 ){
50352 nByte = ((nByte + pFile->szChunk - 1)/pFile->szChunk) * pFile->szChunk;
50356 if( pFile->pMapRegion ){
50357 oldMmapSize = pFile->mmapSize;
50361 winUnmapfile(pFile);
50365 if( winSeekFile(pFile, nByte) ){
50366 rc = winLogError(SQLITE_IOERR_TRUNCATE, pFile->lastErrno,
50367 "winTruncate1", pFile->zPath);
50368 }else if( 0==osSetEndOfFile(pFile->h) &&
50370 pFile->lastErrno = lastErrno;
50371 rc = winLogError(SQLITE_IOERR_TRUNCATE, pFile->lastErrno,
50372 "winTruncate2", pFile->zPath);
50378 winMapfile(pFile, -1);
50380 winMapfile(pFile, oldMmapSize);
50386 osGetCurrentProcessId(), pFile, pFile->h, sqlite3ErrName(rc)));
50415 winFile *pFile = (winFile*)id; local
50420 assert( pFile );
50432 osGetCurrentProcessId(), pFile, pFile->h, flags,
50433 pFile->locktype));
50449 osGetCurrentProcessId(), pFile, pFile->h));
50453 if( pFile->pMapRegion ){
50454 if( osFlushViewOfFile(pFile->pMapRegion, 0) ){
50457 pFile, pFile->pMapRegion));
50459 pFile->lastErrno = osGetLastError();
50462 pFile, pFile->pMapRegion));
50463 return winLogError(SQLITE_IOERR_MMAP, pFile->lastErrno,
50464 "winSync1", pFile->zPath);
50468 rc = osFlushFileBuffers(pFile->h);
50472 osGetCurrentProcessId(), pFile, pFile->h));
50475 pFile->lastErrno = osGetLastError();
50477 osGetCurrentProcessId(), pFile, pFile->h));
50478 return winLogError(SQLITE_IOERR_FSYNC, pFile->lastErrno,
50479 "winSync2", pFile->zPath);
50488 winFile *pFile = (winFile*)id; local
50494 OSTRACE(("SIZE file=%p, pSize=%p\n", pFile->h, pSize));
50499 if( osGetFileInformationByHandleEx(pFile->h, FileStandardInfo,
50503 pFile->lastErrno = osGetLastError();
50504 rc = winLogError(SQLITE_IOERR_FSTAT, pFile->lastErrno,
50505 "winFileSize", pFile->zPath);
50514 lowerBits = osGetFileSize(pFile->h, &upperBits);
50518 pFile->lastErrno = lastErrno;
50519 rc = winLogError(SQLITE_IOERR_FSTAT, pFile->lastErrno,
50520 "winFileSize", pFile->zPath);
50525 pFile->h, pSize, *pSize, sqlite3ErrName(rc)));
50565 static int winGetReadLock(winFile *pFile, int bBlock){
50568 OSTRACE(("READ-LOCK file=%p, lock=%d\n", pFile->h, pFile->locktype));
50575 res = winceLockFile(&pFile->h, SHARED_FIRST, 0, 1, 0);
50577 res = winLockFile(&pFile->h, SQLITE_LOCKFILEEX_FLAGS&mask, SHARED_FIRST, 0,
50585 pFile->sharedLockByte = (short)((lk & 0x7fffffff)%(SHARED_SIZE - 1));
50586 res = winLockFile(&pFile->h, SQLITE_LOCKFILE_FLAGS&mask,
50587 SHARED_FIRST+pFile->sharedLockByte, 0, 1, 0);
50591 pFile->lastErrno = osGetLastError();
50594 OSTRACE(("READ-LOCK file=%p, result=%d\n", pFile->h, res));
50601 static int winUnlockReadLock(winFile *pFile){
50604 OSTRACE(("READ-UNLOCK file=%p, lock=%d\n", pFile->h, pFile->locktype));
50606 res = winUnlockFile(&pFile->h, SHARED_FIRST, 0, SHARED_SIZE, 0);
50610 res = winUnlockFile(&pFile->h, SHARED_FIRST+pFile->sharedLockByte, 0, 1, 0);
50614 pFile->lastErrno = lastErrno;
50615 winLogError(SQLITE_IOERR_UNLOCK, pFile->lastErrno,
50616 "winUnlockReadLock", pFile->zPath);
50618 OSTRACE(("READ-UNLOCK file=%p, result=%d\n", pFile->h, res));
50653 winFile *pFile = (winFile*)id; local
50658 pFile->h, pFile->locktype, pFile->sharedLockByte, locktype));
50664 if( pFile->locktype>=locktype ){
50665 OSTRACE(("LOCK-HELD file=%p, rc=SQLITE_OK\n", pFile->h));
50671 if( (pFile->ctrlFlags & WINFILE_RDONLY)!=0 && locktype>=RESERVED_LOCK ){
50677 assert( pFile->locktype!=NO_LOCK || locktype==SHARED_LOCK );
50679 assert( locktype!=RESERVED_LOCK || pFile->locktype==SHARED_LOCK );
50685 newLocktype = pFile->locktype;
50687 || (locktype==EXCLUSIVE_LOCK && pFile->locktype==RESERVED_LOCK)
50705 res = winLockFile(&pFile->h, flags, PENDING_BYTE, 0, 1, 0);
50710 pFile->h, cnt, res
50714 pFile->lastErrno = lastErrno;
50717 pFile->h, cnt, sqlite3ErrName(rc)
50731 assert( pFile->locktype==NO_LOCK );
50733 res = winGetReadLock(pFile, pFile->bBlockOnConnect);
50735 res = winGetReadLock(pFile, 0);
50747 assert( pFile->locktype==SHARED_LOCK );
50748 res = winLockFile(&pFile->h, SQLITE_LOCKFILE_FLAGS, RESERVED_BYTE, 0, 1, 0);
50766 assert( pFile->locktype>=SHARED_LOCK );
50767 (void)winUnlockReadLock(pFile);
50768 res = winLockFile(&pFile->h, SQLITE_LOCKFILE_FLAGS, SHARED_FIRST, 0,
50774 winGetReadLock(pFile, 0);
50782 winUnlockFile(&pFile->h, PENDING_BYTE, 0, 1, 0);
50791 pFile->lastErrno = lastErrno;
50794 pFile->h, locktype, newLocktype));
50796 pFile->locktype = (u8)newLocktype;
50798 pFile->h, pFile->locktype, sqlite3ErrName(rc)));
50809 winFile *pFile = (winFile*)id; local
50812 OSTRACE(("TEST-WR-LOCK file=%p, pResOut=%p\n", pFile->h, pResOut));
50815 if( pFile->locktype>=RESERVED_LOCK ){
50817 OSTRACE(("TEST-WR-LOCK file=%p, result=%d (local)\n", pFile->h, res));
50819 res = winLockFile(&pFile->h, SQLITE_LOCKFILEEX_FLAGS,RESERVED_BYTE,0,1,0);
50821 winUnlockFile(&pFile->h, RESERVED_BYTE, 0, 1, 0);
50824 OSTRACE(("TEST-WR-LOCK file=%p, result=%d (remote)\n", pFile->h, res));
50828 pFile->h, pResOut, *pResOut));
50845 winFile *pFile = (winFile*)id; local
50847 assert( pFile!=0 );
50850 pFile->h, pFile->locktype, pFile->sharedLockByte, locktype));
50851 type = pFile->locktype;
50853 winUnlockFile(&pFile->h, SHARED_FIRST, 0, SHARED_SIZE, 0);
50854 if( locktype==SHARED_LOCK && !winGetReadLock(pFile, 0) ){
50858 "winUnlock", pFile->zPath);
50862 winUnlockFile(&pFile->h, RESERVED_BYTE, 0, 1, 0);
50865 winUnlockReadLock(pFile);
50868 winUnlockFile(&pFile->h, PENDING_BYTE, 0, 1, 0);
50870 pFile->locktype = (u8)locktype;
50872 pFile->h, pFile->locktype, sqlite3ErrName(rc)));
50920 static void winModeBit(winFile *pFile, unsigned char mask, int *pArg){
50922 *pArg = (pFile->ctrlFlags & mask)!=0;
50924 pFile->ctrlFlags &= ~mask;
50926 pFile->ctrlFlags |= mask;
50940 winFile *pFile = (winFile*)id; local
50941 OSTRACE(("FCNTL file=%p, op=%d, pArg=%p\n", pFile->h, op, pArg));
50944 *(int*)pArg = pFile->locktype;
50945 OSTRACE(("FCNTL file=%p, rc=SQLITE_OK\n", pFile->h));
50949 *(int*)pArg = (int)pFile->lastErrno;
50950 OSTRACE(("FCNTL file=%p, rc=SQLITE_OK\n", pFile->h));
50954 pFile->szChunk = *(int *)pArg;
50955 OSTRACE(("FCNTL file=%p, rc=SQLITE_OK\n", pFile->h));
50959 if( pFile->szChunk>0 ){
50970 OSTRACE(("FCNTL file=%p, rc=%s\n", pFile->h, sqlite3ErrName(rc)));
50973 OSTRACE(("FCNTL file=%p, rc=SQLITE_OK\n", pFile->h));
50977 winModeBit(pFile, WINFILE_PERSIST_WAL, (int*)pArg);
50978 OSTRACE(("FCNTL file=%p, rc=SQLITE_OK\n", pFile->h));
50982 winModeBit(pFile, WINFILE_PSOW, (int*)pArg);
50983 OSTRACE(("FCNTL file=%p, rc=SQLITE_OK\n", pFile->h));
50987 *(char**)pArg = sqlite3_mprintf("%s", pFile->pVfs->zName);
50988 OSTRACE(("FCNTL file=%p, rc=SQLITE_OK\n", pFile->h));
51003 OSTRACE(("FCNTL file=%p, rc=SQLITE_OK\n", pFile->h));
51008 *phFile = pFile->h;
51009 OSTRACE(("FCNTL file=%p, rc=SQLITE_OK\n", pFile->h));
51015 HANDLE hOldFile = pFile->h;
51016 pFile->h = *phFile;
51019 hOldFile, pFile->h));
51024 (void)osCloseHandle(pFile->h);
51025 pFile->h = NULL;
51030 int rc = winGetTempname(pFile->pVfs, &zTFile);
51034 OSTRACE(("FCNTL file=%p, rc=%s\n", pFile->h, sqlite3ErrName(rc)));
51052 *(i64*)pArg = pFile->mmapSizeMax;
51053 if( newLimit>=0 && newLimit!=pFile->mmapSizeMax && pFile->nFetchOut==0 ){
51054 pFile->mmapSizeMax = newLimit;
51055 if( pFile->mmapSize>0 ){
51056 winUnmapfile(pFile);
51057 rc = winMapfile(pFile, -1);
51060 OSTRACE(("FCNTL file=%p, rc=%s\n", pFile->h, sqlite3ErrName(rc)));
51067 int iOld = pFile->iBusyTimeout;
51070 pFile->iBusyTimeout = (iNew < 0) ? INFINITE : (DWORD)iNew;
51072 pFile->iBusyTimeout = (DWORD)(!!iNew);
51081 pFile->bBlockOnConnect = iNew;
51087 OSTRACE(("FCNTL file=%p, rc=SQLITE_NOTFOUND\n", pFile->h));
51929 static int winUnmapfile(winFile *pFile){
51930 assert( pFile!=0 );
51933 osGetCurrentProcessId(), pFile, pFile->hMap, pFile->pMapRegion,
51934 pFile->mmapSize, pFile->mmapSizeMax));
51935 if( pFile->pMapRegion ){
51936 if( !osUnmapViewOfFile(pFile->pMapRegion) ){
51937 pFile->lastErrno = osGetLastError();
51939 "rc=SQLITE_IOERR_MMAP\n", osGetCurrentProcessId(), pFile,
51940 pFile->pMapRegion));
51941 return winLogError(SQLITE_IOERR_MMAP, pFile->lastErrno,
51942 "winUnmapfile1", pFile->zPath);
51944 pFile->pMapRegion = 0;
51945 pFile->mmapSize = 0;
51947 if( pFile->hMap!=NULL ){
51948 if( !osCloseHandle(pFile->hMap) ){
51949 pFile->lastErrno = osGetLastError();
51951 osGetCurrentProcessId(), pFile, pFile->hMap));
51952 return winLogError(SQLITE_IOERR_MMAP, pFile->lastErrno,
51953 "winUnmapfile2", pFile->zPath);
51955 pFile->hMap = NULL;
51958 osGetCurrentProcessId(), pFile));
52543 winFile *pFile = (winFile*)id; local
52602 assert( pFile!=0 );
52603 memset(pFile, 0, sizeof(winFile));
52604 pFile->h = INVALID_HANDLE_VALUE;
52772 pFile->lastErrno = lastErrno;
52773 winLogError(SQLITE_CANTOPEN, pFile->lastErrno, "winOpen", zUtf8Name);
52796 && (rc = winceCreateLock(zName, pFile))!=SQLITE_OK
52806 pFile->zDeleteOnClose = zConverted;
52815 pFile->pVfs = pVfs;
52816 pFile->h = h;
52818 pFile->ctrlFlags |= WINFILE_RDONLY;
52823 pFile->ctrlFlags |= WINFILE_PSOW;
52825 pFile->lastErrno = NO_ERROR;
52826 pFile->zPath = zName;
52828 pFile->hMap = NULL;
52829 pFile->pMapRegion = 0;
52830 pFile->mmapSize = 0;
52831 pFile->mmapSizeMax = sqlite3GlobalConfig.szMmap;
54024 static int memdbClose(sqlite3_file *pFile){
54025 MemStore *p = ((MemFile*)pFile)->pStore;
54067 sqlite3_file *pFile,
54072 MemStore *p = ((MemFile*)pFile)->pStore;
54109 sqlite3_file *pFile,
54114 MemStore *p = ((MemFile*)pFile)->pStore;
54145 static int memdbTruncate(sqlite3_file *pFile, sqlite_int64 size){
54146 MemStore *p = ((MemFile*)pFile)->pStore;
54162 static int memdbSync(sqlite3_file *pFile, int flags){
54163 UNUSED_PARAMETER(pFile);
54171 static int memdbFileSize(sqlite3_file *pFile, sqlite_int64 *pSize){
54172 MemStore *p = ((MemFile*)pFile)->pStore;
54182 static int memdbLock(sqlite3_file *pFile, int eLock){
54183 MemFile *pThis = (MemFile*)pFile;
54240 static int memdbUnlock(sqlite3_file *pFile, int eLock){
54241 MemFile *pThis = (MemFile*)pFile;
54268 static int memdbCheckReservedLock(sqlite3_file *pFile, int *pResOut){
54278 static int memdbFileControl(sqlite3_file *pFile, int op, void *pArg){
54279 MemStore *p = ((MemFile*)pFile)->pStore;
54307 static int memdbSectorSize(sqlite3_file *pFile){
54315 static int memdbDeviceCharacteristics(sqlite3_file *pFile){
54316 UNUSED_PARAMETER(pFile);
54325 sqlite3_file *pFile,
54330 MemStore *p = ((MemFile*)pFile)->pStore;
54343 static int memdbUnfetch(sqlite3_file *pFile, sqlite3_int64 iOfst, void *pPage){
54344 MemStore *p = ((MemFile*)pFile)->pStore;
54363 MemFile *pFile = (MemFile*)pFd; local
54368 memset(pFile, 0, sizeof(*pFile));
54426 pFile->pStore = p;
60750 SQLITE_PRIVATE int sqlite3SectorSize(sqlite3_file *pFile){
60751 int iRet = sqlite3OsSectorSize(pFile);
61729 sqlite3_file *pFile, /* Write the file descriptor here */
61740 rc = sqlite3OsOpen(pPager->pVfs, 0, pFile, vfsFlags, 0);
61741 assert( rc!=SQLITE_OK || isOpen(pFile) );
74353 sqlite3_file *pFile; local
74363 pFile = sqlite3PagerFile(pBt->pPager);
74364 if( pFile->pMethods ){
74365 sqlite3OsFileControlHint(pFile, SQLITE_FCNTL_PDB, (void*)&pBt->db);
83355 static int backupTruncateFile(sqlite3_file *pFile, i64 iSize){
83357 int rc = sqlite3OsFileSize(pFile, &iCurrent);
83359 rc = sqlite3OsTruncate(pFile, iSize);
83537 sqlite3_file * const pFile = sqlite3PagerFile(pDestPager); local
83543 assert( pFile );
83583 rc = sqlite3OsWrite(pFile, zData, pgszSrc, iOff);
83588 rc = backupTruncateFile(pFile, iSize);
104716 static int vdbeSorterMapFile(SortSubtask *pTask, SorterFile *pFile, u8 **pp){
104718 if( pFile->iEof<=(i64)(pTask->pSorter->db->nMaxSorterMmap) ){
104719 sqlite3_file *pFd = pFile->pFd;
104721 rc = sqlite3OsFetch(pFd, 0, (int)pFile->iEof, (void**)pp);
104736 SorterFile *pFile, /* Sorter file to read from */
104749 pReadr->iEof = pFile->iEof;
104750 pReadr->pFd = pFile->pFd;
104752 rc = vdbeSorterMapFile(pTask, pFile, &pReadr->aMap);
104829 SorterFile *pFile, /* Sorter file to read from */
104836 assert( pFile->iEof>iStart );
104841 rc = vdbePmaReaderSeek(pTask, pReadr, pFile, iStart);
141751 sqlite3_file *pFile = sqlite3PagerFile(pPager);
141752 sqlite3OsFileControlHint(pFile, SQLITE_GET_LOCKPROXYFILE,
141757 sqlite3_file *pFile = sqlite3PagerFile(pPager);
141760 res=sqlite3OsFileControl(pFile, SQLITE_SET_LOCKPROXYFILE,
141763 res=sqlite3OsFileControl(pFile, SQLITE_SET_LOCKPROXYFILE,
225894 static int rbuVfsClose(sqlite3_file *pFile){
225895 rbu_file *p = (rbu_file*)pFile;
225957 sqlite3_file *pFile,
225962 rbu_file *p = (rbu_file*)pFile;
226023 sqlite3_file *pFile,
226028 rbu_file *p = (rbu_file*)pFile;
226065 static int rbuVfsTruncate(sqlite3_file *pFile, sqlite_int64 size){
226066 rbu_file *p = (rbu_file*)pFile;
226077 static int rbuVfsSync(sqlite3_file *pFile, int flags){
226078 rbu_file *p = (rbu_file *)pFile;
226091 static int rbuVfsFileSize(sqlite3_file *pFile, sqlite_int64 *pSize){
226092 rbu_file *p = (rbu_file *)pFile;
226112 static int rbuVfsLock(sqlite3_file *pFile, int eLock){
226113 rbu_file *p = (rbu_file*)pFile;
226134 static int rbuVfsUnlock(sqlite3_file *pFile, int eLock){
226135 rbu_file *p = (rbu_file *)pFile;
226142 static int rbuVfsCheckReservedLock(sqlite3_file *pFile, int *pResOut){
226143 rbu_file *p = (rbu_file *)pFile;
226150 static int rbuVfsFileControl(sqlite3_file *pFile, int op, void *pArg){
226151 rbu_file *p = (rbu_file *)pFile;
226206 static int rbuVfsSectorSize(sqlite3_file *pFile){
226207 rbu_file *p = (rbu_file *)pFile;
226214 static int rbuVfsDeviceCharacteristics(sqlite3_file *pFile){
226215 rbu_file *p = (rbu_file *)pFile;
226222 static int rbuVfsShmLock(sqlite3_file *pFile, int ofst, int n, int flags){
226223 rbu_file *p = (rbu_file*)pFile;
226261 sqlite3_file *pFile,
226267 rbu_file *p = (rbu_file*)pFile;
226318 static void rbuVfsShmBarrier(sqlite3_file *pFile){
226319 rbu_file *p = (rbu_file *)pFile;
226326 static int rbuVfsShmUnmap(sqlite3_file *pFile, int delFlag){
226327 rbu_file *p = (rbu_file*)pFile;
226348 sqlite3_file *pFile,
226393 rbu_file *pFd = (rbu_file *)pFile;
226450 pFile->pMethods = &rbuvfs_io_methods1;
226452 pFile->pMethods = &rbuvfs_io_methods;