public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
From: Hannes Reinecke <hare@suse.de>
To: "Martin K. Petersen" <martin.petersen@oracle.com>
Cc: Christoph Hellwig <hch@lst.de>,
	James Bottomley <james.bottomley@hansenpartnership.com>,
	linux-scsi@vger.kernel.org, Hannes Reinecke <hare@suse.de>,
	Hannes Reinecke <hare@suse.com>
Subject: [PATCHv2 08/26] bfa: move bus reset to target reset
Date: Fri, 25 Aug 2017 13:57:03 +0200	[thread overview]
Message-ID: <1503662241-127788-9-git-send-email-hare@suse.de> (raw)
In-Reply-To: <1503662241-127788-1-git-send-email-hare@suse.de>

The bus reset handler is just calling target reset on all targets,
which is exactly what SCSI EH will be doing anyway.
So move the bus reset function to target reset and drop the loop.

Signed-off-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
---
 drivers/scsi/bfa/bfad_im.c | 37 +++++++++++++++----------------------
 1 file changed, 15 insertions(+), 22 deletions(-)

diff --git a/drivers/scsi/bfa/bfad_im.c b/drivers/scsi/bfa/bfad_im.c
index 7eb0eef..24e657a 100644
--- a/drivers/scsi/bfa/bfad_im.c
+++ b/drivers/scsi/bfa/bfad_im.c
@@ -373,32 +373,28 @@ static void bfad_im_fc_rport_add(struct bfad_im_port_s  *im_port,
 }
 
 /*
- * Scsi_Host template entry, resets the bus and abort all commands.
+ * Scsi_Host template entry, resets the target and abort all commands.
  */
 static int
-bfad_im_reset_bus_handler(struct scsi_cmnd *cmnd)
+bfad_im_reset_target_handler(struct scsi_cmnd *cmnd)
 {
 	struct Scsi_Host *shost = cmnd->device->host;
+	struct scsi_target *starget = scsi_target(cmnd->device);
 	struct bfad_im_port_s *im_port =
 				(struct bfad_im_port_s *) shost->hostdata[0];
 	struct bfad_s         *bfad = im_port->bfad;
 	struct bfad_itnim_s   *itnim;
 	unsigned long   flags;
-	u32        i, rc, err_cnt = 0;
+	u32        rc, rtn = FAILED;
 	DECLARE_WAIT_QUEUE_HEAD_ONSTACK(wq);
 	enum bfi_tskim_status task_status;
 
 	spin_lock_irqsave(&bfad->bfad_lock, flags);
-	for (i = 0; i < MAX_FCP_TARGET; i++) {
-		itnim = bfad_get_itnim(im_port, i);
-		if (itnim) {
-			cmnd->SCp.ptr = (char *)&wq;
-			rc = bfad_im_target_reset_send(bfad, cmnd, itnim);
-			if (rc != BFA_STATUS_OK) {
-				err_cnt++;
-				continue;
-			}
-
+	itnim = bfad_get_itnim(im_port, starget->id);
+	if (itnim) {
+		cmnd->SCp.ptr = (char *)&wq;
+		rc = bfad_im_target_reset_send(bfad, cmnd, itnim);
+		if (rc == BFA_STATUS_OK) {
 			/* wait target reset to complete */
 			spin_unlock_irqrestore(&bfad->bfad_lock, flags);
 			wait_event(wq, test_bit(IO_DONE_BIT,
@@ -406,20 +402,17 @@ static void bfad_im_fc_rport_add(struct bfad_im_port_s  *im_port,
 			spin_lock_irqsave(&bfad->bfad_lock, flags);
 
 			task_status = cmnd->SCp.Status >> 1;
-			if (task_status != BFI_TSKIM_STS_OK) {
+			if (task_status != BFI_TSKIM_STS_OK)
 				BFA_LOG(KERN_ERR, bfad, bfa_log_level,
 					"target reset failure,"
 					" status: %d\n", task_status);
-				err_cnt++;
-			}
+			else
+				rtn = SUCCESS;
 		}
 	}
 	spin_unlock_irqrestore(&bfad->bfad_lock, flags);
 
-	if (err_cnt)
-		return FAILED;
-
-	return SUCCESS;
+	return rtn;
 }
 
 /*
@@ -816,7 +809,7 @@ struct scsi_host_template bfad_im_scsi_host_template = {
 	.eh_timed_out = fc_eh_timed_out,
 	.eh_abort_handler = bfad_im_abort_handler,
 	.eh_device_reset_handler = bfad_im_reset_lun_handler,
-	.eh_bus_reset_handler = bfad_im_reset_bus_handler,
+	.eh_target_reset_handler = bfad_im_reset_target_handler,
 
 	.slave_alloc = bfad_im_slave_alloc,
 	.slave_configure = bfad_im_slave_configure,
@@ -839,7 +832,7 @@ struct scsi_host_template bfad_im_vport_template = {
 	.eh_timed_out = fc_eh_timed_out,
 	.eh_abort_handler = bfad_im_abort_handler,
 	.eh_device_reset_handler = bfad_im_reset_lun_handler,
-	.eh_bus_reset_handler = bfad_im_reset_bus_handler,
+	.eh_target_reset_handler = bfad_im_reset_target_handler,
 
 	.slave_alloc = bfad_im_slave_alloc,
 	.slave_configure = bfad_im_slave_configure,
-- 
1.8.5.6

  parent reply	other threads:[~2017-08-25 11:58 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-25 11:56 [PATCHv2 00/26] SCSI EH argument reshuffle part I Hannes Reinecke
2017-08-25 11:56 ` [PATCHv2 01/26] scsi: fix comment in scsi_device_set_state() Hannes Reinecke
2017-08-25 11:56 ` [PATCHv2 02/26] mptfc: Do not call fc_block_scsi_eh() on host reset Hannes Reinecke
2017-08-25 11:56 ` [PATCHv2 03/26] ibmvfc: " Hannes Reinecke
2017-08-25 11:56 ` [PATCHv2 04/26] fc_fcp: do not call fc_block_scsi_eh() from " Hannes Reinecke
2017-08-25 11:57 ` [PATCHv2 05/26] fnic: do not call host reset from command abort Hannes Reinecke
2017-08-25 11:57 ` [PATCHv2 06/26] uas: move eh_bus_reset_handler to eh_device_reset_handler Hannes Reinecke
2017-08-25 11:57 ` [PATCHv2 07/26] libsas: move bus_reset_handler() to target_reset_handler() Hannes Reinecke
2017-08-25 11:57 ` Hannes Reinecke [this message]
2017-08-25 11:57 ` [PATCHv2 09/26] hptiop: Simplify reset handling Hannes Reinecke
2017-08-25 11:57 ` [PATCHv2 10/26] fdomain: move bus reset to host reset Hannes Reinecke
2017-08-25 11:57 ` [PATCHv2 11/26] scsi: drop bus reset for wd33c93-compatible boards Hannes Reinecke
2017-08-25 11:57 ` [PATCHv2 12/26] rtsx: drop bus reset function Hannes Reinecke
2017-08-25 11:57 ` [PATCHv2 13/26] qlogicpti: move bus reset to host reset Hannes Reinecke
2017-08-25 11:57 ` [PATCHv2 14/26] acornscsi: " Hannes Reinecke
2017-08-25 11:57 ` [PATCHv2 15/26] NCR5380: Move " Hannes Reinecke
2017-08-25 11:57 ` [PATCHv2 16/26] qlogicfas: move bus_reset to host_reset Hannes Reinecke
2017-08-25 11:57 ` [PATCHv2 17/26] imm: drop duplicate bus_reset handler Hannes Reinecke
2017-08-25 11:57 ` [PATCHv2 18/26] ppa: " Hannes Reinecke
2017-08-25 11:57 ` [PATCHv2 19/26] qedf: drop bus reset handler Hannes Reinecke
2017-08-25 11:57 ` [PATCHv2 20/26] nsp32: drop bus reset Hannes Reinecke
2017-08-25 11:57 ` [PATCHv2 21/26] aha152x: drop host reset Hannes Reinecke
2017-08-25 11:57 ` [PATCHv2 22/26] 53c700: move bus reset to " Hannes Reinecke
2017-08-25 11:57 ` [PATCHv2 23/26] bnx2fc: remove obsolete bnx2fc_eh_host_reset() definition Hannes Reinecke
2017-08-25 11:57 ` [PATCHv2 24/26] megaraid_mbox: drop duplicate bus reset and device reset function Hannes Reinecke
2017-08-25 11:57 ` [PATCHv2 25/26] visorhba: sanitze private device data allocation Hannes Reinecke
2017-08-25 11:57 ` [PATCHv2 26/26] eata: remove 'arg_done' from eata2x_eh_host_reset() Hannes Reinecke
2017-08-25 21:22 ` [PATCHv2 00/26] SCSI EH argument reshuffle part I 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=1503662241-127788-9-git-send-email-hare@suse.de \
    --to=hare@suse.de \
    --cc=hare@suse.com \
    --cc=hch@lst.de \
    --cc=james.bottomley@hansenpartnership.com \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    /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