On Wed 16-02-11 06:52:55, Tetsuo Handa wrote: > Jan Kara wrote: > > Ext3 looks innocent here. That is a standard call path for open(.., > > O_TRUNC). But apparently something broke in SLUB allocator. Adding proper > > list to CC... > > Thanks. > > Both fs/jbd/transaction.c and fs/jbd2/transaction.c provide start_this_handle() > and I don't know which one was called. > > But > > if (!journal->j_running_transaction) { > new_transaction = kzalloc(sizeof(*new_transaction), > GFP_NOFS|__GFP_NOFAIL); > if (!new_transaction) { > ret = -ENOMEM; > goto out; > } > } > > does kzalloc(GFP_NOFS|__GFP_NOFAIL) causes /proc/$PID/status to show > > State: D (disk sleep) It could. State D does not mean "disk sleep" but "uninterruptible sleep". Lots of sleeps in kernel are in D state - for example waiting for all mutex locks, waiting for IO, etc. But looking at the trace again, you're probably right that we are actually waiting somewhere in start_this_handle() (in fs/jbd/transaction.c) and __slab_alloc() is just some relict on stack. You can verify this by looking at disassembly of start_this_handle() in your kernel and finding out where offset 0x22d is in the function... But in this case - does the process (sh) eventually resume or is it stuck forever? Honza -- Jan Kara <jack@xxxxxxx> SUSE Labs, CR -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>