All of lore.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>
Subject: [PATCH 12/13] aacraid: use scsi_host_busy_iter() in get_num_of_incomplete_fibs()
Date: Thu, 13 Feb 2020 15:04:21 +0100	[thread overview]
Message-ID: <20200213140422.128382-13-hare@suse.de> (raw)
In-Reply-To: <20200213140422.128382-1-hare@suse.de>

Use the scsi midlayer helper to traverse the number of outstanding
commands. This also eliminates the last usage for the cmd_list
functionality so we can drop it.

Signed-off-by: Hannes Reinecke <hare@suse.de>
Acked-by: Balsundar P <balsundar.p@microchip.com>
---
 drivers/scsi/aacraid/linit.c | 81 ++++++++++++++++++++++----------------------
 1 file changed, 41 insertions(+), 40 deletions(-)

diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c
index 877464e9d520..d0d1f3072c0c 100644
--- a/drivers/scsi/aacraid/linit.c
+++ b/drivers/scsi/aacraid/linit.c
@@ -622,54 +622,56 @@ static int aac_ioctl(struct scsi_device *sdev, unsigned int cmd,
 	return aac_do_ioctl(dev, cmd, arg);
 }
 
-static int get_num_of_incomplete_fibs(struct aac_dev *aac)
+struct fib_count_data {
+	int mlcnt;
+	int llcnt;
+	int ehcnt;
+	int fwcnt;
+	int krlcnt;
+};
+
+static bool fib_count_iter(struct scsi_cmnd *scmnd, void *data, bool reserved)
 {
+	struct fib_count_data *fib_count = data;
+
+	switch (scmnd->SCp.phase) {
+	case AAC_OWNER_FIRMWARE:
+		fib_count->fwcnt++;
+		break;
+	case AAC_OWNER_ERROR_HANDLER:
+		fib_count->ehcnt++;
+		break;
+	case AAC_OWNER_LOWLEVEL:
+		fib_count->llcnt++;
+		break;
+	case AAC_OWNER_MIDLEVEL:
+		fib_count->mlcnt++;
+		break;
+	default:
+		fib_count->krlcnt++;
+		break;
+	}
+	return true;
+}
 
-	unsigned long flags;
-	struct scsi_device *sdev = NULL;
+/* Called during SCSI EH, so we don't need to block requests */
+static int get_num_of_incomplete_fibs(struct aac_dev *aac)
+{
 	struct Scsi_Host *shost = aac->scsi_host_ptr;
-	struct scsi_cmnd *scmnd = NULL;
 	struct device *ctrl_dev;
+	struct fib_count_data fcnt = { };
 
-	int mlcnt  = 0;
-	int llcnt  = 0;
-	int ehcnt  = 0;
-	int fwcnt  = 0;
-	int krlcnt = 0;
-
-	__shost_for_each_device(sdev, shost) {
-		spin_lock_irqsave(&sdev->list_lock, flags);
-		list_for_each_entry(scmnd, &sdev->cmd_list, list) {
-			switch (scmnd->SCp.phase) {
-			case AAC_OWNER_FIRMWARE:
-				fwcnt++;
-				break;
-			case AAC_OWNER_ERROR_HANDLER:
-				ehcnt++;
-				break;
-			case AAC_OWNER_LOWLEVEL:
-				llcnt++;
-				break;
-			case AAC_OWNER_MIDLEVEL:
-				mlcnt++;
-				break;
-			default:
-				krlcnt++;
-				break;
-			}
-		}
-		spin_unlock_irqrestore(&sdev->list_lock, flags);
-	}
+	scsi_host_busy_iter(shost, fib_count_iter, &fcnt);
 
 	ctrl_dev = &aac->pdev->dev;
 
-	dev_info(ctrl_dev, "outstanding cmd: midlevel-%d\n", mlcnt);
-	dev_info(ctrl_dev, "outstanding cmd: lowlevel-%d\n", llcnt);
-	dev_info(ctrl_dev, "outstanding cmd: error handler-%d\n", ehcnt);
-	dev_info(ctrl_dev, "outstanding cmd: firmware-%d\n", fwcnt);
-	dev_info(ctrl_dev, "outstanding cmd: kernel-%d\n", krlcnt);
+	dev_info(ctrl_dev, "outstanding cmd: midlevel-%d\n", fcnt.mlcnt);
+	dev_info(ctrl_dev, "outstanding cmd: lowlevel-%d\n", fcnt.llcnt);
+	dev_info(ctrl_dev, "outstanding cmd: error handler-%d\n", fcnt.ehcnt);
+	dev_info(ctrl_dev, "outstanding cmd: firmware-%d\n", fcnt.fwcnt);
+	dev_info(ctrl_dev, "outstanding cmd: kernel-%d\n", fcnt.krlcnt);
 
-	return mlcnt + llcnt + ehcnt + fwcnt;
+	return fcnt.mlcnt + fcnt.llcnt + fcnt.ehcnt + fcnt.fwcnt;
 }
 
 static int aac_eh_abort(struct scsi_cmnd* cmd)
@@ -1675,7 +1677,6 @@ static int aac_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
 	shost->irq = pdev->irq;
 	shost->unique_id = unique_id;
 	shost->max_cmd_len = 16;
-	shost->use_cmd_list = 1;
 
 	if (aac_cfg_major == AAC_CHARDEV_NEEDS_REINIT)
 		aac_init_char();
-- 
2.16.4


  parent reply	other threads:[~2020-02-13 14:05 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-13 14:04 [PATCHv7 00/13] scsi: remove legacy cmd_list implementation Hannes Reinecke
2020-02-13 14:04 ` [PATCH 01/13] dpt_i2o: rename adpt_i2o_to_scsi() to adpt_i2o_scsi_complete() Hannes Reinecke
2020-02-13 14:04 ` [PATCH 02/13] scsi: add scsi_host_complete_all_commands() helper Hannes Reinecke
2020-02-26 17:39   ` Christoph Hellwig
2020-02-26 22:26     ` Hannes Reinecke
2020-02-26 22:58     ` Hannes Reinecke
2020-02-13 14:04 ` [PATCH 03/13] dpt_i2o: use scsi_host_complete_all_commands() to abort outstanding commands Hannes Reinecke
2020-02-13 14:04 ` [PATCH 04/13] aacraid: Do not wait for outstanding write commands on synchronize_cache Hannes Reinecke
2020-02-26 17:40   ` Christoph Hellwig
2020-02-13 14:04 ` [PATCH 05/13] aacraid: use scsi_host_complete_all_commands() to terminate outstanding commands Hannes Reinecke
2020-02-13 14:04 ` [PATCH 06/13] aacraid: replace aac_flush_ios() with midlayer helper Hannes Reinecke
2020-02-26 17:40   ` Christoph Hellwig
2020-02-13 14:04 ` [PATCH 07/13] aacraid: move scsi_(block,unblock)_requests out of _aac_reset_adapter() Hannes Reinecke
2020-02-26 17:42   ` Christoph Hellwig
2020-02-13 14:04 ` [PATCH 08/13] scsi: add scsi_host_(block,unblock) helper function Hannes Reinecke
2020-02-20  4:53   ` Bart Van Assche
2020-02-26 17:42   ` Christoph Hellwig
2020-02-13 14:04 ` [PATCH 09/13] aacraid: use scsi_host_(block,unblock) to block I/O Hannes Reinecke
2020-02-26 17:43   ` Christoph Hellwig
2020-02-13 14:04 ` [PATCH 10/13] scsi: add scsi_host_busy_iter() Hannes Reinecke
2020-02-26 17:45   ` Christoph Hellwig
2020-02-26 22:28     ` Hannes Reinecke
2020-02-13 14:04 ` [PATCH 11/13] aacraid: use scsi_host_busy_iter() to wait for outstanding commands Hannes Reinecke
2020-02-26 17:46   ` Christoph Hellwig
2020-02-13 14:04 ` Hannes Reinecke [this message]
2020-02-26 17:46   ` [PATCH 12/13] aacraid: use scsi_host_busy_iter() in get_num_of_incomplete_fibs() Christoph Hellwig
2020-02-13 14:04 ` [PATCH 13/13] scsi: Remove cmd_list functionality Hannes Reinecke
2020-02-26 17:47   ` Christoph Hellwig
  -- strict thread matches above, loose matches on Subject: below --
2020-02-28  7:53 [PATCHv8 00/13] scsi: remove legacy cmd_list implementation Hannes Reinecke
2020-02-28  7:53 ` [PATCH 12/13] aacraid: use scsi_host_busy_iter() in get_num_of_incomplete_fibs() Hannes Reinecke
2019-12-04 14:59 [PATCHv6 00/13] scsi: remove legacy cmd_list implementation Hannes Reinecke
2019-12-04 14:59 ` [PATCH 12/13] aacraid: use scsi_host_busy_iter() in get_num_of_incomplete_fibs() Hannes Reinecke
2019-12-10  5:02   ` Balsundar.P

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=20200213140422.128382-13-hare@suse.de \
    --to=hare@suse.de \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.