On Mon, 2008-10-27 at 17:22 +1100, Dave Chinner wrote:
The allocation is 'mode:0x10000', which is __GFP_NOMEMALLOC. That means
the allocation doesn't have __GFP_WAIT, so it cannot do reclaim, it
doesn't have __GFP_HIGH so it can't access some emergency reserves.
The DMA stuff is special, and part of it is guarded for anything but
__GFP_DMA allocations.
You just ran the system very low on memory, and then tried an allocation
that can't do anything about it.. I don't find it very surprising it
fails.
The 'bug' if any, is having such a poor allocation within your IO path.
Not something to blame on the VM.
--