mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-23 07:01:23 +00:00
jbd2: protect all log tail updates with j_checkpoint_mutex
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>
This commit is contained in:
parent
24bcc89c7e
commit
a78bb11d7a
2 changed files with 18 additions and 3 deletions
|
@ -340,7 +340,9 @@ void jbd2_journal_commit_transaction(journal_t *journal)
|
|||
/* Do we need to erase the effects of a prior jbd2_journal_flush? */
|
||||
if (journal->j_flags & JBD2_FLUSHED) {
|
||||
jbd_debug(3, "super block updated\n");
|
||||
mutex_lock(&journal->j_checkpoint_mutex);
|
||||
jbd2_journal_update_sb_log_tail(journal);
|
||||
mutex_unlock(&journal->j_checkpoint_mutex);
|
||||
} else {
|
||||
jbd_debug(3, "superblock not updated\n");
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue