• Rusty Russell's avatar
    Import 898b5edfe757cb145960b8f3631029bfd5592119 from ctdb: · 176844c8
    Rusty Russell authored
    Author: Volker Lendecke <vl@samba.org>  2010-01-30 03:51:09
    
        tdb: fix an early release of the global lock that can cause data corruption
        
        There was a bug in tdb where the
        
                        tdb_brlock(tdb, GLOBAL_LOCK, F_UNLCK, F_SETLKW, 0, 1);
        
        (ending the transaction-"mutex") was done before the
        
                                /* remove the recovery marker */
        
        This means that when a transaction is committed there is a window where another
        opener of the file sees the transaction marker while the transaction committer
        is still fully functional and working on it. This led to transaction being
        rolled back by that second opener of the file while transaction_commit() gave
        no error to the caller.
        
        This patch moves the F_UNLCK to after the recovery marker was removed, closing
        this window.
    176844c8
transaction.c 36.3 KB