func writeFreeLists()

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()
}