Scalable Session Locking for a Distributed File System

Appeared in Cluster Computing Journal 4.


File systems provide an interface for applications to obtain exclusive access to files, in which a process holds privileges to a file that cannot be preempted and restrict the capabilities of other processes. Local file systems do this by maintaining information about the privileges of current file sessions, and checking subsequent sessions for compatibility. Implementing exclusive access in this manner for distributed file systems degrades performance by requiring every new file session to be registered with a lock server that maintains global session state. We present two techniques for improving the performance of session management in the distributed environment. We introduce a distributed lock for managing file access, called a semi-preemptible lock, that allows clients to cache privileges. Under a semi-preemptible lock, a file system creates new sessions without messages to the lock manager. This improves performance by exploiting locality – the affinity of files to clients. We also present data structures and algorithms for the dynamic evaluation of locks that allow a distributed file system to efficiently manage arbitrarily complex locking. In this case, complex means that an object can be locked in a large number of unique modes. The combination of these techniques results in a distributed locking scheme that supports fine-grained concurrency control with low memory and message overhead and with the assurance that their locking system is correct and avoids unnecessary deadlocks.

Publication date:
October 2001

Randal Burns
Robert M. Rees
Larry Stockmeyer
Darrell D. E. Long

Dynamic Non-Hierarchical File Systems

Available media

Full paper text: PDF

Bibtex entry

  author       = {Randal Burns and Robert M. Rees and Larry Stockmeyer and Darrell D. E. Long},
  title        = {Scalable Session Locking for a Distributed File System},
  journal      = {Cluster Computing Journal},
  pages        = {295-306},
  volume       = {4},
  month        = oct,
  year         = {2001},
Last modified 5 Aug 2020