- set_header(tdb, &flist->hdr, 0,
- sizeof(*flist) - sizeof(flist->hdr),
- sizeof(*flist) - sizeof(flist->hdr), 1);
+ 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;
+ }