Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix a problem with growing the database file in mmap mode. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | multi-process |
Files: | files | file ages | folders |
SHA1: |
1a86aa1c6b3a11db425a19c24732f734 |
User & Date: | dan 2012-09-03 14:50:32.659 |
Context
2012-09-03
| ||
17:57 | Add a missing unlock(WRITER) call to lsmCheckpointWrite(). check-in: e97d02f068 user: dan tags: multi-process | |
14:50 | Fix a problem with growing the database file in mmap mode. check-in: 1a86aa1c6b user: dan tags: multi-process | |
11:34 | Fix a race condition between flushing an in-memory tree to disk and opening a read-transaction. check-in: 6ced48df30 user: dan tags: multi-process | |
Changes
Changes to lsm-test/lsmtest_main.c.
︙ | ︙ | |||
459 460 461 462 463 464 465 | return (nFail!=0); } static lsm_db *configure_lsm_db(TestDb *pDb){ lsm_db *pLsm; pLsm = tdb_lsm(pDb); if( pLsm ){ | | | 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 | return (nFail!=0); } static lsm_db *configure_lsm_db(TestDb *pDb){ lsm_db *pLsm; pLsm = tdb_lsm(pDb); if( pLsm ){ tdb_lsm_config_str(pDb, "mmap=1 autowork=1 nmerge=4 worker_nmerge=4"); } return pLsm; } static void do_speed_write_hook2( void *pCtx, |
︙ | ︙ |
Changes to src/lsm_file.c.
︙ | ︙ | |||
644 645 646 647 648 649 650 651 652 653 654 655 656 | FileSystem *pFS, i64 iSz, int *pRc ){ if( *pRc==LSM_OK && iSz>pFS->nMap ){ Page *pFix; int rc; rc = lsmEnvRemap(pFS->pEnv, pFS->fdDb, iSz, &pFS->pMap, &pFS->nMap); if( rc==LSM_OK ){ u8 *aData = (u8 *)pFS->pMap; for(pFix=pFS->pLruFirst; pFix; pFix=pFix->pLruNext){ pFix->aData = &aData[pFS->nPagesize * (i64)(pFix->iPg-1)]; } | > < | 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 | FileSystem *pFS, i64 iSz, int *pRc ){ if( *pRc==LSM_OK && iSz>pFS->nMap ){ Page *pFix; int rc; u8 *aOld = pFS->pMap; rc = lsmEnvRemap(pFS->pEnv, pFS->fdDb, iSz, &pFS->pMap, &pFS->nMap); if( rc==LSM_OK ){ u8 *aData = (u8 *)pFS->pMap; for(pFix=pFS->pLruFirst; pFix; pFix=pFix->pLruNext){ pFix->aData = &aData[pFS->nPagesize * (i64)(pFix->iPg-1)]; } lsmSortedRemap(pFS->pDb); } *pRc = rc; } } /* |
︙ | ︙ |
Changes to src/lsm_sorted.c.
︙ | ︙ | |||
602 603 604 605 606 607 608 | static int btreeCursorLoadKey(BtreeCursor *pCsr){ int rc = LSM_OK; if( pCsr->iPg<0 ){ pCsr->pKey = 0; pCsr->nKey = 0; pCsr->eType = 0; }else{ | > > > > | | | | | | > > > > > | 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 | static int btreeCursorLoadKey(BtreeCursor *pCsr){ int rc = LSM_OK; if( pCsr->iPg<0 ){ pCsr->pKey = 0; pCsr->nKey = 0; pCsr->eType = 0; }else{ int iPg; for(iPg=pCsr->iPg; iPg>=0; iPg--){ int iCell = pCsr->aPg[pCsr->iPg].iCell; if( iCell>=0 ){ int dummy; rc = pageGetBtreeKey( pCsr->aPg[pCsr->iPg].pPage, pCsr->aPg[pCsr->iPg].iCell, &dummy, &pCsr->eType, &pCsr->pKey, &pCsr->nKey, &pCsr->blob ); pCsr->eType |= SORTED_SEPARATOR; break; } } if( iPg<0 ) rc = LSM_CORRUPT_BKPT; } return rc; } static int btreeCursorPtr(u8 *aData, int nData, int iCell){ int nCell; |
︙ | ︙ |