Abstract
To implement share modes, leases and oplocks in a multi-process environment like Samba, inter-process communication to coordinate locking information and state changes must be fast, reliable and understandable. From system V shared memory and UDP sockets Samba over time has adapted modern forms of shared memory and mutexes. Samba's implementation of the locking state has several layers: * tdb is a raw key/value store * dbwrap is an abstraction on tdb, allowing alternative backend k/v stores * dbwrap_watch enables processes to monitor changes of values * g_lock implements per-record locking for exclusive operations. On top of that stack Samba implements something similar to the MS-SMB2 concept of GlobalOpenTable and other global data structures required to implement SMB. The goal of this talk is to deepen understanding and to allow possible improvements and alternative implementations. For example, right now the tables are implemented only for local access and for clustered access using ctdb. It should be possible to extend this to other implementations of distributed K/V stores. This talk will provide a foundation to extend Samba beyond ctdb.
Learning Objectives
Thorough understanding of Samba's locking architecture,Provide ideas for extending Samba to clusters beyond ctdb