overallocate all records by 25%
[ira/wip.git] / lib / tdb / common / freelist.c
index 2f2a4c379b0690399a9f4065b15960e667300bf0..3bc3965141b605ba5ad62f918e156e9deece9aed 100644 (file)
@@ -284,6 +284,9 @@ tdb_off_t tdb_allocate(struct tdb_context *tdb, tdb_len_t length, struct list_st
        if (tdb_lock(tdb, -1, F_WRLCK) == -1)
                return 0;
 
+       /* over-allocate to reduce fragmentation */
+       length *= 1.25;
+
        /* Extra bytes required for tailer */
        length += sizeof(tdb_off_t);
        length = TDB_ALIGN(length, TDB_ALIGNMENT);