On Saturday 09 June 2007 00:36, Christoph Lameter wrote: > On Fri, 8 Jun 2007, Andreas Kleen wrote: > > > That's what kmem_cache_alloc() is for?!?! > > > > Tradtionally that was not allowed in block layer path. Not sure > > it is fully obsolete with the recent dirty tracking work, probably not. > > Why was it not allowed? Because interrupts are disabled?
Allocating memory during page out under low memory could lead to deadlocks. That is because Linux used to make no attempt to limit dirty pages for anonymous mappings and then you could end up with most of your memory dirty and not enough memory cleanable for page out and then when page out needs more memory you could be dead. [yes that implies that mmap over NFS was always broken] Now there is a anon dirty limit since a few releases, but I'm not fully convinced it solves the problem completely. > > Besides it would need to be GFP_ATOMIC and the default > > atomic pools are not that big. > > Those could be increased. I think Mel has them already increased in mm. That would be lots of wasted memory. I already got >100 MB free on my workstation under steady caching state. Already far too much imho. -Andi - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/