> On Tue, 19 Dec 2006 18:22:03 -0800
> Suzuki <[EMAIL PROTECTED]> wrote:
> 
> > 
> > Andrew Morton wrote:
> > > On Tue, 19 Dec 2006 17:58:12 -0800
> > > Suzuki <[EMAIL PROTECTED]> wrote:
> > > 
> > > 
> > >>* Fix the kmalloc flags used from within ext3, when we have an active 
> > >>journal handle
> > >>
> > >>  If we do a kmalloc with GFP_KERNEL on system running low on memory, 
> > >> with an active journal handle, we might end up in cleaning up the fs 
> > >> cache flushing dirty inodes for some other filesystem. This would cause 
> > >> hitting a J_ASSERT() in :
> > > 
> > > 
> > > The change might be needed (haven't looked at it yet).  But I'd like to 
> > > see
> > > the full BUG trace, please.  To see the callchain.
> > 
> > Here is the call trace which was hit by one of our test teams. This was 
> > from fs/ext3/xattr.c. While looking for similar calls I found the others 
> > described in the patch.
> > 
> > Assertion failure in journal_start() at fs/jbd/transaction.c:274: "handle-
> >  >h_transaction->t_journal == journal"
> > kernel BUG at fs/jbd/transaction.c:274!
> > illegal operation: 0001 [#1]
> > CPU:    0    Not tainted (2.6.5-7.282-s390x SLES9_SP3_BRANCH-20061031152356)
> > Process dbench (pid: 14070, task: 00000000025617f0, ksp: 0000000001057630)
> > Krnl PSW : 0700000180000000 0000000008837b38 (journal_start+0x90/0x15c 
> > [jbd])
> > Krnl GPRS: 0000000000000000 0000000000507fc0 000000000000002b 
> > 0000000001056d80
> >             0000000008837b36 0000000000002885 0000000008841da6 
> > 0000000000000000
> >             00000000001bfaa0 0000000003483d08 0000000000000002 
> > 0000000007a8bda0
> >             0000000008833000 00000000088a7d08 0000000008837b36 
> > 0000000001056e80
> > Krnl Code: 00 00 58 10 b0 0c a7 1a 00 01 b9 04 00 2b 50 10 b0 0c e3 40
> > Call Trace:
> >   [<00000000088a30fc>] ext3_journal_start+0x8c/0xa4 [ext3]
> >   [<0000000008896822>] ext3_dirty_inode+0x3a/0xe0 [ext3]
> >   [<00000000001ca362>] __mark_inode_dirty+0x1ae/0x1c8
> >   [<00000000001bfaa0>] iput+0xbc/0xf0
> >   [<00000000001bdcca>] prune_dcache+0x29e/0x584
> >   [<00000000001bdfe4>] shrink_dcache_memory+0x34/0x54
> >   [<000000000017b100>] shrink_slab+0x15c/0x250
> >   [<000000000017b6e4>] try_to_free_pages+0x1c0/0x2a4
> >   [<0000000000170276>] __alloc_pages+0x2ba/0x4e0
> >   [<000000000017059a>] __get_free_pages+0x4e/0x8c
> >   [<0000000000174ea2>] cache_alloc_refill+0x2a6/0x868
> >   [<0000000000175540>] __kmalloc+0xdc/0xe0
> >   [<00000000088a4e62>] ext3_xattr_set_handle+0x114a/0x174c [ext3]
> >   [<00000000088a54e4>] ext3_xattr_set+0x80/0xd0 [ext3]
> >   [<00000000088a6312>] ext3_xattr_user_set+0xce/0xe4 [ext3]
> >   [<00000000088a5f1e>] ext3_setxattr+0x17e/0x18c [ext3]
> >   [<00000000001c88e6>] setxattr+0x14a/0x234
> >   [<00000000001c8a80>] sys_fsetxattr+0xb0/0x110
> >   [<000000000011fc10>] sysc_noemu+0x10/0x16
> 
> How did we get from iput() into __mark_inode_dirty()?  I can't see it in
> mainline, nor in 2.6.5 which you appear to be using...
  Hmm, I think it could happen at least via quota code (but then I would expect
to see some entry in the backtrace about it).

                                                                        Honza
-- 
Jan Kara <[EMAIL PROTECTED]>
SuSE CR Labs
-
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to