On Friday 16 January 2004 08:32, Joe Thornber wrote: > On Wed, Jan 14, 2004 at 01:36:49PM -0600, Kevin Corry wrote: > > Obviously the daemon needs a way to wake-up periodically so it can run > > it's test I/Os. The comments in dm-daemon.h say the worker function > > should return a "hint" as to when they should be woken up, but currently > > this return value is unused. I'm trying to look into how to implement > > this functionality in the dm-daemon code, but I figured I'd ask here and > > see if anyone has already come up with a plan for this. Once we get the > > multipath daemon to do its periodic path-testing, I think we'll have a > > working prototype. > > schedule_timeout() ? Aha...so we could just do something like this in dm-daemon? --- diff/drivers/md/dm-daemon.c 2004-01-16 10:41:44.000000000 -0600 +++ source/drivers/md/dm-daemon.c 2004-01-16 10:43:52.000000000 -0600 @@ -16,6 +16,7 @@ { struct dm_daemon *dd = (struct dm_daemon *) arg; DECLARE_WAITQUEUE(wq, current); + jiffy_t timeout; daemonize("%s", dd->name); @@ -42,12 +43,15 @@ do { set_current_state(TASK_RUNNING); atomic_set(&dd->woken, 0); - dd->fn(); + timeout = dd->fn(); set_current_state(TASK_INTERRUPTIBLE); } while (atomic_read(&dd->woken)); - schedule(); + if (timeout) + schedule_timeout(timeout); + else + schedule(); } out: -- Kevin Corry kevcorry@xxxxxxxxxx http://evms.sourceforge.net/