linux-stable/fs/jbd2
Kai Li c982320078 jbd2: clear JBD2_ABORT flag before journal_reset to update log tail info when load journal
[ Upstream commit a09decff5c ]

If the journal is dirty when the filesystem is mounted, jbd2 will replay
the journal but the journal superblock will not be updated by
journal_reset() because JBD2_ABORT flag is still set (it was set in
journal_init_common()). This is problematic because when a new transaction
is then committed, it will be recorded in block 1 (journal->j_tail was set
to 1 in journal_reset()). If unclean shutdown happens again before the
journal superblock is updated, the new recorded transaction will not be
replayed during the next mount (because of stale sb->s_start and
sb->s_sequence values) which can lead to filesystem corruption.

Fixes: 85e0c4e89c ("jbd2: if the journal is aborted then don't allow update of the log tail")
Signed-off-by: Kai Li <li.kai4@h3c.com>
Link: https://lore.kernel.org/r/20200111022542.5008-1-li.kai4@h3c.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-02-24 08:36:28 +01:00
..
checkpoint.c jbd2: remove repeated assignments in __jbd2_log_wait_for_space() 2019-04-06 18:14:17 -04:00
commit.c jbd2: do not clear the BH_Mapped flag when forgetting a metadata buffer 2020-02-19 19:53:09 +01:00
journal.c jbd2: clear JBD2_ABORT flag before journal_reset to update log tail info when load journal 2020-02-24 08:36:28 +01:00
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
Makefile treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
recovery.c jbd2: clarify bad journal block checksum message 2018-02-18 21:33:13 -05:00
revoke.c jbd2: flush_descriptor(): Do not decrease buffer head's ref count 2019-08-11 16:29:41 -04:00
transaction.c jbd2: move the clearing of b_modified flag to the journal_unmap_buffer() 2020-02-19 19:53:09 +01:00