Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang

From: KOSAKI Motohiro
Date: Tue Aug 31 2010 - 02:35:41 EST


> On 30/08/10 05:28 AM, KOSAKI Motohiro wrote:
> >> [snip]
> >>
> >> The interesting thing is that even though there is a lot of free memory at the
> >> end, it still hangs.
> >
> > Grr. I'm surprised this result ;-)
> > shrink_all_memory() finish to shrink memory successfully. but your
> > system still hang immediately after. I have no idea why this mysterious
> > occur.
> >
> > I prepared next debugging patch. It added prenty debug printk. I hope
> > it enlighten up which path makes system hang-up.
> >
> > 1. apply my new patch
> >
> > 2. Enable following PM debug option in Kconfig
> >
> > [*] Power Management support
> > [*] Power Management Debug Support
> > [*] Extra PM attributes in sysfs for low-level debugging/testing
> > [*] Verbose Power Management debugging
> >
> > 3. append following kernel boot option into grub configration file
> >
> > no_console_suspend=1
> >
> > 3. kernel build and reboot
> > 4. some prepare
> > # echo 8 > /proc/sysrq-trigger
> > # cd /sys/power
> > # echo 1 > pm_trace
> > # echo 0 > pm_async
> >
> > 5. run your test program
> >
> >
> >> I also included the timestamps; note the one and two second
> >> delays between the passes.
> >
> > This is expected result because tmpfs shrink need swap-out. then
> > we need i/o time.
> >
> >>
> >> Please let me know if there is anything I can do.
> >
> > Please send me your .config and full dmesg.
> >
> >
> > Thanks many and many help us!
>
> Hello,
>
> I have followed your instructions, with one exception: I have also
> enabled CONFIG_PM_TRACE so that I would have /sys/power/pm_trace.
>
> This time I had some more output, as expected. I double checked what
> I typed while looking at the screen-shot I took with my camera. Here's
> the output:
>
> === 8< ===
> PM: Marking nosave pages: ...0009f000 - ...000100000
> PM: basic memory bitmaps created
> PM: Syncing filesystems ... done
> Freezing user space processes ... (elapsed 0.01 seconds) done.
> Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
> PM: Preallocating image memory...
> shrink_all_memory start
> PM: shrink memory: pass=1, req:310171 reclaimed:15492 free:360936
> PM: shrink memory: pass=2, req:294679 reclaimed:28864 free:373981
> PM: shrink memory: pass=3, req:265815 reclaimed:60311 free:405374
> PM: shrink memory: pass=4, req:205504 reclaimed:97870 free:443024
> PM: shrink memory: pass=5, req:107634 reclaimed:146948 free:492141
> shrink_all_memory: req:107634 reclaimed:146948 free:492141
> PM: preallocate_image_highmem 556658 278329
> PM: preallocate_image_memory 103139 103139
> PM: preallocate_highmem_fraction 183908 556658 760831 -> 183908
> === >8 ===
>
> According to your patch, the next output should have been
> "preallocate_image_memory ...", but it never gets printed, so the
> hang point should be that function.

Great!
I've attached more verbose debug message patch and trial bug fixing patch.
Could you please to try this?



> I am attaching my dmesg output which I got after the failed hibernation
> attempt and my .config file. Please note that the attached .config file
> is a trimmed version of the .config I usually use on my computer. I trimmed
> it so that it compiles faster, but (mostly) has support for devices I might
> use.
>
> Thanks a lot for your help, and please let me know if I can do anything else.
>

Attachment: 0001-debug2.patch
Description: Binary data

Attachment: 0002-add-gfp_noretry.patch
Description: Binary data