Re: [patch 3/3 -mmotm] oom: invoke oom killer for __GFP_NOFAIL

From: Divy Le Ray
Date: Wed Jun 03 2009 - 19:04:30 EST


Andrew Morton wrote:
On Wed, 3 Jun 2009 15:10:38 -0700 (PDT)
David Rientjes <rientjes@xxxxxxxxxx> wrote:

On Tue, 2 Jun 2009, David Rientjes wrote:

With my patch, we kill a memory hogging task that will free some memory so the allocation will succeed (or multiple tasks if insufficient contiguous memory is available). Kernel allocations use __GFP_NOFAIL, so the fault of this memory freeing is entirely on the caller, not the page allocator.

My preference for handling this is to merge my patch (obviously :), and then hopefully deprecate __GFP_NOFAIL as much as possible although I don't suspect it could be eradicated forever.

I really hope this patch isn't getting dropped because it fixes the possibility that a __GFP_NOFAIL allocation will fail when its definition is to the contrary. Depending on the size of the allocation, that can cause a panic in at least the reiserfs, ntfs, cxgb3, and gfs2 cases.

As I mentioned before, it's a noble goal to deprecate __GFP_NOFAIL as much as possible and (at the least) prevent it from trying high-order allocation attempts. The current implementation of the flag is problematic, however, and this patch addresses it by attempting to free some memory when direct reclaim fails.


Sigh, all right, but we suck.

Divy, could we please at least remove __GFP_NOFAIL from
drivers/net/cxgb? It's really quite inappropriate for a driver to
assume that core VM can do magic. Drivers should test the return value
and handle the -ENOMEM in the old-fashioned way, please.

We started working on it, and got to eliminate them out of cxgb3_main.c::init_tp_parity().
We're still looking at eliminating its use in cxgb3_offload.c::t3_process_tid_release_list().
I'll post the patches as soon as they are ready.

cheers,
Divy

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/