diff options
author | Ben Johnson <benbjohnson@yahoo.com> | 2014-01-29 22:50:29 -0500 |
---|---|---|
committer | Ben Johnson <benbjohnson@yahoo.com> | 2014-01-29 22:50:29 -0500 |
commit | 4ad445aa8546d19a9bb9a34a5d3c27cd5a158fd9 (patch) | |
tree | c6769f8d479d6ec8d04fc2a2128e5a6ccd243b26 /db.go | |
parent | Refactor meta.copy() and page.init(). (diff) | |
download | dedo-4ad445aa8546d19a9bb9a34a5d3c27cd5a158fd9.tar.gz dedo-4ad445aa8546d19a9bb9a34a5d3c27cd5a158fd9.tar.xz |
Add freelist page type.
Diffstat (limited to 'db.go')
-rw-r--r-- | db.go | 18 |
1 files changed, 17 insertions, 1 deletions
@@ -146,18 +146,34 @@ func (db *DB) init() error { db.pageSize = db.os.Getpagesize() // Create two meta pages on a buffer. - buf := make([]byte, db.pageSize*2) + buf := make([]byte, db.pageSize*4) for i := 0; i < 2; i++ { p := db.pageInBuffer(buf[:], pgid(i)) p.id = pgid(i) p.flags = p_meta + // Initialize the meta page. m := p.meta() m.magic = magic m.version = Version m.pageSize = uint32(db.pageSize) + m.version = Version + m.free = 3 + m.sys.root = 4 } + // Write an empty freelist at page 3. + p := db.pageInBuffer(buf[:], pgid(2)) + p.id = pgid(3) + p.flags = p_freelist + p.count = 0 + + // Write an empty leaf page at page 4. + p = db.pageInBuffer(buf[:], pgid(3)) + p.id = pgid(4) + p.flags = p_leaf + p.count = 0 + // Write the buffer to our data file. if _, err := db.metafile.WriteAt(buf, 0); err != nil { return err |