mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 12:42:02 +00:00
scsi: ips: Use correct command completion on error
A non-zero queuecommand() return code means 'busy', i.e. the command hasn't been submitted. So any command which should be failed need to be completed via the ->scsi_done() callback with the appropriate result code set. Link: https://lore.kernel.org/r/20210113090500.129644-32-hare@suse.de Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Hannes Reinecke <hare@suse.de> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
fc8e006c38
commit
88188179f3
@ -1045,10 +1045,10 @@ static int ips_queue_lck(struct scsi_cmnd *SC, void (*done) (struct scsi_cmnd *)
|
||||
ha = (ips_ha_t *) SC->device->host->hostdata;
|
||||
|
||||
if (!ha)
|
||||
return (1);
|
||||
goto out_error;
|
||||
|
||||
if (!ha->active)
|
||||
return (DID_ERROR);
|
||||
goto out_error;
|
||||
|
||||
if (ips_is_passthru(SC)) {
|
||||
if (ha->copp_waitlist.count == IPS_MAX_IOCTL_QUEUE) {
|
||||
@ -1123,6 +1123,11 @@ static int ips_queue_lck(struct scsi_cmnd *SC, void (*done) (struct scsi_cmnd *)
|
||||
|
||||
ips_next(ha, IPS_INTR_IORL);
|
||||
|
||||
return (0);
|
||||
out_error:
|
||||
SC->result = DID_ERROR << 16;
|
||||
done(SC);
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user