Samuel Kalbfleisch, Lukas Werling and Frank Bellosa
Automatic Non-Volatile Memory Crash Consistency Testing for Kernel Space Applications
Non-volatile memory (NVM) is a new type of memory technology that blurs the boundary between main memory and secondary storage. In typical memory persistency models, write operations to NVM are not persisted in program order. For achieving crash consistency as well as atomicity, the architecture provides instructions that impose ordering constraints. Yet, achieving crash consistency has turned out to be difficult in practice, motivating the development of tools for automatic crash consistency bug discovery.
We propose a new crash consistency testing framework that supports full systems including kernel software and aims to lift limitations of previous work. It works with unmodified binaries, applies state-of-the-art heuristics to create crash images and automates bug confirmation and atomicity testing. We apply our framework to file systems and uncover new crash consistency bugs in the NOVA file system.