jbd2: if the journal is aborted then don't allow update of the log tail

This updates the jbd2 superblock unnecessarily, and on an abort we
shouldn't truncate the log.

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Cc: stable@vger.kernel.org
This commit is contained in:
Theodore Ts'o 2018-02-19 12:22:53 -05:00
Родитель fb7c02445c
Коммит 85e0c4e89c
1 изменённых файлов: 4 добавлений и 1 удалений

Просмотреть файл

@ -974,7 +974,7 @@ out:
} }
/* /*
* This is a variaon of __jbd2_update_log_tail which checks for validity of * This is a variation of __jbd2_update_log_tail which checks for validity of
* provided log tail and locks j_checkpoint_mutex. So it is safe against races * provided log tail and locks j_checkpoint_mutex. So it is safe against races
* with other threads updating log tail. * with other threads updating log tail.
*/ */
@ -1417,6 +1417,9 @@ int jbd2_journal_update_sb_log_tail(journal_t *journal, tid_t tail_tid,
journal_superblock_t *sb = journal->j_superblock; journal_superblock_t *sb = journal->j_superblock;
int ret; int ret;
if (is_journal_aborted(journal))
return -EIO;
BUG_ON(!mutex_is_locked(&journal->j_checkpoint_mutex)); BUG_ON(!mutex_is_locked(&journal->j_checkpoint_mutex));
jbd_debug(1, "JBD2: updating superblock (start %lu, seq %u)\n", jbd_debug(1, "JBD2: updating superblock (start %lu, seq %u)\n",
tail_block, tail_tid); tail_block, tail_tid);