jbd2: protect all log tail updates with j_checkpoint_mutex
authorJan Kara <jack@suse.cz>
Tue, 13 Mar 2012 19:43:04 +0000 (15:43 -0400)
committerBen Hutchings <ben@decadent.org.uk>
Tue, 13 Oct 2015 02:46:00 +0000 (03:46 +0100)
commit7f63bfd0051575b4487f2e17b44e2cc4eb39384b
treeae7ac01ff679b16e93bcf2113b3f512a06919ac7
parent516aa86b9ffaa8daba9dd3e8ef16350ffafbb25e
jbd2: protect all log tail updates with j_checkpoint_mutex

commit a78bb11d7acd525623c6a0c2ff4e213d527573fa upstream.

There are some log tail updates that are not protected by j_checkpoint_mutex.
Some of these are harmless because they happen during startup or shutdown but
updates in jbd2_journal_commit_transaction() and jbd2_journal_flush() can
really race with other log tail updates (e.g. someone doing
jbd2_journal_flush() with someone running jbd2_cleanup_journal_tail()). So
protect all log tail updates with j_checkpoint_mutex.

Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
[bwh: Backported to 3.2:
 - Adjust context
 - Add unlock on the error path in jbd2_journal_flush()]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Cc: Bartosz Kwitniewski <zerg2000@astral.org.pl>
fs/jbd2/commit.c
fs/jbd2/journal.c