Re: [linux-usb-devel] 2.6: USB Storage hangs machine on bootup for~2 minutes

From: Alan Stern
Date: Wed Feb 23 2005 - 10:55:11 EST


On Tue, 22 Feb 2005, Parag Warudkar wrote:

> Alan,
> See below for stack traces and also note that the stack traces are after I
> modified usb_device_read to do down_interruptible instead of down. (kudzu
> gets stuck regardless though.) Let me know if you want me to revert the
> down_interruptible change and repost the stack trace.
>
> I wrongly related this to the 2 minute hang - this one is forever if I let
> kudzu start during boot. If I run kudzu after boot is complete, it gets stuck
> and everything else on that drive (mount, unmount ..) also gets stuck. Sorry
> about the confusion.

Well, this problem looks like something for which a patch was submitted
about a week ago. Try applying

http://marc.theaimsgroup.com/?l=linux-usb-devel&m=110859441830485&w=2

and see if it helps. This doesn't bring us any closer to understanding
the 2-minute delay, though.

> Attached is the disassembly of usb_device_read from my machine.

I hope it doesn't become necessary to decode that!

Alan Stern

> Parag
>
> SysRQ + T for relevant processes
> ======================
> hald D 00000020e12be31a 0 2558 1 3272 2545
> (NOTLB)
> ffff81002c76fb48 0000000000000082 ffff81002c76fb28 ffffffff88515044
> 000000862c76fb08 ffff81002eb10800 0000000000000249 ffff810001c56030
> ffff81002c76fc08 0000000000000002
> Call Trace:
> <ffffffff88515044>{:scsi_mod:scsi_request_fn+2356}
> <ffffffff80385f0f>{io_schedule+15} <ffffffff801698d6>{sync_page+70}
> <ffffffff80386295>{__wait_on_bit_lock+69}
> <ffffffff80169890>{sync_page+0}
> <ffffffff8016a1b7>{__lock_page+167}
> <ffffffff8015c860>{wake_bit_function+0}
> <ffffffff8015c860>{wake_bit_function+0}
> <ffffffff8016aed4>{do_generic_mapping_read+660}
> <ffffffff8016b1f0>{file_read_actor+0}
> <ffffffff8016d1d4>{__generic_file_aio_read+420}
> <ffffffff8016d39b>{generic_file_read+187}
> <ffffffff8015c820>{autoremove_wake_function+0}
> <ffffffff80186150>{do_brk+720} <ffffffff801998d1>{vfs_read+225}
> <ffffffff80199bd0>{sys_read+80} <ffffffff8010ed1e>{system_call+126}
>
> scsi_eh_2 D 00000000ffffffff 0 3581 1 3582 3277
> (L-TLB)
> ffff81002bdc1d88 0000000000000046 00000000000001e3 ffff81002bed8800
> ffff81002bdc1d48 ffff81002c25a800 0000000000000812 ffffffff803df080
> ffff81002bdc1ed0 ffff81002c25a800
> Call Trace:
> <ffffffff803846d5>{wait_for_completion+437}
> <ffffffff80133e30>{default_wake_function+0}
> <ffffffff80133e30>{default_wake_function+0}
> <ffffffff88535be3>{:usb_storage:usb_stor_stop_transport+35}
> <ffffffff88534250>{:usb_storage:command_abort+256}
> <ffffffff88511f9c>{:scsi_mod:scsi_error_handler+2172}
> <ffffffff8010f7ef>{child_rip+8}
> <ffffffff88511720>{:scsi_mod:scsi_error_handler+0}
> <ffffffff8010f7e7>{child_rip+0}
> usb-storage D 00000000ffffffff 0 3582 1 3627 3581
> (L-TLB)
> ffff81002b8e1c08 0000000000000046 ffff81002b9e1000 0000000000000010
> 000000762b8e1c98 ffff81002bed8800 00000000000003dd ffff81002eb10800
> 00000000c0040280 000000000000001f
> Call Trace:
> <ffffffff803846d5>{wait_for_completion+437}
> <ffffffff803843e1>{thread_return+253}
> <ffffffff80133e30>{default_wake_function+0}
> <ffffffff80133e30>{default_wake_function+0}
> <ffffffff88535166>{:usb_storage:usb_stor_msg_common+550}
> <ffffffff80120426>{dma_unmap_sg+134}
> <ffffffff8853570f>{:usb_storage:usb_stor_bulk_transfer_buf+143}
> <ffffffff88535f8b>{:usb_storage:usb_stor_Bulk_transport+203}
> <ffffffff885358eb>{:usb_storage:usb_stor_invoke_transport+59}
> <ffffffff88534dfb>{:usb_storage:usb_stor_transparent_scsi_command+27}
> <ffffffff88536974>{:usb_storage:usb_stor_control_thread+756}
> <ffffffff801337c3>{finish_task_switch+195}
> <ffffffff8010f7ef>{child_rip+8}
> <ffffffff88536680>{:usb_storage:usb_stor_control_thread+0}
> <ffffffff8010f7e7>{child_rip+0}
>
> scsi_eh_3 S 00000000ffffffff 0 3627 1 3634 3582
> (L-TLB)
> ffff81002bd47d68 0000000000000046 ffff81002bd47d28 ffffffff80219b32
> 000000742bc387c0 ffff81002bc387c0 0000000000000226 ffff81002b9fc030
> ffff81002bd47d48 ffffffff80147ab1
> Call Trace:
> <ffffffff80219b32>{_atomic_dec_and_lock+290} <ffffffff80147ab1>{free_uid+33}
> <ffffffff80383bd6>{__down_interruptible+486}
> <ffffffff80133e30>{default_wake_function+0}
> <ffffffff80386928>{__down_failed_interruptible+53}
> <ffffffff88512a75>{:scsi_mod:.text.lock.scsi_error+45}
> <ffffffff8010f7ef>{child_rip+8}
> <ffffffff88511720>{:scsi_mod:scsi_error_handler+0}
> <ffffffff8010f7e7>{child_rip+0}
> usb-storage S 00000020f04e3d81 0 3634 1 3627
> (L-TLB)
> ffff81002bc53df8 0000000000000046 ffff81002bc53d80 0000000000001000
> 000000732b9eba7c ffff81002b9fc030 00000000000005ad ffff81002ebc9800
> ffff81002bc53de8 ffffffff8853570f
> Call Trace:
> <ffffffff8853570f>{:usb_storage:usb_stor_bulk_transfer_buf+143}
> <ffffffff80383bd6>{__down_interruptible+486}
> <ffffffff80133e30>{default_wake_function+0}
> <ffffffff80386928>{__down_failed_interruptible+53}
> <ffffffff88537bb8>{:usb_storage:.text.lock.usb+5}
> <ffffffff801337c3>{finish_task_switch+195}
> <ffffffff8010f7ef>{child_rip+8}
> <ffffffff88536680>{:usb_storage:usb_stor_control_thread+0}
> <ffffffff8010f7e7>{child_rip+0}
>
> khubd S 0000001ddd381da1 0 125 1 182 9
> (L-TLB)
> ffff810001ecbe18 0000000000000046 0000000000000246 ffff81002ba2c400
> 0000007401ecbdd8 ffff810001e9a800 0000000000003023 ffff81002bed8070
> ffff810001ecbe18 ffffffff8015c4c9
> Call Trace:
> <ffffffff8015c4c9>{prepare_to_wait+345} <ffffffff802e0216>{hub_thread+4118}
> <ffffffff8016f0cf>{free_pages_bulk+1007}
> <ffffffff8015c820>{autoremove_wake_function+0}
> <ffffffff8015c820>{autoremove_wake_function+0}
> <ffffffff8010f7ef>{child_rip+8}
> <ffffffff802df200>{hub_thread+0} <ffffffff8010f7e7>{child_rip+0}

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/