swsusp fixes
Hi!
This kills unneccessary include from ide-disk.c, kills #ifdef from reiserfs/journal.c, makes suspend_device local as it should be, abstains from suspending devices two times in a row (typo), and makes sure we do not run_task_queue() while we hold spinlock. Please apply,
Pavel
drivers/ide/ide-disk.c +0 -1
@@ -27,7 +27,6 @@#include <linux/slab.h> #include <linux/delay.h> #include <linux/ide.h> -#include <linux/suspend.h> #include <asm/byteorder.h> #include <asm/irq.h>
fs/reiserfs/journal.c +3 -6
@@ -1901,12 +1901,9 @@break ; }wake_up (&reiserfs_commit_thread_done) ; -#ifdef CONFIG_SOFTWARE_SUSPEND -if (current->flags &PF_FREEZE ) { -refrigerator (PF_IOTHREAD ); - } else -#endif -interruptible_sleep_on_timeout (&reiserfs_commit_thread_wait,5 *HZ ) ; +if (current->flags &PF_FREEZE ) +refrigerator (PF_IOTHREAD ); +interruptible_sleep_on_timeout (&reiserfs_commit_thread_wait,5 *HZ ) ; }unlock_kernel () ;wake_up (&reiserfs_commit_thread_done) ;
kernel/suspend.c +4 -12
@@ -409,15 +404,12 @@swap_list_lock ();for (i =0 ; i<MAX_SWAPFILES ; i++)if (swapfile_used[i] ==SWAPFILE_IGNORED ) { -// PRINTS( "device %s locked\n", swap_info[i].swap_file->d_name.name ); swap_info[i].flags ^=0xFF ;/* we make the device unusable. A new call to lock_swapdevices can unlock the devices. */ }swap_list_unlock (); } -kdev_t suspend_device; -static int write_suspend_image (void ) {int i;
@@ -425,6 +417,7 @@int nr_pgdir_pages =SUSPEND_PD_PAGES (nr_copy_pages);union diskpage *cur, *buffer = (union diskpage *)get_free_page (GFP_ATOMIC );unsigned long address; +kdev_t suspend_device;PRINTS ("Writing data to swap (%d pages): " , nr_copy_pages );for (i=0 ; i<nr_copy_pages; i++) {
@@ -809,7 +747,6 @@* * Following line enforces not writing to disk until we choose. */ - suspend_device =NODEV ;/* We do not want any writes, thanx */ drivers_unsuspend ();spin_unlock_irq (&suspend_pagedir_lock);PRINTS ("critical section/: done (%d pages copied)\n" , nr_copy_pages );
@@ -899,13 +836,9 @@static void do_magic_suspend_2 (void ) {read_swapfiles (); -if (!suspend_save_image ()) { -#if 1 -suspend_power_down ();/* FIXME: if suspend_power_down is commented out, console is lost after few suspends ?! */ -#endif - } +if (!suspend_save_image ()) +suspend_power_down ();/* FIXME: if suspend_power_down is commented out, console is lost after few suspends ?! */ - suspend_device =NODEV ;printk (KERN_WARNING "%sSuspend failed, trying to recover...\n" , name_suspend);MDELAY (1000 );/* So user can wait and report us messages if armageddon comes :-) */
@@ -944,9 +877,8 @@* We sync here -- so you have consistent filesystem state when things go wrong. * -- so that noone writes to disk after we do atomic copy of data. */ -PRINTS ("Syncing disks before copy\n" ); +PRINTS ("Syncing disks before copy\n" );do_suspend_sync (); -drivers_suspend ();if (drivers_suspend ()==0 )do_magic (0 );/* This function returns after machine woken up from resume */ PRINTR ("Restarting processes...\n" );
mm/pdflush.c +3 -3
@@ -108,16 +108,16 @@for ( ; ; ) {struct pdflush_work *pdf; -#ifdef CONFIG_SOFTWARE_SUSPEND -run_task_queue (&tq_bdflush); -#endif list_add (&my_work->list, &pdflush_list); my_work->when_i_went_to_sleep = jiffies;set_current_state (TASK_INTERRUPTIBLE );spin_unlock_irq (&pdflush_lock); +#ifdef CONFIG_SOFTWARE_SUSPEND +run_task_queue (&tq_bdflush);if (current->flags &PF_FREEZE )refrigerator (PF_IOTHREAD ); +#endif schedule ();preempt_enable ();
Signature · 2 lines
(about SSSCA) "I don't say this lightly. However, I really think that the U.S. no longer is classifiable as a democracy, but rather as a plutocracy." --hpa