Skip to content

Commit

Permalink
scsi: aacraid: use scsi_host_busy_iter() to wait for outstanding comm…
Browse files Browse the repository at this point in the history
…ands

Instead of traversing the list of possible commands by hands we should be
using scsi_host_busy_iter() to figure out if there are outstanding
commands.

Link: https://lore.kernel.org/r/20200228075318.91255-12-hare@suse.de
Reviewed-by: Christoph Hellwig <hch@lst.de>
Acked-by: Balsundar P < Balsundar.P@microchip.com>
Signed-off-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
  • Loading branch information
Hannes Reinecke authored and Martin K. Petersen committed Feb 29, 2020
1 parent dcece99 commit f4a0c9d
Showing 1 changed file with 17 additions and 18 deletions.
35 changes: 17 additions & 18 deletions drivers/scsi/aacraid/comminit.c
Original file line number Diff line number Diff line change
Expand Up @@ -272,36 +272,35 @@ static void aac_queue_init(struct aac_dev * dev, struct aac_queue * q, u32 *mem,
q->entries = qsize;
}

static bool wait_for_io_iter(struct scsi_cmnd *cmd, void *data, bool rsvd)
{
int *active = data;

if (cmd->SCp.phase == AAC_OWNER_FIRMWARE)
*active = *active + 1;
return true;
}
static void aac_wait_for_io_completion(struct aac_dev *aac)
{
unsigned long flagv = 0;
int i = 0;
int i = 0, active;

for (i = 60; i; --i) {
struct scsi_device *dev;
struct scsi_cmnd *command;
int active = 0;

__shost_for_each_device(dev, aac->scsi_host_ptr) {
spin_lock_irqsave(&dev->list_lock, flagv);
list_for_each_entry(command, &dev->cmd_list, list) {
if (command->SCp.phase == AAC_OWNER_FIRMWARE) {
active++;
break;
}
}
spin_unlock_irqrestore(&dev->list_lock, flagv);
if (active)
break;

}
active = 0;
scsi_host_busy_iter(aac->scsi_host_ptr,
wait_for_io_iter, &active);
/*
* We can exit If all the commands are complete
*/
if (active == 0)
break;
dev_info(&aac->pdev->dev,
"Wait for %d commands to complete\n", active);
ssleep(1);
}
if (active)
dev_err(&aac->pdev->dev,
"%d outstanding commands during shutdown\n", active);
}

/**
Expand Down

0 comments on commit f4a0c9d

Please sign in to comment.