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]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to