bdflush must sleep unless it's wakenup by us

From: Andrea Arcangeli (andrea@suse.de)
Date: Sat Jan 08 2000 - 11:00:13 EST


I did a minor error in bdflush that caused it to be wakeup at regular
intervals. bdflush instead should sleep all the time unless there are too
many dirty buffers. It's only a performance issue. The below fix applyed
cleanly to 2.3.36:

--- 2.3.25pre3-i386/fs/buffer.c.~1~ Mon Nov 1 18:44:06 1999
+++ 2.3.25pre3-i386/fs/buffer.c Mon Nov 1 18:56:58 1999
@@ -2505,10 +2505,10 @@
                 /*
                  * If there are still a lot of dirty buffers around,
                  * skip the sleep and flush some more. Otherwise, we
- * sleep for a while.
+ * go to sleep waiting a wakeup.
                  */
                 if (balance_dirty_state(NODEV) < 0)
- schedule_timeout(5*HZ);
+ schedule();
                 /* Remember to mark us as running otherwise
                    the next schedule will block. */
                 __set_current_state(TASK_RUNNING);

Andrea

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sat Jan 15 2000 - 21:00:12 EST