Re: [patch 1/5] mm: add nofail variants of kmalloc kcalloc and kzalloc

David Rientjes
2010-08-25T23:11:38Z

On Wed, 25 Aug 2010, Peter Zijlstra wrote:

> > There's still no hard guarantee that the memory will allocatable
> > (GFP_KERNEL, the compaction, then GFP_ATOMIC could all still fail), but I
> > don't see how continuously looping the page allocator is possibly supposed
> > to help in these situations.
>
> Why do you think I'm a proponent of that behaviour?
>

I don't, I was agreeing with what you're saying :)

> I've been arguing that the existance of GFP_NOFAIL is the bug, and I
> started the whole discussion because your patchset didn't outline the
> purpose of its existance, it merely changes __GFP_NOFAIL usage into
> $foo_nofail() functions, which on its own is a rather daft change.
>

I originally pushed these to the callers, but Andrew thought it would be
better so that we could audit the existing users that have no fallback
behavior, even though they could go implement it on their own (like
getblk() which actually does try _some_ memory freeing). It eliminates
the flag from the page allocator and saves branches in the slowpath. We
don't need this logic in the allocator itself, it can exist at a higher
level and, with deprecation, will hopefully be incentive enough for those
subsystems to fix the issue.

I'll repropose the patchset with __deprecated as you suggested. Thanks!