Journaling is a commonly used technique to ensure data consistency in file systems, such as ext3 and ext4. With journaling technique, file system updates are first recorded in a journal (in the commit phase) and later applied to their home locations in the file system (in the checkpoint phase). Based on the contents recorded in the journal, file sytem can be either in data or metadata journaling mode. With data journaling mode enabled, all file system (data and metadata) updates are written to the journal before being written to the files later on. In contrast, with metadata journaling mode, only updated metadata are written to and protected by the journal, while data are written directly to their home locations in the files. File system users are usually reluctant to use the data journaling mode as every modification (data and metadata) to the file system is written twice, and instead resort to metadata journaling for its fast speed.