Using declarative invariants for protecting file-system integrity

  • Authors:
  • Jack Sun;Daniel Fryer;Ashvin Goel;Angela Demke Brown

  • Affiliations:
  • University of Toronto;University of Toronto;University of Toronto;University of Toronto

  • Venue:
  • PLOS '11 Proceedings of the 6th Workshop on Programming Languages and Operating Systems
  • Year:
  • 2011

Quantified Score

Hi-index 0.00

Visualization

Abstract

We have been developing a framework, called Recon, that uses runtime checking to protect the integrity of file-system metadata on disk. Recon performs consistency checks at commit points in transaction-based file systems. We define declarative statements called consistency invariants for a file system, which must be satisfied by each transaction being committed to disk. By checking each transaction before it commits, we prevent any corruption to file-system metadata from reaching the disk. Our prototype system required writing the consistency invariants in C. In this paper, we argue that using a declarative language to express and check these invariants improves the clarity of the rules, making them easier to reason about, verify, and port to new file systems. We describe how file system invariants can be written and checked using the Datalog declarative language in the Recon framework.