From a8a72c1b517a7092937409676458e6ff98dd2533 Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Sat, 2 Jan 2010 13:56:12 +0000 Subject: [PATCH] Fixed sporadic lockup triggered by removing the ib_srpt kernel module. The following complaint was logged by the kernel when this happened: INFO: task rmmod:26637 blocked for more than 120 seconds. "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. rmmod D 00000000ffffffff 0 26637 26629 ffff88009ce9dbd8 0000000000000046 ffff88009ce9dbf8 ffffffff8052466e 0000000000000000 0000000000000001 0000000000000001 0000000000000001 ffff88003c24d070 00000000001d17c0 000000000000c8a0 ffff88003c24d078 Call Trace: [] ? trace_hardirqs_on_thunk+0x3a/0x3f [] schedule+0x18/0x40 [] schedule_timeout+0x165/0x1a0 [] ? _spin_unlock_irq+0x30/0x60 [] ? sub_preempt_count+0xa9/0xe0 [] wait_for_common+0x116/0x1a0 [] ? default_wake_function+0x0/0x20 [] wait_for_completion+0x1d/0x20 [] scst_unregister_session+0x101/0x240 [scst] [] srpt_release+0xef/0x1e0 [ib_srpt] [] ? _spin_unlock_irqrestore+0x65/0x80 [] scst_unregister+0x70/0x380 [scst] [] ? _spin_unlock_irqrestore+0x42/0x80 [] srpt_remove_one+0xa2/0x190 [ib_srpt] [] ib_unregister_client+0x65/0x120 [ib_core] [] ? trace_hardirqs_on+0xd/0x10 [] srpt_cleanup_module+0x70/0xd4 [ib_srpt] [] sys_delete_module+0x1a7/0x270 [] ? retint_swapgs+0xe/0x13 [] ? trace_hardirqs_on_caller+0x29/0x1d0 [] ? trace_hardirqs_on_thunk+0x3a/0x3f [] system_call_fastpath+0x16/0x1b INFO: lockdep is turned off. git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1425 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- srpt/src/ib_srpt.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/srpt/src/ib_srpt.c b/srpt/src/ib_srpt.c index d701596bf..abe697dd4 100644 --- a/srpt/src/ib_srpt.c +++ b/srpt/src/ib_srpt.c @@ -1186,6 +1186,8 @@ static void srpt_abort_scst_cmd(struct srpt_device *sdev, switch (previous_state) { case SRPT_STATE_NEW: + scst_set_delivery_status(scmnd, SCST_CMD_DELIVERY_ABORTED); + scst_tgt_cmd_done(scmnd, scst_estimate_context()); break; case SRPT_STATE_NEED_DATA: WARN_ON(scst_cmd_get_data_direction(ioctx->scmnd)