in freelist.go [439:471]
func writeFreeLists(
to regionList,
pageSize uint,
metaList, dataList regionList,
onPage func(id PageID, buf []byte) reason,
) reason {
allocPages := to.PageIDs()
writer := newPagingWriter(allocPages, pageSize, 0, onPage)
var writeErr reason
writeList := func(isMeta bool, lst regionList) {
if writeErr != nil {
return
}
for _, reg := range lst {
var buf [maxRegionEncSz]byte
n := encodeRegion(buf[:], isMeta, reg)
if err := writer.Write(buf[:n]); err != nil {
writeErr = err
return
}
}
}
writeList(true, metaList)
writeList(false, dataList)
if writeErr != nil {
return writeErr
}
return writer.Flush()
}