diff mbox series

[v3,04/17] scsi: iscsi: drop suspend calls from ep_disconnect

Message ID 20210416020440.259271-5-michael.christie@oracle.com
State Superseded
Headers show
Series libicsi and qedi TMF fixes | expand

Commit Message

Mike Christie April 16, 2021, 2:04 a.m. UTC
libiscsi will now suspend the send/tx queue for the drivers so we can drop
it from the drivers ep_disconnect.

Signed-off-by: Mike Christie <michael.christie@oracle.com>
---
 drivers/scsi/be2iscsi/be_iscsi.c | 6 ------
 drivers/scsi/bnx2i/bnx2i_iscsi.c | 6 +-----
 drivers/scsi/cxgbi/libcxgbi.c    | 1 -
 drivers/scsi/qedi/qedi_iscsi.c   | 8 ++++----
 4 files changed, 5 insertions(+), 16 deletions(-)

Comments

Lee Duncan April 20, 2021, 2:29 p.m. UTC | #1
On 4/15/21 7:04 PM, Mike Christie wrote:
> libiscsi will now suspend the send/tx queue for the drivers so we can drop

> it from the drivers ep_disconnect.

> 

> Signed-off-by: Mike Christie <michael.christie@oracle.com>

> ---

>  drivers/scsi/be2iscsi/be_iscsi.c | 6 ------

>  drivers/scsi/bnx2i/bnx2i_iscsi.c | 6 +-----

>  drivers/scsi/cxgbi/libcxgbi.c    | 1 -

>  drivers/scsi/qedi/qedi_iscsi.c   | 8 ++++----

>  4 files changed, 5 insertions(+), 16 deletions(-)

> 

> diff --git a/drivers/scsi/be2iscsi/be_iscsi.c b/drivers/scsi/be2iscsi/be_iscsi.c

> index a13c203ef7a9..a03d0ebc2312 100644

> --- a/drivers/scsi/be2iscsi/be_iscsi.c

> +++ b/drivers/scsi/be2iscsi/be_iscsi.c

> @@ -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);

> diff --git a/drivers/scsi/bnx2i/bnx2i_iscsi.c b/drivers/scsi/bnx2i/bnx2i_iscsi.c

> index b6c1da46d582..9a4f4776a78a 100644

> --- a/drivers/scsi/bnx2i/bnx2i_iscsi.c

> +++ b/drivers/scsi/bnx2i/bnx2i_iscsi.c

> @@ -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);

> diff --git a/drivers/scsi/cxgbi/libcxgbi.c b/drivers/scsi/cxgbi/libcxgbi.c

> index f078b3c4e083..215dd0eb3f48 100644

> --- a/drivers/scsi/cxgbi/libcxgbi.c

> +++ b/drivers/scsi/cxgbi/libcxgbi.c

> @@ -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;

> diff --git a/drivers/scsi/qedi/qedi_iscsi.c b/drivers/scsi/qedi/qedi_iscsi.c

> index ef16537c523c..30dc345b011c 100644

> --- a/drivers/scsi/qedi/qedi_iscsi.c

> +++ b/drivers/scsi/qedi/qedi_iscsi.c

> @@ -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);

>  

> 


Reviewed-by: Lee Duncan <lduncan@suse.com>
diff mbox series

Patch

diff --git a/drivers/scsi/be2iscsi/be_iscsi.c b/drivers/scsi/be2iscsi/be_iscsi.c
index a13c203ef7a9..a03d0ebc2312 100644
--- a/drivers/scsi/be2iscsi/be_iscsi.c
+++ b/drivers/scsi/be2iscsi/be_iscsi.c
@@ -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);
diff --git a/drivers/scsi/bnx2i/bnx2i_iscsi.c b/drivers/scsi/bnx2i/bnx2i_iscsi.c
index b6c1da46d582..9a4f4776a78a 100644
--- a/drivers/scsi/bnx2i/bnx2i_iscsi.c
+++ b/drivers/scsi/bnx2i/bnx2i_iscsi.c
@@ -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);
diff --git a/drivers/scsi/cxgbi/libcxgbi.c b/drivers/scsi/cxgbi/libcxgbi.c
index f078b3c4e083..215dd0eb3f48 100644
--- a/drivers/scsi/cxgbi/libcxgbi.c
+++ b/drivers/scsi/cxgbi/libcxgbi.c
@@ -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;
diff --git a/drivers/scsi/qedi/qedi_iscsi.c b/drivers/scsi/qedi/qedi_iscsi.c
index ef16537c523c..30dc345b011c 100644
--- a/drivers/scsi/qedi/qedi_iscsi.c
+++ b/drivers/scsi/qedi/qedi_iscsi.c
@@ -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);