mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-31 12:10:52 -04:00
jbd2: improve error messages for inconsistent journal heads
Fix up error messages printed when the transaction pointers in a journal head are inconsistent. This improves the error messages which are printed when running xfstests generic/068 in data=journal mode. See the bug report at: https://bugzilla.kernel.org/show_bug.cgi?id=60786 Signed-off-by: "Theodore Ts'o" <[email protected]>
This commit is contained in:
parent
0bfea8118d
commit
66a4cb187b
2 changed files with 24 additions and 19 deletions
|
|
@ -1313,7 +1313,7 @@ int jbd2_journal_dirty_metadata(handle_t *handle, struct buffer_head *bh)
|
|||
journal->j_running_transaction)) {
|
||||
printk(KERN_ERR "JBD2: %s: "
|
||||
"jh->b_transaction (%llu, %p, %u) != "
|
||||
"journal->j_running_transaction (%p, %u)",
|
||||
"journal->j_running_transaction (%p, %u)\n",
|
||||
journal->j_devname,
|
||||
(unsigned long long) bh->b_blocknr,
|
||||
jh->b_transaction,
|
||||
|
|
@ -1336,30 +1336,25 @@ int jbd2_journal_dirty_metadata(handle_t *handle, struct buffer_head *bh)
|
|||
*/
|
||||
if (jh->b_transaction != transaction) {
|
||||
JBUFFER_TRACE(jh, "already on other transaction");
|
||||
if (unlikely(jh->b_transaction !=
|
||||
journal->j_committing_transaction)) {
|
||||
printk(KERN_ERR "JBD2: %s: "
|
||||
"jh->b_transaction (%llu, %p, %u) != "
|
||||
"journal->j_committing_transaction (%p, %u)",
|
||||
if (unlikely(((jh->b_transaction !=
|
||||
journal->j_committing_transaction)) ||
|
||||
(jh->b_next_transaction != transaction))) {
|
||||
printk(KERN_ERR "jbd2_journal_dirty_metadata: %s: "
|
||||
"bad jh for block %llu: "
|
||||
"transaction (%p, %u), "
|
||||
"jh->b_transaction (%p, %u), "
|
||||
"jh->b_next_transaction (%p, %u), jlist %u\n",
|
||||
journal->j_devname,
|
||||
(unsigned long long) bh->b_blocknr,
|
||||
transaction, transaction->t_tid,
|
||||
jh->b_transaction,
|
||||
jh->b_transaction ? jh->b_transaction->t_tid : 0,
|
||||
journal->j_committing_transaction,
|
||||
journal->j_committing_transaction ?
|
||||
journal->j_committing_transaction->t_tid : 0);
|
||||
ret = -EINVAL;
|
||||
}
|
||||
if (unlikely(jh->b_next_transaction != transaction)) {
|
||||
printk(KERN_ERR "JBD2: %s: "
|
||||
"jh->b_next_transaction (%llu, %p, %u) != "
|
||||
"transaction (%p, %u)",
|
||||
journal->j_devname,
|
||||
(unsigned long long) bh->b_blocknr,
|
||||
jh->b_transaction ?
|
||||
jh->b_transaction->t_tid : 0,
|
||||
jh->b_next_transaction,
|
||||
jh->b_next_transaction ?
|
||||
jh->b_next_transaction->t_tid : 0,
|
||||
transaction, transaction->t_tid);
|
||||
jh->b_jlist);
|
||||
WARN_ON(1);
|
||||
ret = -EINVAL;
|
||||
}
|
||||
/* And this case is illegal: we can't reuse another
|
||||
|
|
|
|||
Loading…
Reference in a new issue