diff --git a/src/sqlite3.c b/src/sqlite3.c index 93fd40f4c62f2aab61ada517a15683a61fc5f804..2b77ee854c623aa6b3e6bf14a0a53b56ee52082b 100644 --- a/src/sqlite3.c +++ b/src/sqlite3.c @@ -41809,14 +41809,14 @@ static int unixShmLock( p = pDbFd->pShm; if( p==0 ){ #ifdef LOG_DUMP - sqlite3_log(SQLITE_IOERR_SHMLOCK, "unixShmLock-pShm, fd[%d], ofst[%d], n[%d], flags[%d]", ofst, n, flags); + sqlite3_log(SQLITE_IOERR_SHMLOCK, "unixShmLock-pShm, fd[%d], ofst[%d], n[%d], flags[%d]", pDbFd->h, ofst, n, flags); #endif return SQLITE_IOERR_SHMLOCK; } pShmNode = p->pShmNode; if( NEVER(pShmNode==0) ){ #ifdef LOG_DUMP - sqlite3_log(SQLITE_IOERR_SHMLOCK, "unixShmLock-pShmNode, fd[%d], ofst[%d], n[%d], flags[%d]", ofst, n, flags); + sqlite3_log(SQLITE_IOERR_SHMLOCK, "unixShmLock-pShmNode, fd[%d], ofst[%d], n[%d], flags[%d]", pDbFd->h, ofst, n, flags); #endif return SQLITE_IOERR_SHMLOCK; } @@ -246227,65 +246227,68 @@ export_finish: #define WAL_LOCK_NUM 8 #define WAL_READ_LOCK_POS 3 #define LOCK_NUM (DB_LOCK_NUM+WAL_LOCK_NUM) -static void printLockInfo(unixFile *uFile_db, int walStat) +static void printLockInfo(unixFile *dbFile, int walStat) { - const char *lock_type[DB_LOCK_NUM] = {"F_RDLCK", "F_WRLCK", "F_UNLCK"}; + const char *lockType[DB_LOCK_NUM] = {"F_RDLCK", "F_WRLCK", "F_UNLCK"}; sqlite3_log(SQLITE_WARNING, "*** SQLITE_LOG DB Lock ***"); - if( uFile_db==NULL ){ + if( dbFile==NULL ){ sqlite3_log(SQLITE_WARNING, "NO DB FILE !"); return; } - unixInodeInfo *inode = uFile_db->pInode; + unixInodeInfo *inode = dbFile->pInode; if( inode==NULL ){ sqlite3_log(SQLITE_ERROR, "Inode is NULL !"); return; } sqlite3_log(SQLITE_WARNING, "fileLock %d inodeRef %d inodeLockCnt %d inodeFileLock %d inodeProcessLock %d", - uFile_db->eFileLock, inode->nRef, inode->nLock, inode->eFileLock, inode->bProcessLock); - - /* File Lock Info */ - int fd_db = uFile_db->h; - const char *lock_name_list[LOCK_NUM] = {"pending lock ", - "reserved lock", - "shared lock ", - "wal_write lock ", - "wal_ckpt lock ", - "wal_recover lock"}; + dbFile->eFileLock, inode->nRef, inode->nLock, inode->eFileLock, inode->bProcessLock); + + /* Set param list */ + int fdDb = dbFile->h; + const char *lockNameList[LOCK_NUM] = {"pending lock ", + "reserved lock", + "shared lock ", + "wal_write lock ", + "wal_ckpt lock ", + "wal_recover lock"}; for(int i=DB_LOCK_NUM+WAL_READ_LOCK_POS; ipInode->pShmNode; + int hasShm = (dbFile->pShm==NULL || pShmNode==NULL) ? 0 : 1; + off_t startPos = PENDING_BYTE; for(int i=0; ihShm; } - off_t lock_len = i==DB_SHARED_LOCK_OFFSET ? SHARED_SIZE : 1; - struct flock fl_db = { .l_type=F_WRLCK, .l_start=start_pos, .l_len=lock_len, .l_whence=SEEK_SET }; - int ret = osFcntl(fd_db, F_GETLK, &fl_db); + off_t lockLen = i==DB_SHARED_LOCK_OFFSET ? SHARED_SIZE : 1; + struct flock flDb = { .l_type=F_WRLCK, .l_start=startPos, .l_len=lockLen, .l_whence=SEEK_SET }; + int ret = osFcntl(fdDb, F_GETLK, &flDb); if( ret!=SQLITE_OK ){ sqlite3_log(SQLITE_ERROR, "Get File Lock Info Fail! errno: %d", ret); return; } - if( fl_db.l_type!=F_UNLCK ){ + if( flDb.l_type!=F_UNLCK ){ sqlite3_log(SQLITE_WARNING, "lock name: %s, pos: 0x%x, len: 0x%x, lock type: %s, owner pId: %d", - lock_name_list[i], start_pos, lock_len, lock_type[fl_db.l_type], fl_db.l_pid); + lockNameList[i], startPos, lockLen, lockType[flDb.l_type], flDb.l_pid); } - start_pos++; + startPos++; } /* thread WAL Lock Info */ - if( uFile_db->pShm==NULL ){ - return; - } for(int i=0; ipShm->pShmNode->aLock[i] ){ - sqlite3_log(SQLITE_WARNING, "Local WAL Lock[%d] for DB file: %d", i, uFile_db->pShm->pShmNode->aLock[i]); + if( dbFile->pShm->pShmNode->aLock[i] ){ + sqlite3_log(SQLITE_WARNING, "Local WAL Lock[%d] for DB file: %d", i, dbFile->pShm->pShmNode->aLock[i]); } } }