jbd: Write journal superblock with WRITE_FUA after checkpointing
authorJan Kara <jack@suse.cz>
Sat, 7 Apr 2012 09:05:19 +0000 (11:05 +0200)
committerJan Kara <jack@suse.cz>
Tue, 15 May 2012 21:34:37 +0000 (23:34 +0200)
commitfd2cbd4dfa3db477dd6226d387d3f1911d36a6a9
treeb0ada946d14cdcf5db6da2d177be9590a3449e9a
parent1ce8486dcc00c1e095af8d155fa4451936b89013
jbd: Write journal superblock with WRITE_FUA after checkpointing

If journal superblock is written only in disk's caches and other transaction
starts reusing space of the transaction cleaned from the log, it can happen
blocks of a new transaction reach the disk before journal superblock. When
power failure happens in such case, subsequent journal replay would still try
to replay the old transaction but some of it's blocks may be already
overwritten by the new transaction. For this reason we must use WRITE_FUA when
updating log tail and we must first write new log tail to disk and update
in-memory information only after that.

Signed-off-by: Jan Kara <jack@suse.cz>
fs/jbd/checkpoint.c
fs/jbd/commit.c
fs/jbd/journal.c
include/linux/jbd.h
include/trace/events/jbd.h
This page took 0.025802 seconds and 5 git commands to generate.