On Thu, 24 Oct 2002, Oliver Neukum wrote: > Hi, > > > The point I was raising is that once khubd starts its cleanup, only > > one activity makes sense: unlinking urbs. But today, it's _also_ > > Correct, so we want the core to do that, don't we? > > > possible to continue submitting urbs. That can create some exotic > > failure modes, worth IMO getting rid of -- I've seen drivers cause > > them, they're a waste of time to debug rather than just prevent. > > Definitely, if we can find a way to do so. > > > Think of it as a proof-by-induction that shutdown will work. When > > there's a point past which no more activities can be started (like > > when device state becomes GONE), and existing activities all get > > canceled, shutdown will clearly work. With no such point, the exotic > > failure modes can prevent shutdown from working. > > Correct, but incomplete. > You see, the full transition on unplugging is twofold from > WORKING to GONE to <NONE AT ALL>. The last state is caused > by kfree on the device descriptor. Preventing submission in the second > state is no problem. That's not the case for the last state unfortunately. > > Regards > Oliver
Hear, hear! It seems clear that the best way for the core to handle this situation is: Keep track of all active URBs on a per-device list. When a device unplugs from the bus, set the device state to GONE and cancel (with some appropriate error code like -ENODEV, which already means the device was removed) all active URBs. Then call the drivers' disconnect() routines. When the device is GONE, fail (with -ENODEV) all calls to usb_submit_urb. Rely on the driver not to submit any more URBs once disconnect() has returned. If the device structure happens to hang around in memory for a while, you can log an error message (or even oops) on any submissions for a removed device. This centralizes the functionality in the core to the largest reasonable extent. The onus on the drivers is minimized; every driver should be able to avoid submitting URBs for devices that they already know are gone. Alan Stern ------------------------------------------------------- This sf.net email is sponsored by: Influence the future of Java(TM) technology. Join the Java Community Process(SM) (JCP(SM)) program now. http://ad.doubleclick.net/clk;4729346;7592162;s?http://www.sun.com/javavote _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel