scsi: iscsi: Drop suspend calls from ep_disconnect
authorMike Christie <michael.christie@oracle.com>
Tue, 25 May 2021 18:17:56 +0000 (13:17 -0500)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 2 Jun 2021 05:28:19 +0000 (01:28 -0400)
libiscsi will now suspend the send/tx queue for the drivers so we can drop
it from the drivers ep_disconnect.

Link: https://lore.kernel.org/r/20210525181821.7617-4-michael.christie@oracle.com
Reviewed-by: Lee Duncan <lduncan@suse.com>
Signed-off-by: Mike Christie <michael.christie@oracle.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/be2iscsi/be_iscsi.c
drivers/scsi/bnx2i/bnx2i_iscsi.c
drivers/scsi/cxgbi/libcxgbi.c
drivers/scsi/qedi/qedi_iscsi.c

index 0e935c4..51a7b19 100644 (file)
@@ -1293,7 +1293,6 @@ static int beiscsi_conn_close(struct beiscsi_endpoint *beiscsi_ep)
 void beiscsi_ep_disconnect(struct iscsi_endpoint *ep)
 {
        struct beiscsi_endpoint *beiscsi_ep;
-       struct beiscsi_conn *beiscsi_conn;
        struct beiscsi_hba *phba;
        uint16_t cri_index;
 
@@ -1312,11 +1311,6 @@ void beiscsi_ep_disconnect(struct iscsi_endpoint *ep)
                return;
        }
 
-       if (beiscsi_ep->conn) {
-               beiscsi_conn = beiscsi_ep->conn;
-               iscsi_suspend_queue(beiscsi_conn->conn);
-       }
-
        if (!beiscsi_hba_is_online(phba)) {
                beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_CONFIG,
                            "BS_%d : HBA in error 0x%lx\n", phba->state);
index b6c1da4..9a4f477 100644 (file)
@@ -2113,7 +2113,6 @@ static void bnx2i_ep_disconnect(struct iscsi_endpoint *ep)
 {
        struct bnx2i_endpoint *bnx2i_ep;
        struct bnx2i_conn *bnx2i_conn = NULL;
-       struct iscsi_conn *conn = NULL;
        struct bnx2i_hba *hba;
 
        bnx2i_ep = ep->dd_data;
@@ -2126,11 +2125,8 @@ static void bnx2i_ep_disconnect(struct iscsi_endpoint *ep)
                !time_after(jiffies, bnx2i_ep->timestamp + (12 * HZ)))
                msleep(250);
 
-       if (bnx2i_ep->conn) {
+       if (bnx2i_ep->conn)
                bnx2i_conn = bnx2i_ep->conn;
-               conn = bnx2i_conn->cls_conn->dd_data;
-               iscsi_suspend_queue(conn);
-       }
        hba = bnx2i_ep->hba;
 
        mutex_lock(&hba->net_dev_lock);
index f078b3c..215dd0e 100644 (file)
@@ -2968,7 +2968,6 @@ void cxgbi_ep_disconnect(struct iscsi_endpoint *ep)
                ep, cep, cconn, csk, csk->state, csk->flags);
 
        if (cconn && cconn->iconn) {
-               iscsi_suspend_tx(cconn->iconn);
                write_lock_bh(&csk->callback_lock);
                cep->csk->user_data = NULL;
                cconn->cep = NULL;
index ef16537..30dc345 100644 (file)
@@ -988,7 +988,6 @@ static void qedi_ep_disconnect(struct iscsi_endpoint *ep)
 {
        struct qedi_endpoint *qedi_ep;
        struct qedi_conn *qedi_conn = NULL;
-       struct iscsi_conn *conn = NULL;
        struct qedi_ctx *qedi;
        int ret = 0;
        int wait_delay;
@@ -1007,8 +1006,6 @@ static void qedi_ep_disconnect(struct iscsi_endpoint *ep)
 
        if (qedi_ep->conn) {
                qedi_conn = qedi_ep->conn;
-               conn = qedi_conn->cls_conn->dd_data;
-               iscsi_suspend_queue(conn);
                abrt_conn = qedi_conn->abrt_conn;
 
                while (count--) {
@@ -1621,8 +1618,11 @@ void qedi_clear_session_ctx(struct iscsi_cls_session *cls_sess)
        struct iscsi_conn *conn = session->leadconn;
        struct qedi_conn *qedi_conn = conn->dd_data;
 
-       if (iscsi_is_session_online(cls_sess))
+       if (iscsi_is_session_online(cls_sess)) {
+               if (conn)
+                       iscsi_suspend_queue(conn);
                qedi_ep_disconnect(qedi_conn->iscsi_ep);
+       }
 
        qedi_conn_destroy(qedi_conn->cls_conn);