From: Mike Christie <michael.christie@oracle.com>
To: mlombard@redhat.com, martin.petersen@oracle.com,
d.bogdanov@yadro.com, linux-scsi@vger.kernel.org,
target-devel@vger.kernel.org
Cc: Mike Christie <michael.christie@oracle.com>
Subject: [PATCH v5 9/9] scsi: target: iscsi: handle abort for WRITE_PENDING cmds
Date: Sat, 18 Mar 2023 20:56:20 -0500 [thread overview]
Message-ID: <20230319015620.96006-10-michael.christie@oracle.com> (raw)
In-Reply-To: <20230319015620.96006-1-michael.christie@oracle.com>
From: Dmitry Bogdanov <d.bogdanov@yadro.com>
Sometimes an initiator does not send data for WRITE commands and tries
to abort it. The abort hangs waiting for frontend driver completion.
iSCSI driver waits for for data and that timeout eventually initiates
connection reinstatment. The connection closing releases the commands in
the connection, but those aborted commands still did not handle the
abort and did not decrease a command ref counter. Because of that the
connection reinstatement hangs indefinitely and prevents re-login for
that initiator.
This patch adds a handling in TCM of the abort for the WRITE_PENDING
commands at connection closing moment to make it possible to release
them.
Signed-off-by: Dmitry Bogdanov <d.bogdanov@yadro.com>
[Rebase and expand comment]
Signed-off-by: Mike Christie <michael.christie@oracle.com>
---
drivers/target/iscsi/iscsi_target.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c
index 07e196b44b91..834cce50f9b0 100644
--- a/drivers/target/iscsi/iscsi_target.c
+++ b/drivers/target/iscsi/iscsi_target.c
@@ -26,6 +26,7 @@
#include <target/target_core_base.h>
#include <target/target_core_fabric.h>
+#include <target/target_core_backend.h>
#include <target/iscsi/iscsi_target_core.h>
#include "iscsi_target_parameters.h"
#include "iscsi_target_seq_pdu_list.h"
@@ -4236,6 +4237,16 @@ static void iscsit_release_commands_from_conn(struct iscsit_conn *conn)
} else {
se_cmd->transport_state |= CMD_T_FABRIC_STOP;
}
+
+ if (cmd->se_cmd.t_state == TRANSPORT_WRITE_PENDING) {
+ /*
+ * We never submitted the cmd to LIO core, so we have
+ * to tell LIO to perform the completion process.
+ */
+ spin_unlock_irq(&se_cmd->t_state_lock);
+ target_complete_cmd(&cmd->se_cmd, SAM_STAT_TASK_ABORTED);
+ continue;
+ }
spin_unlock_irq(&se_cmd->t_state_lock);
}
spin_unlock_bh(&conn->cmd_lock);
--
2.25.1
next prev parent reply other threads:[~2023-03-19 1:56 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-19 1:56 [PATCH v5 0/9] target: TMF and recovery fixes Mike Christie
2023-03-19 1:56 ` [PATCH v5 1/9] scsi: target: Move sess cmd counter to new struct Mike Christie
2023-03-19 1:56 ` [PATCH v5 2/9] scsi: target: Move cmd counter allocation Mike Christie
2023-03-19 1:56 ` [PATCH v5 3/9] scsi: target: Pass in cmd counter to use during cmd setup Mike Christie
2023-03-19 1:56 ` [PATCH v5 4/9] scsi: target: iscsit/isert: Alloc per conn cmd counter Mike Christie
2023-03-19 1:56 ` [PATCH v5 5/9] scsi: target: iscsit: stop/wait on cmds during conn close Mike Christie
2023-03-19 1:56 ` [PATCH v5 6/9] scsi: target: iscsit: free cmds before session free Mike Christie
2023-03-19 1:56 ` [PATCH v5 7/9] scsi: target: Fix multiple LUN_RESET handling Mike Christie
2023-03-19 1:56 ` [PATCH v5 8/9] scsi: target: iscsit: Fix TAS handling during conn cleanup Mike Christie
2023-03-19 1:56 ` Mike Christie [this message]
2023-03-24 21:40 ` [PATCH v5 0/9] target: TMF and recovery fixes Martin K. Petersen
2023-04-03 2:15 ` Martin K. Petersen
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=20230319015620.96006-10-michael.christie@oracle.com \
--to=michael.christie@oracle.com \
--cc=d.bogdanov@yadro.com \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=mlombard@redhat.com \
--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