From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pat LaVarre Subject: sg MiB writes scheduling while atomic Date: 10 Sep 2003 12:49:37 -0600 Sender: linux-scsi-owner@vger.kernel.org Message-ID: <1063219776.3669.72.camel@patehci2> References: <1063217791.3669.43.camel@patehci2> Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7bit Return-path: Received: from email-out2.iomega.com ([147.178.1.83]:21125 "EHLO email.iomega.com") by vger.kernel.org with ESMTP id S265466AbTIJSse (ORCPT ); Wed, 10 Sep 2003 14:48:34 -0400 In-Reply-To: <1063217791.3669.43.camel@patehci2> List-Id: linux-scsi@vger.kernel.org To: linux-scsi@vger.kernel.org In reply to `modprobe -r sg`, linux-2.6.0-test5 dmesg tells me: Debug: sleeping function called from invalid context at include/linux/rwsem.h:66 ... bad: scheduling while atomic! Those lines appear in the log below. The ... ellipses you see were typed by me, sorry I don't have a more complete intact log, nor have I yet repeated this result myself. To provoke this log overnight I ran a shell script to repeat something like: pldd of=/dev/sg1 if=/dev/zero bs=1m The "usb 1-1: sg_complete, unlink --> -19" appeared when or before an ioctl SG_IO hung. The Debug/ Call Trace appeared in response to a `modprobe -r sg` that hung. I'm confident the cable was not unplugged because rebooting the system made sg work again. I'm confident the drive power was not cycled because reboot provoked only an SK ASC = x 6 29 Reset unit attention, without an SK ASC = x 6 28 GoneReady unit attention. [usb-storage] folk tell me some linux-scsi folk may appreciate me mentioning this. Pat LaVarre ... usb-storage: Command WRITE_10 (10 bytes) usb-storage: 2a 00 00 ce 26 00 00 02 00 00 usb-storage: Bulk Command S 0x43425355 T 0x439c9 L 1048576 F 0 Trg 0 LUN 0 CL 10 usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes usb-storage: Status code 0; transferred 31/31 usb-storage: -- transfer complete usb-storage: Bulk command transfer result=0 usb-storage: usb_stor_bulk_transfer_sglist: xfer 1048576 bytes, 32 entries usb-storage: Status code 0; transferred 1048576/1048576 usb-storage: -- transfer complete usb-storage: Bulk data transfer result 0x0 usb-storage: Attempting to get CSW... usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes usb-storage: Status code 0; transferred 13/13 usb-storage: -- transfer complete usb-storage: Bulk status result = 0 usb-storage: Bulk Status S 0x53425355 T 0x439c9 R 0 Stat 0x0 usb-storage: scsi cmd done, result=0x0 usb-storage: *** thread sleeping. usb-storage: queuecommand called usb-storage: *** thread awakened. usb-storage: Command WRITE_10 (10 bytes) usb-storage: 2a 00 00 ce 28 00 00 02 00 00 usb-storage: Bulk Command S 0x43425355 T 0x439ca L 1048576 F 0 Trg 0 LUN 0 CL 10 usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes usb-storage: Status code 0; transferred 31/31 usb-storage: -- transfer complete usb-storage: Bulk command transfer result=0 usb-storage: usb_stor_bulk_transfer_sglist: xfer 1048576 bytes, 32 entries usb-storage: Status code 0; transferred 1048576/1048576 usb-storage: -- transfer complete usb-storage: Bulk data transfer result 0x0 usb-storage: Attempting to get CSW... usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes usb-storage: Status code 0; transferred 13/13 usb-storage: -- transfer complete usb-storage: Bulk status result = 0 usb-storage: Bulk Status S 0x53425355 T 0x439ca R 0 Stat 0x0 usb-storage: scsi cmd done, result=0x0 usb-storage: *** thread sleeping. usb-storage: queuecommand called usb-storage: *** thread awakened. usb-storage: Command WRITE_10 (10 bytes) usb-storage: 2a 00 00 ce 2a 00 00 02 00 00 usb-storage: Bulk Command S 0x43425355 T 0x439cb L 1048576 F 0 Trg 0 LUN 0 CL 10 usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes usb-storage: Status code 0; transferred 31/31 usb-storage: -- transfer complete usb-storage: Bulk command transfer result=0 usb-storage: usb_stor_bulk_transfer_sglist: xfer 1048576 bytes, 32 entries usb 1-1: sg_complete, unlink --> -19 usb 1-1: sg_complete, unlink --> -19 usb 1-1: sg_complete, unlink --> -19 usb 1-1: sg_complete, unlink --> -19 usb 1-1: sg_complete, unlink --> -19 usb 1-1: sg_complete, unlink --> -19 usb 1-1: sg_complete, unlink --> -19 usb 1-1: sg_complete, unlink --> -19 usb 1-1: sg_complete, unlink --> -19 usb 1-1: sg_complete, unlink --> -19 usb 1-1: sg_complete, unlink --> -19 ... Debug: sleeping function called from invalid context at include/linux/rwsem.h:66 Call Trace: [] __might_sleep+0x5f/0x72 [] scsi_device_put+0x3c/0xfe [] sg_remove+0x146/0x1bd [sg] [] class_interface_unregister+0x7c/0xc0 [] exit_sg+0x17/0x56 [sg] [] sys_delete_module+0x18e/0x1d1 [] sys_munmap+0x58/0x77 [] sysenter_past_esp+0x52/0x71 bad: scheduling while atomic! Call Trace: [] schedule+0x57a/0x57f [] printk+0x180/0x1cc [] rwsem_down_write_failed+0xa3/0x15c [] dump_stack+0x1e/0x22 [] .text.lock.scsi+0xa7/0xce [] sg_remove+0x146/0x1bd [sg] [] class_interface_unregister+0x7c/0xc0 [] exit_sg+0x17/0x56 [sg] [] sys_delete_module+0x18e/0x1d1 [] sys_munmap+0x58/0x77 [] sysenter_past_esp+0x52/0x71 ...