提交 b98855a7 编写于 作者: M Mike Christie 提交者: Zheng Zengkai

scsi: iscsi: Move iscsi_ep_disconnect()

stable inclusion
from stable-v5.10.112
commit 699bd835c36e095dc80bea21d9a15cd7f7bc8b9f
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5HL0X

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=699bd835c36e095dc80bea21d9a15cd7f7bc8b9f

--------------------------------

[ Upstream commit c34f95e9 ]

This patch moves iscsi_ep_disconnect() so it can be called earlier in the
next patch.

Link: https://lore.kernel.org/r/20220408001314.5014-2-michael.christie@oracle.comTested-by: NManish Rangankar <mrangankar@marvell.com>
Reviewed-by: NLee Duncan <lduncan@suse.com>
Reviewed-by: NChris Leech <cleech@redhat.com>
Signed-off-by: NMike Christie <michael.christie@oracle.com>
Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: NSasha Levin <sashal@kernel.org>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
Acked-by: NXie XiuQi <xiexiuqi@huawei.com>
上级 a845d337
...@@ -2239,6 +2239,25 @@ static void iscsi_stop_conn(struct iscsi_cls_conn *conn, int flag) ...@@ -2239,6 +2239,25 @@ static void iscsi_stop_conn(struct iscsi_cls_conn *conn, int flag)
ISCSI_DBG_TRANS_CONN(conn, "Stopping conn done.\n"); ISCSI_DBG_TRANS_CONN(conn, "Stopping conn done.\n");
} }
static void iscsi_ep_disconnect(struct iscsi_cls_conn *conn, bool is_active)
{
struct iscsi_cls_session *session = iscsi_conn_to_session(conn);
struct iscsi_endpoint *ep;
ISCSI_DBG_TRANS_CONN(conn, "disconnect ep.\n");
conn->state = ISCSI_CONN_FAILED;
if (!conn->ep || !session->transport->ep_disconnect)
return;
ep = conn->ep;
conn->ep = NULL;
session->transport->unbind_conn(conn, is_active);
session->transport->ep_disconnect(ep);
ISCSI_DBG_TRANS_CONN(conn, "disconnect ep done.\n");
}
static int iscsi_if_stop_conn(struct iscsi_transport *transport, static int iscsi_if_stop_conn(struct iscsi_transport *transport,
struct iscsi_uevent *ev) struct iscsi_uevent *ev)
{ {
...@@ -2279,25 +2298,6 @@ static int iscsi_if_stop_conn(struct iscsi_transport *transport, ...@@ -2279,25 +2298,6 @@ static int iscsi_if_stop_conn(struct iscsi_transport *transport,
return 0; return 0;
} }
static void iscsi_ep_disconnect(struct iscsi_cls_conn *conn, bool is_active)
{
struct iscsi_cls_session *session = iscsi_conn_to_session(conn);
struct iscsi_endpoint *ep;
ISCSI_DBG_TRANS_CONN(conn, "disconnect ep.\n");
conn->state = ISCSI_CONN_FAILED;
if (!conn->ep || !session->transport->ep_disconnect)
return;
ep = conn->ep;
conn->ep = NULL;
session->transport->unbind_conn(conn, is_active);
session->transport->ep_disconnect(ep);
ISCSI_DBG_TRANS_CONN(conn, "disconnect ep done.\n");
}
static void iscsi_cleanup_conn_work_fn(struct work_struct *work) static void iscsi_cleanup_conn_work_fn(struct work_struct *work)
{ {
struct iscsi_cls_conn *conn = container_of(work, struct iscsi_cls_conn, struct iscsi_cls_conn *conn = container_of(work, struct iscsi_cls_conn,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册