Make pmdisk suspend more reliable
Subsystems (2)
PATCH 1/1 Make pmdisk suspend more reliable
Hi Patrick & all,
Here's a little patch to make pmdisk suspend to disk work on my old laptop. Basically at least the PMDISK_SIG never got to the disk, and finding the suspend image would fail without this patch. The patch is against linux-2.6.0-test7.
Pls cc me on any replies, I'm not on the list right now.
Regards,
Tony
kernel/power/pmdisk.c renamed from kernel/power/pmdisk.c-orig +4 -0
@@ -35,6 +35,7 @@extern int pmdisk_arch_suspend (int resume); +extern int wakeup_bdflush (long nr_pages);#define __ADDRESS (x) ((unsigned long) phys_to_virt(x))#define ADDRESS (x) __ADDRESS((x) << PAGE_SHIFT)
@@ -372,6 +373,9 @@ goto FreePagedir; error =mark_swapfiles (prev); + +/* Make sure the data gets to disk */ +wakeup_bdflush (0 ); Done:return error; FreePagedir:
kernel/power/pmdisk.c line 38
Quoted 7 lines · Tony Lindgren
kernel/power/pmdisk.c renamed from kernel/power/pmdisk.c-orig +1
-0@@ -35,6 +35,7 @@extern int pmdisk_arch_suspend (int resume); +extern int wakeup_bdflush (long nr_pages);
Prototypes in .c files is never a good idea. wakeup_bdflush is prototyped in include/linux/writeback.h
pmdisk_arch_suspend is expected to be implemented in assembler, which explain why it is prototypes locally.
Sam
Hi,
Quoted 7 lines · Sam Ravnborg
Quoted 2 lines · Tony Lindgren
extern int
pmdisk_arch_suspend(int resume);
+extern intwakeup_bdflush(long nr_pages);Prototypes in .c files is never a good idea.
wakeup_bdflushis prototyped ininclude/linux/writeback.h
I guess you mean to #include <linux/writeback.h> instead of extern, or did I misunderstand what you meant?
There may be more to the suspend image not getting to the disk besides flushing, I'm now wondering if it works with IDE DMA enabled, but not without DMA. I'll try to investigate it a bit further.
Tony