diff options
author | Ben Johnson <benbjohnson@yahoo.com> | 2014-03-31 11:08:27 -0600 |
---|---|---|
committer | Ben Johnson <benbjohnson@yahoo.com> | 2014-03-31 11:08:27 -0600 |
commit | b5c1715a36de567a5950a911a9ef2a90876610db (patch) | |
tree | 6b0b06f7fc1ca4c4799ebb480961ed297bf9667b /db.go | |
parent | Merge pull request #98 from benbjohnson/fsck (diff) | |
parent | Write freelist after each commit. (diff) | |
download | dedo-b5c1715a36de567a5950a911a9ef2a90876610db.tar.gz dedo-b5c1715a36de567a5950a911a9ef2a90876610db.tar.xz |
Merge pull request #102 from benbjohnson/fix-freelist
Write freelist after each commit.
Diffstat (limited to 'db.go')
-rw-r--r-- | db.go | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -271,6 +271,10 @@ func (db *DB) close() error { db.freelist = nil db.path = "" + // Clear ops. + db.ops.writeAt = nil + db.ops.metaWriteAt = nil + // Close the mmap. if err := db.munmap(); err != nil { return err @@ -533,8 +537,12 @@ func (db *DB) Check() error { reachable := make(map[pgid]*page) reachable[0] = tx.page(0) // meta0 reachable[1] = tx.page(1) // meta1 - reachable[tx.meta.buckets] = tx.page(tx.meta.buckets) - reachable[tx.meta.freelist] = tx.page(tx.meta.freelist) + for i := uint32(0); i <= tx.page(tx.meta.buckets).overflow; i++ { + reachable[tx.meta.buckets+pgid(i)] = tx.page(tx.meta.buckets) + } + for i := uint32(0); i <= tx.page(tx.meta.freelist).overflow; i++ { + reachable[tx.meta.freelist+pgid(i)] = tx.page(tx.meta.freelist) + } // Check each reachable page within each bucket. for _, bucket := range tx.Buckets() { |