diff options
Diffstat (limited to 'freelist.go')
-rw-r--r-- | freelist.go | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/freelist.go b/freelist.go index 636ed22..d0b1492 100644 --- a/freelist.go +++ b/freelist.go @@ -70,6 +70,23 @@ func (f *freelist) release(txid txid) { sort.Sort(reverseSortedPgids(f.ids)) } +// isFree returns whether a given page is in the free list. +func (f *freelist) isFree(pgid pgid) bool { + for _, id := range f.ids { + if id == pgid { + return true + } + } + for _, m := range f.pending { + for _, id := range m { + if id == pgid { + return true + } + } + } + return false +} + // read initializes the freelist from a freelist page. func (f *freelist) read(p *page) { ids := ((*[maxAllocSize]pgid)(unsafe.Pointer(&p.ptr)))[0:p.count] |