Using Declarative Invariants for Protecting File-System Integrity

Kuei Sun, Daniel Fryer, Ashvin Goel, Angela Demke Brown

6th Workshop on Programming Languages and Operating Systems (PLOS 2011), Cascais, Portugal, October 2011

 

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.

 

Manuscript

Pdf

 

Bibtex

Bib