]> git.ozlabs.org Git - ccan/blobdiff - ccan/tdb2/test/layout.c
tdb2: test: convert (non-invasive) run tests to api tests.
[ccan] / ccan / tdb2 / test / layout.c
index 77ad1f8e12cc7dd27f2b69178e71226a003897a5..38f79bfc5b250dea614aece8c57475a7aebd1c8e 100644 (file)
@@ -147,9 +147,10 @@ static void add_to_freetable(struct tdb_context *tdb,
                             unsigned ftable,
                             struct tle_freetable *freetable)
 {
-       tdb->ftable_off = freetable->base.off;
-       tdb->ftable = ftable;
-       add_free_record(tdb, eoff, sizeof(struct tdb_used_record) + elen);
+       tdb->tdb2.ftable_off = freetable->base.off;
+       tdb->tdb2.ftable = ftable;
+       add_free_record(tdb, eoff, sizeof(struct tdb_used_record) + elen,
+                       TDB_LOCK_WAIT, false);
 }
 
 static tdb_off_t hbucket_off(tdb_off_t group_start, unsigned ingroup)
@@ -205,7 +206,7 @@ static void add_to_hashtable(struct tdb_context *tdb,
                b_off = hbucket_off(group_start, bucket);               
                if (tdb_read_off(tdb, b_off) == 0) {
                        tdb_write_off(tdb, b_off,
-                                     encode_offset(eoff, bucket, h));
+                                     encode_offset(eoff, in_group, h));
                        return;
                }
        }
@@ -227,7 +228,8 @@ static struct tle_freetable *find_ftable(struct tdb_layout *layout, unsigned num
 }
 
 /* FIXME: Support TDB_CONVERT */
-struct tdb_context *tdb_layout_get(struct tdb_layout *layout)
+struct tdb_context *tdb_layout_get(struct tdb_layout *layout,
+                                  union tdb_attribute *attr)
 {
        unsigned int i;
        tdb_off_t off, len, last_ftable;
@@ -263,13 +265,13 @@ struct tdb_context *tdb_layout_get(struct tdb_layout *layout)
        /* Fill with some weird pattern. */
        memset(mem, 0x99, off);
        /* Now populate our header, cribbing from a real TDB header. */
-       tdb = tdb_open(NULL, TDB_INTERNAL, O_RDWR, 0, &tap_log_attr);
-       memcpy(mem, tdb->map_ptr, sizeof(struct tdb_header));
+       tdb = tdb_open(NULL, TDB_INTERNAL, O_RDWR, 0, attr);
+       memcpy(mem, tdb->file->map_ptr, sizeof(struct tdb_header));
 
        /* Mug the tdb we have to make it use this. */
-       free(tdb->map_ptr);
-       tdb->map_ptr = mem;
-       tdb->map_size = off;
+       free(tdb->file->map_ptr);
+       tdb->file->map_ptr = mem;
+       tdb->file->map_size = off;
 
        last_ftable = 0;
        for (i = 0; i < layout->num_elems; i++) {
@@ -311,7 +313,7 @@ struct tdb_context *tdb_layout_get(struct tdb_layout *layout)
                }
        }
 
-       tdb->ftable_off = find_ftable(layout, 0)->base.off;
+       tdb->tdb2.ftable_off = find_ftable(layout, 0)->base.off;
 
        /* Get physical if they asked for it. */
        if (layout->filename) {
@@ -319,7 +321,8 @@ struct tdb_context *tdb_layout_get(struct tdb_layout *layout)
                              0600);
                if (fd < 0)
                        err(1, "opening %s for writing", layout->filename);
-               if (write(fd, tdb->map_ptr, tdb->map_size) != tdb->map_size)
+               if (write(fd, tdb->file->map_ptr, tdb->file->map_size)
+                   != tdb->file->map_size)
                        err(1, "writing %s", layout->filename);
                close(fd);
                tdb_close(tdb);