> In a separate discussion with Mike, he mentioned that you can't > scsi_remove_device() unless there are no pending commands. > > How the hell is an LLD supposed to assure that!?!? > > The minute I error a command and call scsi_done(), I can get a new one. > Unless I lock out requests with scsi_block_requests(), but that comes with > major warnings about needing to get unblocked.
If I understand the scsi code correctly, doing that will result in a memory leak at least. Perhaps exporting a function to declare a host's devices offline might do the trick. But as yet I havn't found out where the scsi layer actually checks that flag. > The way this should work is that the LLD calls scsi_remove_device(), and > that cuts off the flow of commands. The LLD can promise to error-out any > pending commands in the device command queue. > > That is, unless scsi_block_requests() and scsi_unblock_requests() are more > useful than the documentation suggests... block(), error all commands, > unregister()... that would make some sense. We could call > scsi_block_request() as soon as we know the unit is gone, and unregister() > as soon as the queue is empty. Sounds reasonable. Regards Oliver ------------------------------------------------------- This SF.NET email is sponsored by: Thawte.com - A 128-bit supercerts will allow you to extend the highest allowed 128 bit encryption to all your clients even if they use browsers that are limited to 40 bit encryption. Get a guide here:http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0030en _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel