Cache Consistency: Frangipani

  • I like they don't shy away from saying they didn't explore something or they haven't got enough experience with something.

  • Small data blocks and large data blocks separately. Clever.

  • Very decentralized. All the file system logic is on the clients.

    • Challenges with consistency then.


  • Cache coherence.

  • Atomicity.

  • Crash recovery.

Coherence is solved with locks.

Atomic multi-step operations:

  • Distributed transactions.

  • First acquire all the locks I need. Then do all updates. Then release all the locks.

  • But can crash in the middle of doing the updates. With locks.

    • Can't just release its locks.

    • So do write-ahead logging (WAL).

    • Separate per-workstation logs, in the shared storage.

    • Logs contain only metadata-changes, not file contents.

    • Log initially is in-memory; written to Petal only when it has to be.

  • In revoke:

    • Write log to Petal.

    • Write modified blocks for locks.

    • Send release.

  • If a workstation crashes while holding a lock, another workstation will replay its log! And only then the lock will he released.

Last updated