• Rusty Russell's avatar
    tdb: tdb_allrecord_lock/tdb_allrecord_unlock/tdb_allrecord_upgrade · 88541fe7
    Rusty Russell authored
    Centralize locking of all chains of the tdb; rename _tdb_lockall to
    tdb_allrecord_lock and _tdb_unlockall to tdb_allrecord_unlock, and
    tdb_brlock_upgrade to tdb_allrecord_upgrade.
    
    Then we use this in the transaction code.  Unfortunately, if the transaction
    code records that it has grabbed the allrecord lock read-only, write locks
    will fail, so we treat this upgradable lock as a write lock, and mark it
    as upgradable using the otherwise-unused offset field.
    
    One subtlety: now the transaction code is using the allrecord_lock, the
    tdb_release_extra_locks() function drops it for us, so we no longer need
    to do it manually in _tdb_transaction_cancel.
    Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
    88541fe7
tdb_private.h 11 KB