Remove an extra jbd2_journal_put_journal_head() call added in merge commit 1bd80362fc0b60d44d2808a6f8dc5f1054a9d8ea. jbd2_journal_put_journal_head() is already called after write_unlock().
This commit makes fs/jbd2 match v5.4.43-rt25 of git://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-stable-rt.git This sometimes caused the following invalid opcode error when a postgresql database was being written on an ext4 filesystem. invalid opcode: 0000 [#1] PREEMPT_RT SMP PTI CPU: 0 PID: 589 Comm: postmaster Not tainted 5.4.43-rt24-yocto-preempt-rt #1 Hardware name: advantech som-db5800-som-6867/som-db5800-som-6867, BIOS 2018.09 03/29/2019 RIP: 0010:jbd2_journal_put_journal_head+0x1cb/0x1d7 Code: 8b 03 a9 00 00 40 00 75 f4 e9 65 fe ff ff 0f 0b 48 8b 00 a9 00 00 04 00 0f 84 26 ff ff ff e8 3c 12 c8 ff e9 1c ff ff ff 0f 0b <0f> 0b 0f 0b 0f 0b 0f 0b 0f 0b 0f 0b 0f 1f 44 00 00 55 48 89 e5 53 RSP: 0018:ffffb34200e0f930 EFLAGS: 00010286 RAX: ffff9b4db6663540 RBX: ffff9b4db65b0390 RCX: 0000000000000001 RDX: 0000000000000000 RSI: 0000000000000246 RDI: 0000000000000000 RBP: ffffb34200e0f948 R08: 0000000000000000 R09: 0000000000000001 R10: ffffffffffffffc0 R11: 000000000000003f R12: ffff9b4db6663540 R13: ffff9b4db65b0390 R14: ffff9b4db6663540 R15: 0000000000001000 FS: 00007fadff2ba740(0000) GS:ffff9b4df9000000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 000055a694a84530 CR3: 00000000735f8000 CR4: 00000000001006f0 Call Trace: jbd2_journal_invalidatepage+0x276/0x390 __ext4_journalled_invalidatepage+0x62/0x100 ext4_journalled_invalidatepage+0xe/0x20 truncate_cleanup_page+0x4a/0xb0 truncate_inode_pages_range+0x1ec/0x6f0 ? ext4_rename+0x170/0x870 ? preempt_count_add+0x4d/0xc0 ? preempt_count_add+0x4d/0xc0 ? migrate_enable+0x11e/0x430 ? preempt_count_add+0x4d/0xc0 ? migrate_enable+0x11e/0x430 truncate_inode_pages_final+0x38/0x60 ext4_evict_inode+0x11e/0x590 evict+0xc8/0x190 iput+0x191/0x250 dentry_unlink_inode+0x104/0x150 __dentry_kill+0xd4/0x170 dput.part.39+0x14c/0x2e0 dput+0xe/0x10 ovl_destroy_inode+0x19/0x50 destroy_inode+0x41/0x80 evict+0x135/0x190 iput+0x191/0x250 dentry_unlink_inode+0x104/0x150 __dentry_kill+0xd4/0x170 dput.part.39+0x14c/0x2e0 dput+0xe/0x10 do_renameat2+0x408/0x590 __x64_sys_rename+0x20/0x30 do_syscall_64+0x4d/0x120 entry_SYSCALL_64_after_hwframe+0x44/0xa9 RIP: 0033:0x7fadff35f3a7 Code: e8 4e 5c 09 00 85 c0 0f 95 c0 0f b6 c0 f7 d8 5b c3 66 90 b8 ff ff ff ff 5b c3 66 0f 1f 84 00 00 00 00 00 b8 52 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 01 c3 48 8b 15 b9 ea 15 00 f7 d8 64 89 02 b8 RSP: 002b:00007fff018e7ff8 EFLAGS: 00000246 ORIG_RAX: 0000000000000052 RAX: ffffffffffffffda RBX: 000055a6949e2250 RCX: 00007fadff35f3a7 RDX: 000055a6949c3070 RSI: 00007fff018e8460 RDI: 00007fff018e8060 RBP: 00007fff018e8040 R08: 000000000000021f R09: 000055a6949e2250 R10: 0000000000000000 R11: 0000000000000246 R12: 00007fff018e8060 R13: 00007fff018e8460 R14: 0000000000000000 R15: 0000000000000000 Signed-off-by: George McCollister <[email protected]> --- fs/jbd2/transaction.c | 1 - 1 file changed, 1 deletion(-) diff --git a/fs/jbd2/transaction.c b/fs/jbd2/transaction.c index 432c6cf8ebe9..9ba03242f1fb 100644 --- a/fs/jbd2/transaction.c +++ b/fs/jbd2/transaction.c @@ -2301,7 +2301,6 @@ static int journal_unmap_buffer(journal_t *journal, struct buffer_head *bh, if (journal->j_running_transaction && buffer_jbddirty(bh)) jh->b_next_transaction = journal->j_running_transaction; jh->b_modified = 0; - jbd2_journal_put_journal_head(jh); spin_unlock(&journal->j_list_lock); spin_unlock(&jh->b_state_lock); write_unlock(&journal->j_state_lock); -- 2.24.1
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#8729): https://lists.yoctoproject.org/g/linux-yocto/message/8729 Mute This Topic: https://lists.yoctoproject.org/mt/74699374/21656 Group Owner: [email protected] Unsubscribe: https://lists.yoctoproject.org/g/linux-yocto/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
