mirror of
https://github.com/torvalds/linux.git
synced 2026-06-03 20:14:06 +02:00
scsi: myrb: Call scsi_done() directly
Conditional statements are faster than indirect calls. Hence call scsi_done() directly. Link: https://lore.kernel.org/r/20211007202923.2174984-55-bvanassche@acm.org Signed-off-by: Bart Van Assche <bvanassche@acm.org> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
ca49599907
commit
0061e3f5e0
|
|
@ -1282,7 +1282,7 @@ static int myrb_pthru_queuecommand(struct Scsi_Host *shost,
|
|||
if (nsge > 1) {
|
||||
dma_pool_free(cb->dcdb_pool, dcdb, dcdb_addr);
|
||||
scmd->result = (DID_ERROR << 16);
|
||||
scmd->scsi_done(scmd);
|
||||
scsi_done(scmd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1436,13 +1436,13 @@ static int myrb_ldev_queuecommand(struct Scsi_Host *shost,
|
|||
dev_dbg(&shost->shost_gendev, "ldev %u in state %x, skip\n",
|
||||
sdev->id, ldev_info ? ldev_info->state : 0xff);
|
||||
scmd->result = (DID_BAD_TARGET << 16);
|
||||
scmd->scsi_done(scmd);
|
||||
scsi_done(scmd);
|
||||
return 0;
|
||||
}
|
||||
switch (scmd->cmnd[0]) {
|
||||
case TEST_UNIT_READY:
|
||||
scmd->result = (DID_OK << 16);
|
||||
scmd->scsi_done(scmd);
|
||||
scsi_done(scmd);
|
||||
return 0;
|
||||
case INQUIRY:
|
||||
if (scmd->cmnd[1] & 1) {
|
||||
|
|
@ -1452,11 +1452,11 @@ static int myrb_ldev_queuecommand(struct Scsi_Host *shost,
|
|||
myrb_inquiry(cb, scmd);
|
||||
scmd->result = (DID_OK << 16);
|
||||
}
|
||||
scmd->scsi_done(scmd);
|
||||
scsi_done(scmd);
|
||||
return 0;
|
||||
case SYNCHRONIZE_CACHE:
|
||||
scmd->result = (DID_OK << 16);
|
||||
scmd->scsi_done(scmd);
|
||||
scsi_done(scmd);
|
||||
return 0;
|
||||
case MODE_SENSE:
|
||||
if ((scmd->cmnd[2] & 0x3F) != 0x3F &&
|
||||
|
|
@ -1467,25 +1467,25 @@ static int myrb_ldev_queuecommand(struct Scsi_Host *shost,
|
|||
myrb_mode_sense(cb, scmd, ldev_info);
|
||||
scmd->result = (DID_OK << 16);
|
||||
}
|
||||
scmd->scsi_done(scmd);
|
||||
scsi_done(scmd);
|
||||
return 0;
|
||||
case READ_CAPACITY:
|
||||
if ((scmd->cmnd[1] & 1) ||
|
||||
(scmd->cmnd[8] & 1)) {
|
||||
/* Illegal request, invalid field in CDB */
|
||||
scsi_build_sense(scmd, 0, ILLEGAL_REQUEST, 0x24, 0);
|
||||
scmd->scsi_done(scmd);
|
||||
scsi_done(scmd);
|
||||
return 0;
|
||||
}
|
||||
lba = get_unaligned_be32(&scmd->cmnd[2]);
|
||||
if (lba) {
|
||||
/* Illegal request, invalid field in CDB */
|
||||
scsi_build_sense(scmd, 0, ILLEGAL_REQUEST, 0x24, 0);
|
||||
scmd->scsi_done(scmd);
|
||||
scsi_done(scmd);
|
||||
return 0;
|
||||
}
|
||||
myrb_read_capacity(cb, scmd, ldev_info);
|
||||
scmd->scsi_done(scmd);
|
||||
scsi_done(scmd);
|
||||
return 0;
|
||||
case REQUEST_SENSE:
|
||||
myrb_request_sense(cb, scmd);
|
||||
|
|
@ -1499,13 +1499,13 @@ static int myrb_ldev_queuecommand(struct Scsi_Host *shost,
|
|||
/* Assume good status */
|
||||
scmd->result = (DID_OK << 16);
|
||||
}
|
||||
scmd->scsi_done(scmd);
|
||||
scsi_done(scmd);
|
||||
return 0;
|
||||
case READ_6:
|
||||
if (ldev_info->state == MYRB_DEVICE_WO) {
|
||||
/* Data protect, attempt to read invalid data */
|
||||
scsi_build_sense(scmd, 0, DATA_PROTECT, 0x21, 0x06);
|
||||
scmd->scsi_done(scmd);
|
||||
scsi_done(scmd);
|
||||
return 0;
|
||||
}
|
||||
fallthrough;
|
||||
|
|
@ -1519,7 +1519,7 @@ static int myrb_ldev_queuecommand(struct Scsi_Host *shost,
|
|||
if (ldev_info->state == MYRB_DEVICE_WO) {
|
||||
/* Data protect, attempt to read invalid data */
|
||||
scsi_build_sense(scmd, 0, DATA_PROTECT, 0x21, 0x06);
|
||||
scmd->scsi_done(scmd);
|
||||
scsi_done(scmd);
|
||||
return 0;
|
||||
}
|
||||
fallthrough;
|
||||
|
|
@ -1533,7 +1533,7 @@ static int myrb_ldev_queuecommand(struct Scsi_Host *shost,
|
|||
if (ldev_info->state == MYRB_DEVICE_WO) {
|
||||
/* Data protect, attempt to read invalid data */
|
||||
scsi_build_sense(scmd, 0, DATA_PROTECT, 0x21, 0x06);
|
||||
scmd->scsi_done(scmd);
|
||||
scsi_done(scmd);
|
||||
return 0;
|
||||
}
|
||||
fallthrough;
|
||||
|
|
@ -1546,7 +1546,7 @@ static int myrb_ldev_queuecommand(struct Scsi_Host *shost,
|
|||
default:
|
||||
/* Illegal request, invalid opcode */
|
||||
scsi_build_sense(scmd, 0, ILLEGAL_REQUEST, 0x20, 0);
|
||||
scmd->scsi_done(scmd);
|
||||
scsi_done(scmd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1610,7 +1610,7 @@ static int myrb_queuecommand(struct Scsi_Host *shost,
|
|||
|
||||
if (sdev->channel > myrb_logical_channel(shost)) {
|
||||
scmd->result = (DID_BAD_TARGET << 16);
|
||||
scmd->scsi_done(scmd);
|
||||
scsi_done(scmd);
|
||||
return 0;
|
||||
}
|
||||
if (sdev->channel == myrb_logical_channel(shost))
|
||||
|
|
@ -2361,7 +2361,7 @@ static void myrb_handle_scsi(struct myrb_hba *cb, struct myrb_cmdblk *cmd_blk,
|
|||
scmd->result = (DID_ERROR << 16);
|
||||
break;
|
||||
}
|
||||
scmd->scsi_done(scmd);
|
||||
scsi_done(scmd);
|
||||
}
|
||||
|
||||
static void myrb_handle_cmdblk(struct myrb_hba *cb, struct myrb_cmdblk *cmd_blk)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user