Hello everyone, I'm just working on an I/O-scheduler that implements some QoS functionality.
Now I get some weird problems and need to know what triggers my elevator_dispatch_fn, and how the return value of it is handled. For now, I found that the dispatch function is called as long as there are requests in my queue, so probably as long as it returns 1. On the other hand, only every second dispatch call returns 1, the others 0, but still it's working. I couldn't find any documentation about that (but would like to write some, if I understood it). Could someone please explain me when and why exactly elevator_dispatch_fn is triggered? A little background: Now that I'm implementing my QoS, I have one queue for each process, and prioritized processes get a timeslice, where they can access the device exclusively. A timeslice might be 400ms, but if a process is finished after 200ms and has no more requests, dispatch will return 0 and then it won't be triggered anymore. So, when the next process has his timeslice, even if it has requests, dispatch_fn is not triggered, so the process will starve and hang forever. So I need to 'reactivate' the whole dispatching process again. The only way to to this is probably a timer, but I couldn't get this working since I don't understand what calls dispatch_fn. thanks in advance, Philipp - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/