Re: [Bug #13058] First hibernation attempt fails

Andrew Morton
2009-04-20T19:20:44Z

On Tue, 7 Apr 2009 10:06:32 +0200
Pavel Machek <pavel-+ZI9xUNit7I@public.gmane.org> wrote:

> > And the thing is, that "swsusp_shrink_memory()" is just full of
> > heuristics. There's no hard numbers there. It doesn't seem to wait for
> > writeout, it just does the equivalent of "shrink_list()" and
> > "shrink_slab()", but it seems to have been basically cribbed half-way
> > from the regular "try to free memory", without really doing it all.
>
> akpm designed shrink_memory(). Long time ago it was just while (1)
> kmalloc() loop. It should be waiting. Andrew?

I always wanted the thing to just allocate all the memory which it
needed and then to either return it all to the caller or free it all
again for the caller to reallocate (preferably the former).

But for some reason which I don't recall (Pavel provided it, iirc) that
doesn't work. So the current (and subsequently tweaked) scheme was put
in there instead. It turned out to be surprisingly difficult and ugly
to graft it in top of the existing page reclaim code, and various
changes were subsequently made to make it sort-of-work.

Remind me: why can't we just allocate N pages at suspend-time?