From: "Rafael J. Wysocki" The following patch simplifies the progress meter in disk.c:free_some_memory() and makes disk.c:pm_suspend_disk() call device_resume() explicitly in the suspend path. Signed-off-by: Rafael J. Wysocki Cc: Pavel Machek Signed-off-by: Andrew Morton --- kernel/power/disk.c | 8 ++------ kernel/power/swsusp.c | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff -puN kernel/power/disk.c~swsusp-two-simplifications kernel/power/disk.c --- devel/kernel/power/disk.c~swsusp-two-simplifications 2005-10-17 16:45:24.000000000 -0700 +++ devel-akpm/kernel/power/disk.c 2005-10-17 16:45:24.000000000 -0700 @@ -92,10 +92,7 @@ static void free_some_memory(void) printk("Freeing memory... "); while ((tmp = shrink_all_memory(10000))) { pages += tmp; - printk("\b%c", p[i]); - i++; - if (i > 3) - i = 0; + printk("\b%c", p[i++ % 4]); } printk("\bdone (%li pages freed)\n", pages); } @@ -177,13 +174,12 @@ int pm_suspend_disk(void) goto Done; if (in_suspend) { + device_resume(); pr_debug("PM: writing image.\n"); error = swsusp_write(); if (!error) power_down(pm_disk_mode); else { - /* swsusp_write can not fail in device_resume, - no need to do second device_resume */ swsusp_free(); unprepare_processes(); return error; diff -puN kernel/power/swsusp.c~swsusp-two-simplifications kernel/power/swsusp.c --- devel/kernel/power/swsusp.c~swsusp-two-simplifications 2005-10-17 16:45:24.000000000 -0700 +++ devel-akpm/kernel/power/swsusp.c 2005-10-17 16:45:24.000000000 -0700 @@ -562,7 +562,7 @@ int enough_swap(void) int swsusp_write(void) { int error; - device_resume(); + lock_swapdevices(); error = write_suspend_image(); /* This will unlock ignored swap devices since writing is finished */ _