[Samba] tdbtool repack fails
Andrej Gessel
andrej.gessel at janztec.com
Thu Aug 2 13:53:37 UTC 2018
Hello list,
I try to repack(tdbtool repack) my "dc=domain,dc=com.ldb" file:
tdb> info
Size of file/data: 3388084000/1050098055
Header offset/logical size: 0/3388084000
Number of records: 669737
Incompatible hash: no
Active/supported feature flags: 0x00000000/0x00000001
Robust mutexes locking: no
Smallest/average/largest keys: 12/57/242
Smallest/average/largest data: 72/1510/1235987
Smallest/average/largest padding: 5/412/252927
Number of dead records: 2
Smallest/average/largest dead records: 399912712/661866360/923820008
Number of free records: 38999
Smallest/average/largest free records: 12/18485/715170720
Number of hash chains: 10000
Smallest/average/largest hash chains: 26/66/116
Number of uncoalesced records: 253
Smallest/average/largest uncoalesced runs: 1/1/2
Percentage keys/data/padding/free/dead/rechdrs&tailers/hashes:
1/30/8/21/39/1/0
it ends with this error:
tdb_recovery_allocate: overflow recovery area
tdb_transaction_prepare_commit: failed to setup recovery data
../lib/tdb/common/tdb.c:1055 Failed to commit
I follow the code and found this line:
transaction.c:783
/* New head will be at end of file. */
recovery_head = tdb->map_size;
In my case it means following:
my filesize is 3,3GB, old recovery_head was on 2064351232, size of old
recovery was about 923820008, size of new recovery should be 1323794228,
after tdb_free of old recovery area and setting the new recovery head to
end of file(tdb->map_size), it is no more place for new recovery area,
so the next check returns "overflow recovery area".
I'm now thinking about how it should be fixed? I thinking about to
improve the checks and maybe search for last data entry and set new
recovery head behind it?
Andrej
More information about the samba
mailing list