From: Maurizio Lombardi <mlombard@redhat.com>
To: martin.petersen@oracle.com
Cc: mlombard@arkamax.eu, michael.christie@oracle.com,
target-devel@vger.kernel.org, loberman@redhat.com
Subject: [PATCH 1/1] target: iscsi: Fix hang for aborted WRITE_PENDING commands
Date: Fri, 17 Jul 2026 16:38:28 +0200 [thread overview]
Message-ID: <20260717143828.76291-2-mlombard@redhat.com> (raw)
In-Reply-To: <20260717143828.76291-1-mlombard@redhat.com>
When a LUN_RESET aborts a WRITE command that is in the
TRANSPORT_WRITE_PENDING state, the target core sets CMD_T_ABORTED and waits
for the frontend to finish processing.
If the initiator subsequently sends the remaining dataout PDUs,
__iscsit_check_dataout_hdr() catches the payload, stops the dataout timer
if the sequence is final and finally dumps the data.
However, the iSCSI target doesn't trigger the completion process for these
aborted commands. Because of this, the abort path hangs indefinitely in
target_put_cmd_and_wait(), leading to a deadlocked target worker thread.
Fix this by explicitly calling target_complete_cmd() when the final dataout
PDU is received for an aborted WRITE command. target_complete_cmd() detects
the CMD_T_ABORTED flag and cleanly routes the command into target_abort_work,
allowing the abort completion to successfully unblock.
Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
---
drivers/target/iscsi/iscsi_target.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c
index 62ada3a52210..124ff269b8e7 100644
--- a/drivers/target/iscsi/iscsi_target.c
+++ b/drivers/target/iscsi/iscsi_target.c
@@ -1533,8 +1533,10 @@ __iscsit_check_dataout_hdr(struct iscsit_conn *conn, void *buf,
*/
if (se_cmd->transport_state & CMD_T_ABORTED) {
if (hdr->flags & ISCSI_FLAG_CMD_FINAL &&
- --cmd->outstanding_r2ts < 1)
+ --cmd->outstanding_r2ts < 1) {
iscsit_stop_dataout_timer(cmd);
+ target_complete_cmd(se_cmd, SAM_STAT_TASK_ABORTED);
+ }
return iscsit_dump_data_payload(conn, payload_length, 1);
}
--
2.55.0
next prev parent reply other threads:[~2026-07-17 14:38 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-17 14:38 [PATCH 0/1] Write commands abort hang Maurizio Lombardi
2026-07-17 14:38 ` Maurizio Lombardi [this message]
2026-07-17 15:08 ` [PATCH 1/1] target: iscsi: Fix hang for aborted WRITE_PENDING commands Laurence Oberman
2026-07-17 16:38 ` Bart Van Assche
2026-07-20 12:41 ` Maurizio Lombardi
2026-08-27 9:33 ` Dmitry Bogdanov
2026-08-27 10:37 ` Maurizio Lombardi
2026-08-29 2:19 ` Martin K. Petersen (Oracle)
2026-08-27 7:30 ` [PATCH 0/1] Write commands abort hang Maurizio Lombardi
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=20260717143828.76291-2-mlombard@redhat.com \
--to=mlombard@redhat.com \
--cc=loberman@redhat.com \
--cc=martin.petersen@oracle.com \
--cc=michael.christie@oracle.com \
--cc=mlombard@arkamax.eu \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox