On Wed, Dec 10, 2008 at 01:48:10AM +0100, Andreas Bombe wrote:
I think we're not talking about the same problem. If I were to use complete() together with wait_for_completion() there would be a problem if fd_motor_on() can get as far as wait_for_completion() while a previous completion is yet uncompleted. This can not happen for different drives, as the fd_select() would block. If it could happen for the same drive, the complete() would allow only one task to continue. The complete_all() takes care of that. If requests are serialized for a drive so that there won't ever be two running at the same time for certain (thinking about it, it's probable), I could make it a simple complete(). It's hardly worth the risk, however.
IIRC (have not touched the driver for quite some time) at a certain stage all requests for a specific drive are serialized. The amiga floppy drives read and write whole tracks only, so follow-up acesses are likely to be on the same track and then served from the buffer of decoded blocks. I you do wild track jumping, it is slower than the original AmigaOS-driver. But as I am not sure, and floppy drives are slow anyway, the complete_all() won't give any notable performance penalty, I guess. Joerg
Attachment:
signature.asc
Description: Digital signature