Note the usb_sg_request() handles that a bit differently. If the thread doing the cancel ("unlink") wins, it succeeds and prevents the other thread from starting to process the request.
There's no question that usb_sg_request is cleaner in this respect.
OK, just to sound out options, let's look at this from a fundamental angle. Do we need completion handlers? Can we just associate struct completion* with an URB and save us a whole lot of problems?
We need completion handlers to avoid creating lots of tasks for each driver.
We _should_ support a 'struct completion *" with the URB, but it should be reserved for use with synchronous unlinks.
- Dave
------------------------------------------------------- This SF.net email is sponsored by: IBM Linux Tutorials. Become an expert in LINUX or just sharpen your skills. Sign up for IBM's Free Linux Tutorials. Learn everything from the bash shell to sys admin. Click now! http://ads.osdn.com/?ad_id=1278&alloc_id=3371&op=click _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel