On Fri, Jun 5, 2020 at 2:26 PM Bruce Ashfield <[email protected]> wrote:
>
> In message: [linux-yocto] [PATCH v5.4-rt] jbd2: remove extra put_journal_head 
> call added in merge
> on 05/06/2020 George McCollister wrote:
>
> > 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
>
> merged.
>
> Have you also submitted it upstream to the -rt list ?

Which -rt list? [email protected]? Or is there a linux
-rt mailing list?
This patch fixes a merge issue that I believe is specific to
linux-yocto v5.4/standard/preempt-rt/base.
The v5.4-rt branch of
git://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-stable-rt.git
doesn't have the issue.

George

>
> Bruce
>
> >
> > 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 (#8736): 
https://lists.yoctoproject.org/g/linux-yocto/message/8736
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