On Mon, 2007-10-08 at 10:46 -0700, Christoph Lameter wrote: > On Fri, 5 Oct 2007, Mingming Cao wrote: > > > Index: linux-2.6.23-rc9/fs/jbd/transaction.c > > =================================================================== > > --- linux-2.6.23-rc9.orig/fs/jbd/transaction.c 2007-10-05 12:08:08.000000000 -0700 > > +++ linux-2.6.23-rc9/fs/jbd/transaction.c 2007-10-05 12:08:29.000000000 -0700 > > @@ -96,8 +96,8 @@ static int start_this_handle(journal_t * > > > > alloc_transaction: > > if (!journal->j_running_transaction) { > > - new_transaction = jbd_kmalloc(sizeof(*new_transaction), > > - GFP_NOFS); > > + new_transaction = kmalloc(sizeof(*new_transaction), > > + GFP_NOFS|__GFP_NOFAIL); > > > Why was a __GFP_NOFAIL added here? I do not see a use of jbd_rep_kmalloc? > > > -#define jbd_kmalloc(size, flags) \ > > - __jbd_kmalloc(__FUNCTION__, (size), (flags), journal_oom_retry) > > journal_oom_retry is no longer used? > - journal_oom_retry (which is defined as 1 currently) is still being used in revoke.c, the cleanup patch doesn't remove the define of journal_oom_retry. Since journal_oom_retry is always 1 to __jbd_kmalloc, void * __jbd_kmalloc (const char *where, size_t size, gfp_t flags, int retry) { return kmalloc(size, flags | (retry ? __GFP_NOFAIL : 0)); } So we replace jbd_kmalloc() to kmalloc() with __GFP_NOFAIL flag on in start_this_handle(). Other two places replacing to kmalloc() is part of the init process, so no need for __GFP_NOFAIL flag there. Mingming > To unsubscribe from this list: send the line "unsubscribe linux-ext4" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html - To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html