Guaranteeing the Metadata Update Atomicity in EXT4 File system
Seongbae Son, Jinsoo Yoo, Youjip Won · 2017
In this paper, we address the issue of guaranteeing the atomicity of metadata update in a write() system call in EXT4 filesystem. Recent versions of EXT4 delay inserting the updated inode to the running journal transaction until the associated dirty pages are actually written to the disk. This is to avoid excessive f sync() overhead. While this approach effectively reduces the tail latency of f sync (), we found that it can incorrectly recover the file and it can expose the interim state of the inode to the application when the filesystem crashes unexpectedly. To address this problem, we propose Delayed Inode Update, DIU. Instead of separating the update of an inode and its insertion to the running transaction, we propose delaying the update until the associated inode is inserted into journal transaction. Delayed Inode Update is crafted not to entail any performance overhead nor does it increase the f sync() latency. With Delayed Inode Update, the average and the worst case latency of an f sync() decrease by 15% and 43% in a designated workload, respectively.