]> git.ozlabs.org Git - ccan-lca-2011.git/blobdiff - ccan/tdb2/test/layout.c
tdb2: shrink free header from 32 to 24 bytes.
[ccan-lca-2011.git] / ccan / tdb2 / test / layout.c
index b125f67663c71fa7ddc9df637be01d028200b308..25f41e25c3923875acfec2cd00364b0cf6718895 100644 (file)
@@ -97,9 +97,9 @@ static void set_data_record(void *mem, struct tdb_context *tdb,
 {
        struct tdb_used_record *u = mem;
 
-       set_header(tdb, u, used->key.dsize, used->data.dsize,
-                  used->key.dsize + used->data.dsize + used->extra,
-                  tdb_hash(tdb, used->key.dptr, used->key.dsize));
+       set_used_header(tdb, u, used->key.dsize, used->data.dsize,
+                       used->key.dsize + used->data.dsize + used->extra,
+                       tdb_hash(tdb, used->key.dptr, used->key.dsize));
        memcpy(u + 1, used->key.dptr, used->key.dsize);
        memcpy((char *)(u + 1) + used->key.dsize,
               used->data.dptr, used->data.dsize);
@@ -111,7 +111,7 @@ static void set_hashtable(void *mem, struct tdb_context *tdb,
        struct tdb_used_record *u = mem;
        tdb_len_t len = sizeof(tdb_off_t) << TDB_SUBLEVEL_HASH_BITS;
 
-       set_header(tdb, u, 0, len, len + htable->extra, 0);
+       set_used_header(tdb, u, 0, len, len + htable->extra, 0);
        memset(u + 1, 0, len);
 }
 
@@ -121,9 +121,9 @@ static void set_freelist(void *mem, struct tdb_context *tdb,
 {
        struct tdb_freelist *flist = mem;
        memset(flist, 0, sizeof(*flist));
-       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);
@@ -136,9 +136,11 @@ static void set_freelist(void *mem, struct tdb_context *tdb,
 static void add_to_freetable(struct tdb_context *tdb,
                             tdb_off_t eoff,
                             tdb_off_t elen,
+                            unsigned flist,
                             struct tle_freelist *freelist)
 {
        tdb->flist_off = freelist->base.off;
+       tdb->flist = flist;
        add_free_record(tdb, eoff, sizeof(struct tdb_used_record) + elen);
 }
 
@@ -288,6 +290,7 @@ struct tdb_context *tdb_layout_get(struct tdb_layout *layout)
                switch (e->base.type) {
                case FREE:
                        add_to_freetable(tdb, e->base.off, e->free.len,
+                                        e->free.flist_num,
                                         find_flist(layout, e->free.flist_num));
                        break;
                case DATA: