swsusp fixes

From: Pavel Machek (pavel@ucw.cz)
Date: Thu May 23 2002 - 16:51:18 EST


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

--- linux-swsusp.linus/drivers/ide/ide-disk.c Wed May 22 21:12:16 2002
+++ linux-swsusp/drivers/ide/ide-disk.c Wed May 22 21:18:29 2002
@@ -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>
--- linux-swsusp.linus/fs/reiserfs/journal.c Wed May 22 21:12:17 2002
+++ linux-swsusp/fs/reiserfs/journal.c Wed May 22 02:35:21 2002
@@ -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) ;
--- linux-swsusp.linus/kernel/suspend.c Wed May 22 21:12:17 2002
+++ linux-swsusp/kernel/suspend.c Wed May 22 22:05:48 2002
@@ -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");
--- linux-swsusp.linus/mm/pdflush.c Wed May 22 21:12:17 2002
+++ linux-swsusp/mm/pdflush.c Wed May 22 02:01:58 2002
@@ -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();

-- 
(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
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Thu May 23 2002 - 22:00:31 EST