patch for user rename with tdbsam
tridge at samba.org
tridge at samba.org
Tue Oct 11 03:43:00 GMT 2005
Jim,
> Have you looked at it? Just wondering how much work it would be.
It should be trivial to backport. In fact, just grab all of lib/tdb
from Samba4 and plonk it in Samba3. The API remains the same, except
you can now optionally use transactions if you want to.
I think for the situation you are talking about it is ideal. The
properties are:
- changes made within a transaction are visible to the person doing
the transaction
- changes made within the transaction are not visible to anyone else
until the transaction is committed (other processes can continue to
do searches while the transaction is happening, and will see the
pre-transaction data until the commit is successful)
- if the transaction is cancelled then no IOs happen at all (the file
is completely unmodified)
- transactions are crash proof (and kill -9 proof). If
tdb_transaction_commit() has returned then the changes are
guaranteed to be on disk. If the crash happens before that function
completes then you end up with an unmodified db (it auto-recovers
from partial writes on the next tdb connect if needed)
- the file format is forwards and backwards compatible with the old
tdb code. The only exception to this is if you crash half way
through a commit, then the old (pre-transaction) code won't know
how to auto-recover the db.
- you can mix transaction-aware code with code that is not
transaction aware. It just means if you crash while doing a write
not inside a transaction you risk corruption (just like the old tdb
code).
To convert tdbsam just do a tdb_transaction_start(tdb) at the entry
point to any code that modifies the db, and either do a
tdb_transaction_commit(tdb) when happy with the changes or a
tdb_transaction_cancel(tdb) if you want to throw them all away.
Cheers, Tridge
More information about the samba-technical
mailing list