Messages in this thread |  | | | Subject | Re: [Patch] Fix oops on rmmod usb-storage | | From | James Bottomley <> | | Date | 29 Sep 2004 09:56:29 -0400 |
| |
On Wed, 2004-09-29 at 03:43, Hannes Reinecke wrote: > usbcore: deregistering driver usb-storage > scsi: Device offlined - not ready after error recovery: host 0 channel 0 > id 0 lun 0 > sr 0:0:0:0: Illegal state transition cancel->offline > Badness in scsi_device_set_state at drivers/scsi/scsi_lib.c:1688 > [<e12bab6e>] scsi_device_set_state+0x9e/0xd0 [scsi_mod] > [<e12b8a6e>] scsi_eh_offline_sdevs+0x4e/0x70 [scsi_mod] > [<e12b8f1a>] scsi_unjam_host+0x9a/0x1b0 [scsi_mod] > [<e12b90f5>] scsi_error_handler+0xc5/0x160 [scsi_mod] > [<e12b9030>] scsi_error_handler+0x0/0x160 [scsi_mod] > [<c0104255>] kernel_thread_helper+0x5/0x10
This isn't an oops, it's a state transition warning. Apparently the customary attempt to cancel the commands failed. This is really only a warning and will probably go away eventually (we'll just silently fail the transition attempt).
> It turned out that in drivers/scsi/hosts.c:scsi_remove_host() > first the host is removed with scsi_forget_host() and _then_ all > outstanding I/O to this host is cancelled with scsi_host_cancel(). > Sounds a bit fishy as scsi_host_cancel() tries to talk to a host which > we just have deleted ... > (Incidentally, this is most likely the same bug as Bug #2752 and #3480 > from bugme.osdl.org :-). > (And also #133249 from bugzilla.redhat.com :-). > > The attached patch corrects this. > Please apply.
No, the patch is wrong. we do forget first to make the host inaccessible from above then cancel the outstanding commands.
The key to the solution of this problem is to know what USB is trying to do with the dead device. SCSI is trying to be polite and explicitly kill the outstanding commands before it removes the HBA. Presumably USB is returning something that says this can't be done so the EH gets all the way up to offlining.
Also, please at least cc linux-scsi@vger.kernel.org on SCSI problems.
Thanks,
James
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |