On Sun, 2011-04-17 at 21:53 +0530, Raghavendra D Prabhu wrote:In the function bdi_wakeup_thread_delayed, no checks are performed on
dirty_writeback_interval unlike other places and timeout is being set to
zero as result, thus defeating the purpose. So, I have changed it to be
passed default value of interval which is 500 centiseconds, when it is
set to zero.
I have also verified this and tested it.
Signed-off-by: Raghavendra D Prabhu <rprabhu@xxxxxxxxxxx>
If dirty_writeback_interval then the periodic write-back has to be
disabled. Which means we should rather do something like this:
diff --git a/mm/backing-dev.c b/mm/backing-dev.c
index 0d9a036..f38722c 100644
--- a/mm/backing-dev.c
+++ b/mm/backing-dev.c
@@ -334,10 +334,12 @@ static void wakeup_timer_fn(unsigned long data)
*/
void bdi_wakeup_thread_delayed(struct backing_dev_info *bdi)
{
- unsigned long timeout;
+ if (dirty_writeback_interval) {
+ unsigned long timeout;
- timeout = msecs_to_jiffies(dirty_writeback_interval * 10);
- mod_timer(&bdi->wb.wakeup_timer, jiffies + timeout);
+ timeout = msecs_to_jiffies(dirty_writeback_interval * 10);
+ mod_timer(&bdi->wb.wakeup_timer, jiffies + timeout);
+ }
}
I do not see why you use 500 centisecs instead - I think this is wrong.
---
mm/backing-dev.c | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/mm/backing-dev.c b/mm/backing-dev.c
index befc875..d06533c 100644
--- a/mm/backing-dev.c
+++ b/mm/backing-dev.c
@@ -336,7 +336,10 @@ void bdi_wakeup_thread_delayed(struct backing_dev_info *bdi)
{
unsigned long timeout;
Hi,- timeout = msecs_to_jiffies(dirty_writeback_interval * 10);
+ if (dirty_writeback_interval)
+ timeout = msecs_to_jiffies(dirty_writeback_interval * 10);
+ else
+ timeout = msecs_to_jiffies(5000);
mod_timer(&bdi->wb.wakeup_timer, jiffies + timeout);
}
Attachment:
pgp00000.pgp
Description: PGP signature