Implemented a BSD style elevator to see what effects that would have on I/O behaviour. The BSD elevator is different in that it keeps two lists of requests that the device must service when it gets unplugged (this is handled automatically by me, though, queue_head always points to the list that needs work). We start by filling requests onto the first list in strict sector ordering until at request comes in that lies before the last active request. Then we switch lists and start adding to the other list. This gives good I/O ordering and also imposes a limit on how long we risk waiting for a specific request to finish. Performance is as-of-yet not quite determined. Feels pretty good though and initial bencmarks show that it is.
Decided to give the nvidia XFree86-4.0 drivers a go. The kernel driver needed porting to 2.3 first, though, but that was fairly trivial. Seems to run well. Soon it is time for the Q3 test to see how well the OpenGL performs! XFree86-3.3 performance with the nvidia glx sucked big time, I truly hope the new one is much better. According to the Linux Games site it is, sweet.