This document describes the design and implementation specifics of CFSDSG.MEM, the kernel module (CFSSRV) for CFS-20, a distributed file system for TOPS-20. CFS-20 aims to extend the TOPS-20 file system across a network, requiring processors to agree on file operations and resource management.
The core of CFS-20 is CFSSRV, which contains low-level routines for:
- Resource Management: It maintains a hash table of CFS resources, each represented by a block containing identifying information, state, and callback addresses for events. Resources include file open tokens, frozen writer tokens, directory locks, and file access tokens.
- The Voter: This component manages the distributed consensus for resource acquisition and state changes. It sends "vote requests" (.CFVOT) to other CFS systems and processes "vote replies" (.CFREP). Replies can be unconditional, timed (with retry), or conditional, often including optional data and "transaction counts" to determine the most current information.
- SCA Connection Manager: Responsible for establishing and maintaining network connections to other CFS hosts, managing host tables, sending/receiving messages, and handling reconnections. It includes a "pause" mechanism to ensure data consistency during configuration changes.
- Initialization: Sets up the necessary buffer pools and joins the CFS network.
Key concepts and mechanisms include:
- CFS Resources: These act as distributed locks or tokens, ensuring consistency across the network.
- File Access Tokens: Described as the most critical resource, they control access levels (e.g., read-only, exclusive) to file sections. Their state transitions often involve voting and the execution of DDMP (Disk Data Management Program) to write modified pages to disk and manage local memory copies.
- Directory Locks and Allocation: These are now CFS resources, replacing older local concurrency control schemes to ensure distributed consistency.
- Transaction Numbers: Used as "time-stamps" with resource data to identify the most up-to-date control information in the decentralized CFS environment, especially when resource ownership changes or a previous owner is unavailable.
- Messaging: CFS relies on various message types for coordination, including vote requests/replies, "resource available" notices, and broadcast messages for critical updates like OFN (Open File Number) and EOF (End-of-File) changes.
The document also details extensions to existing TOPS-20 monitor services to integrate CFS-20's distributed control, and temporary features to ease the transition to a fully distributed system.