Andrew Morton wrote: > > Nick Burrett wrote: > > > > ... > > > > Assertion failure in journal_start() at transaction.c:226: "handle->h_transaction->t_journal == journal" > > Oh hell. The quota code has gone and done a cross-fs > nested transaction. > > Stephen, I'm half-inclined to paint this as a core kernel > bug. We shouldn't be diving into write_dquot for a > GFP_NOFS allocation. > Sorry, I misread the trace. It is: ext3_new_inode ->DQUOT_ALLOC_INODE ->read(quota file) ->alloc_page ->shrink_caches ->prune_icache ->dq_drop ->write_dquot What a mess. It would be so much simpler if gfp_flags was part of task_struct, rather than propagated all over the place. Nick, here's a hack which should make the crash go away, if it's being a problem: --- linux-2.4.19-pre4/fs/inode.c Fri Dec 21 11:19:14 2001 +++ linux-akpm/fs/inode.c Wed Mar 27 11:32:58 2002 @@ -722,6 +722,9 @@ int shrink_icache_memory(int priority, i if (!(gfp_mask & __GFP_FS)) return 0; + if (current->journal_info) + return 0; + count = inodes_stat.nr_unused / priority; prune_icache(count); -