On Thu, Mar 10, 2011 at 02:37:51AM -0500, Christoph Hellwig wrote:
> On Thu, Mar 10, 2011 at 10:37:56AM +1100, Dave Chinner wrote:
> > From: Dave Chinner <dchinner@xxxxxxxxxx>
> > On 32 bit systems, vmalloc space is limited and XFS can chew through
> > it quickly as the vmalloc space is lazily freed. This can result in
> > failure to map buffers, even when there is apparently large amounts
> > of vmalloc space available. Hence, if we fail to map a buffer, purge
> > the aliases that have not yet been freed to hopefuly free up enough
> > vmalloc space to allow a retry to succeed.
> IMHO this should be done by vm_map_ram internally. If we can't get the
> core code fixes we can put this in as a last resort.
Agreed, this should be fixed in the vmalloc-ator.
It is already supposed to purge the lazy-freed mappings before it
fails an allocation, I am trying to figure out what's going on.
Your proposed workaround looks fine to me until vmalloc is fixed.