Re: 2.6.37-rc1+: hibernate regression, claims not enough swap space

Rafael J. Wysocki
2010-11-18T12:43:57Z

On Thursday, November 18, 2010, Pavel Machek wrote:
> Hi!
>
> > > > This is not how it works now. We preallocate memory to create memory pressure,
> > > > so if image_size is 0, we need to preallocate until we run out of pages that
> > > > can be freed, which means OOM.
> > >
> > > That's bad, right? Instead of killing
> >
> > I'm not sure what you mean.
>
> I meant "instead of failing hibernation, you get OOM -- killing random
> processes".

That's not the case. The OOM _killer_ is disabled during hibernation, but
there's some more OOM code that's trying very hard to free whatever pages
it can get without killing any processes.

> > > Anyway, it does not work at all.
> > >
> > > root@amd:~# echo 300000000 > /sys/power/image_size
> > > root@amd:~# echo disk > /sys/power/state
> > > -su: echo: write error: No space left on device
> > >
> > > (And dmesg full of failed allocations).
> > >
> > > I can write 400M there, and it fails, too.
> >
> > Well, in that case your swap is smaller than the requested image size, isn't it?
>
> No, swap is
>
> pavel@amd:~/misc$ cat /proc/swaps
> Filename Type Size Used
> Priority
> /dev/sda1 partition 779148 0
> -1
>
> ... 700M.
>
> > There's a check in there that should catch that and it apparently doesn't work.
> >
> > Do you have that dmesg by chance?
>
> dmesg is useless -- it is full of backtraces :-(. ACPI allocations
> fail.

What about:

# echo core > /sys/power/pm_test
# echo disk > /sys/power/state

Then the messages should be there in the logs.

Thanks,
Rafael