RE: bug report about assert at [ kernel/fs/jbd2/transaction.c:2138 ]

From: Wang, Yalin
Date: Fri Nov 22 2013 - 00:42:32 EST


Hi

Thanks for your reply very much !

Our kernel version is 3.4.0 ,
I am not sure if this version is the same with 2.6.29 ?

I have a look at the fs/jbd2/commit.c file's git log .
The latest commit is

commit 99aa78466777083255b876293e9e83dec7cd809a
jbd2: use GFP_NOFS for blkdev_issue_flush

and I make a diff as the attachment ,
$ git diff 99aa78466777083255b876293e9e83dec7cd809a:./commit.c v3.12:./commit.c > ~/commit.c.diff






-----Original Message-----
From: Theodore Ts'o [mailto:tytso@xxxxxxx]
Sent: Friday, November 22, 2013 9:33 AM
To: Wang, Yalin
Cc: 'linux-arch-owner@xxxxxxxxxxxxxxx'; 'linux-kernel@xxxxxxxxxxxxxxx'; 'linux-arm-msm-owner@xxxxxxxxxxxxxxx'
Subject: Re: bug report about assert at [ kernel/fs/jbd2/transaction.c:2138 ]

On Thu, Nov 21, 2013 at 03:54:29PM +0800, Wang, Yalin wrote:
>
> I have a crash on Android phone during daily use.
>
> It crash at function __jbd2_journal_refile_buffer( ) :
>
> if (jh->b_transaction)
> assert_spin_locked(&jh->b_transaction->t_journal->j_list_lock);
>
>
> I have a look at the code,
> Seems this part are all handled by kernel , So should be kernel BUG ,
>
> https://www.codeaurora.org/cgit/quic/la/kernel/msm/tree/fs/jbd2/commit
> .c?id=ccde7494b7174d810f316019b6e935fb222c6533

This commit ID references a truly antique kernel --- 2.6.29, dating from January 9th, 2009. There is saying that in Internet times, two years is infinity. So four years is two times infinity. :-)

If the reason why Sony is still shipping kernels that are this anique is because you are stuck on !@#!?! proprietary binaries brought to you by the letters 'B' or the letters 'Q', may I suggest that you add to your procurement contracts a requirement that your downstream hardware providers provide open source drivers?

(I'll note that some of enterprise server providers have succesfully leaned on their peripheral providers for host bus adapters and networking cards that the drivers not only be open source, but have to be accepted in the upstream kernel. I'll gently suggest that handset vendors first require in their procurement contracts that drivers at the very least be open source, and then later, that said open source drivers are accepted into the mainline kernel, since that way you won't be responsible for forward porting out-of-tree drivers to non-antique kernels.)

In any case, ext4 back in 2.6.29 had many bugs. It's not something that the open source community is going to be all that interested in supporting. Enterprise distributions pay long-suffering developers $$$ to support ancient, old kernels. My advice to not ship new products with ancient kernels.

If in fact you aren't really using that ancient a kernel, you need to let us know the precise version of the kernel you are using.

Best regards,

- Ted

Attachment: commit.c.diff
Description: commit.c.diff