- struct free_zone_header *fz = mem;
- memset(fz, 0, zone_header_len(zone));
- fz->zone_bits = zone->zone_bits;
+ struct tdb_freelist *flist = mem;
+ memset(flist, 0, sizeof(*flist));
+ set_used_header(tdb, &flist->hdr, 0,
+ sizeof(*flist) - sizeof(flist->hdr),
+ sizeof(*flist) - sizeof(flist->hdr), 1);
+
+ if (last_flist) {
+ flist = (struct tdb_freelist *)((char *)hdr + last_flist);
+ flist->next = freelist->base.off;
+ } else {
+ hdr->free_list = freelist->base.off;
+ }