scsi: myrb: Call scsi_done() directly
authorBart Van Assche <bvanassche@acm.org>
Thu, 7 Oct 2021 20:28:49 +0000 (13:28 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Sun, 17 Oct 2021 01:29:16 +0000 (21:29 -0400)
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>
drivers/scsi/myrb.c

index a4a8832..e8a7bcc 100644 (file)
@@ -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)