From: Bart Van Assche <bart.vanassche@sandisk.com>
To: "Nicholas A . Bellinger" <nab@linux-iscsi.org>
Cc: <target-devel@vger.kernel.org>,
Bart Van Assche <bart.vanassche@sandisk.com>,
<stable@vger.kernel.org>
Subject: [PATCH v6 14/33] target: Avoid that target drivers hang if a command is aborted
Date: Tue, 14 Feb 2017 16:25:53 -0800 [thread overview]
Message-ID: <20170215002612.14566-15-bart.vanassche@sandisk.com> (raw)
In-Reply-To: <20170215002612.14566-1-bart.vanassche@sandisk.com>
For several target drivers (e.g. ib_srpt and ib_isert) sleeping inside
transport_generic_free_cmd() causes RDMA completion processing to stall.
Hence only sleep inside this function if the (iSCSI) target driver
requires this.
This patch avoids that messages similar to the following appear in the
kernel log:
INFO: task kworker/u25:0:1013 blocked for more than 480 seconds.
Tainted: G W 4.10.0-rc7-dbg+ #3
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
kworker/u25:0 D 0 1013 2 0x00000000
Workqueue: ib-comp-wq ib_cq_poll_work [ib_core]
Call Trace:
__schedule+0x2da/0xb00
schedule+0x38/0x90
schedule_timeout+0x2fe/0x640
wait_for_completion+0xfe/0x160
transport_generic_free_cmd+0x2e/0x80 [target_core_mod]
srpt_send_done+0x59/0x9f [ib_srpt]
__ib_process_cq+0x4b/0xd0 [ib_core]
ib_cq_poll_work+0x1b/0x60 [ib_core]
process_one_work+0x208/0x6a0
worker_thread+0x49/0x4a0
kthread+0x107/0x140
ret_from_fork+0x2e/0x40
Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
Cc: <stable@vger.kernel.org>
---
drivers/target/target_core_transport.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
index 2ed9721a7202..ab1c493a9a16 100644
--- a/drivers/target/target_core_transport.c
+++ b/drivers/target/target_core_transport.c
@@ -2504,15 +2504,13 @@ int transport_generic_free_cmd(struct se_cmd *cmd, int wait_for_tasks)
int ret = 0;
bool aborted = false, tas = false;
- if (!(cmd->se_cmd_flags & SCF_SE_LUN_CMD)) {
- if (wait_for_tasks && (cmd->se_cmd_flags & SCF_SCSI_TMR_CDB))
- target_wait_free_cmd(cmd, &aborted, &tas);
+ if (wait_for_tasks)
+ target_wait_free_cmd(cmd, &aborted, &tas);
+ if (!(cmd->se_cmd_flags & SCF_SE_LUN_CMD)) {
if (!aborted || tas)
ret = transport_put_cmd(cmd);
} else {
- if (wait_for_tasks)
- target_wait_free_cmd(cmd, &aborted, &tas);
/*
* Handle WRITE failure case where transport_generic_new_cmd()
* has already added se_cmd to state_list, but fabric has
@@ -2535,7 +2533,6 @@ int transport_generic_free_cmd(struct se_cmd *cmd, int wait_for_tasks)
*/
if (aborted) {
pr_debug("Detected CMD_T_ABORTED for ITT: %llu\n", cmd->tag);
- wait_for_completion(&cmd->cmd_wait_comp);
cmd->se_tfo->release_cmd(cmd);
ret = 1;
}
--
2.11.0
next parent reply other threads:[~2017-02-15 0:26 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20170215002612.14566-1-bart.vanassche@sandisk.com>
2017-02-15 0:25 ` Bart Van Assche [this message]
2017-02-20 21:38 ` [PATCH v6 14/33] target: Avoid that target drivers hang if a command is aborted Nicholas A. Bellinger
2017-02-21 18:58 ` Bart Van Assche
2017-03-02 5:21 ` Nicholas A. Bellinger
2017-03-02 5:24 ` Bart Van Assche
2017-03-02 7:02 ` Nicholas A. Bellinger
2017-02-15 0:25 ` [PATCH v6 15/33] target: Avoid circular waits between LUN resets Bart Van Assche
2017-02-20 22:32 ` Nicholas A. Bellinger
2017-02-15 0:25 ` [PATCH v6 19/33] target: Avoid that LUN reset sporadically triggers data corruption Bart Van Assche
2017-02-20 23:52 ` Nicholas A. Bellinger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170215002612.14566-15-bart.vanassche@sandisk.com \
--to=bart.vanassche@sandisk.com \
--cc=nab@linux-iscsi.org \
--cc=stable@vger.kernel.org \
--cc=target-devel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.