Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 85e0c4e8 authored by Theodore Ts'o's avatar Theodore Ts'o
Browse files

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: default avatarTheodore Ts'o <tytso@mit.edu>
Cc: stable@vger.kernel.org
parent fb7c0244
Loading
Loading
Loading
Loading
+4 −1
Original line number Original line Diff line number Diff line
@@ -974,7 +974,7 @@ int __jbd2_update_log_tail(journal_t *journal, tid_t tid, unsigned long block)
}
}


/*
/*
 * 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);