Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix another free block list related bug. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | freelist-rework |
Files: | files | file ages | folders |
SHA1: |
f9e75777b0fe2ab135c9398fec081561 |
User & Date: | dan 2012-10-30 17:19:04.901 |
Context
2012-10-30
| ||
17:34 | Avoid writing completely empty segments to the snapshot. check-in: 803f36b62f user: dan tags: freelist-rework | |
17:19 | Fix another free block list related bug. check-in: f9e75777b0 user: dan tags: freelist-rework | |
16:27 | Fix a couple of problems in the code that handles free block lists. check-in: 5c3e17cc90 user: dan tags: freelist-rework | |
Changes
Changes to src/lsm_file.c.
︙ | ︙ | |||
1532 1533 1534 1535 1536 1537 1538 | } /* If this is the first page allocated, or if the page allocated is the ** last in the block, allocate a new block here. */ if( iApp==0 || fsIsLast(pFS, iApp) ){ int iNew; /* New block number */ | | > | 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 | } /* If this is the first page allocated, or if the page allocated is the ** last in the block, allocate a new block here. */ if( iApp==0 || fsIsLast(pFS, iApp) ){ int iNew; /* New block number */ rc = lsmBlockAllocate(pFS->pDb, &iNew); if( rc!=LSM_OK ) return rc; if( iApp==0 ){ iApp = fsFirstPageOnBlock(pFS, iNew); }else{ iNext = fsFirstPageOnBlock(pFS, iNew); } } |
︙ | ︙ |
Changes to src/lsm_shared.c.
︙ | ︙ | |||
499 500 501 502 503 504 505 | for(iCtx=0; iCtx<2; iCtx++){ int i; WalkFreelistCtx *p = &ctx[iCtx]; for(i=p->iFree; p->pFreelist && rc==LSM_OK && i<p->pFreelist->nEntry; i++){ FreelistEntry *pEntry = &p->pFreelist->aEntry[i]; if( pEntry->iId>=0 && p->xUsr(p->pUsrctx, pEntry->iBlk, pEntry->iId) ){ | | | 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 | for(iCtx=0; iCtx<2; iCtx++){ int i; WalkFreelistCtx *p = &ctx[iCtx]; for(i=p->iFree; p->pFreelist && rc==LSM_OK && i<p->pFreelist->nEntry; i++){ FreelistEntry *pEntry = &p->pFreelist->aEntry[i]; if( pEntry->iId>=0 && p->xUsr(p->pUsrctx, pEntry->iBlk, pEntry->iId) ){ return LSM_OK; } } } return rc; } |
︙ | ︙ |