This time I looked into paride and I found out at least one major problem.
paride is trying to do a racy by-hand colescing to improve performance by
processing more than one request at once (so accessing not only the head
of the queue but also the following queued requests). This has to be
fixed also in 2.2.x.
Only the _head_ of the queue (the queue_head.next request) is supposed to
remains unchanged by the highlevel layer (while the device is unplugged),
all other requests in the queue can change under the lowlevel layer if
somebody queues new requests.
The right way to do the coalescing to execute more than one request at
time is to make paride aware of merging and to allow paride to access the
req->bh->b_reqnext stuff. In the highlevel layer we just do all the checks
to find out contigous mergeable requests, that paride was doing in the
racy way and the thing done by the highlevel layer are also enforced to
not change under paride :).
Stay tuned.
Andrea
-- To unsubscribe, send mail to: linux-parport-request@torque.net --
-- with the single word "unsubscribe" in the body of the message. --
This archive was generated by hypermail 2b29 : Mon Apr 03 2000 - 04:32:57 EDT