tdb: defragment the freelist in tdb_allocate_from_freelist()
authorMichael Adam <obnox@samba.org>
Wed, 11 Jun 2014 10:05:57 +0000 (12:05 +0200)
committerVolker Lendecke <vl@samba.org>
Thu, 26 Jun 2014 10:16:03 +0000 (12:16 +0200)
commitf5f08aaf7fa4961924ccc4d359626105c3a61ccd
treef0f403f688faa1231cba29922de56a71d6f4f578
parent321300c8cb4e7f13290862c160ad73de4b066687
tdb: defragment the freelist in tdb_allocate_from_freelist()

While we are traversing the freelist anyways, merge a record
with the left if it is also a free list record.

That partially makes up for the fragmentation introduced by
the lack of merging with right records in tdb_free().

Note there is a potential slight downside:
If the left record we merge the current record into was earlier
in the chain and has hence already been met in traverse,
then we can not use the enlarged record even if it might be
a new best fit.

Signed-off-by: Michael Adam <obnox@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
Autobuild-User(master): Volker Lendecke <vl@samba.org>
Autobuild-Date(master): Thu Jun 26 12:16:03 CEST 2014 on sn-devel-104