scsi: scsi_debug: Call scsi_done() directly
authorBart Van Assche <bvanassche@acm.org>
Thu, 7 Oct 2021 20:29:04 +0000 (13:29 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Sun, 17 Oct 2021 01:31:41 +0000 (21:31 -0400)
Conditional statements are faster than indirect calls. Hence call
scsi_done() directly.

Link: https://lore.kernel.org/r/20211007202923.2174984-70-bvanassche@acm.org
Acked-by: Douglas Gilbert <dgilbert@interlog.com>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/scsi_debug.c

index 66f507469a31aa0adb3d40a24d113a3862d12573..407f1ce1511812cd7c6d6becee4b4751e434341c 100644 (file)
@@ -4809,7 +4809,7 @@ static void sdebug_q_cmd_complete(struct sdebug_defer *sd_dp)
                        pr_info("bypassing scsi_done() due to aborted cmd\n");
                return;
        }
-       scp->scsi_done(scp); /* callback to mid level */
+       scsi_done(scp); /* callback to mid level */
 }
 
 /* When high resolution timer goes off this function is called. */
@@ -5524,7 +5524,7 @@ static int schedule_resp(struct scsi_cmnd *cmnd, struct sdebug_dev_info *devip,
                                        if (new_sd_dp)
                                                kfree(sd_dp);
                                        /* call scsi_done() from this thread */
-                                       cmnd->scsi_done(cmnd);
+                                       scsi_done(cmnd);
                                        return 0;
                                }
                                /* otherwise reduce kt by elapsed time */
@@ -5604,7 +5604,7 @@ respond_in_thread:        /* call back to mid-layer using invocation thread */
        cmnd->result &= ~SDEG_RES_IMMED_MASK;
        if (cmnd->result == 0 && scsi_result != 0)
                cmnd->result = scsi_result;
-       cmnd->scsi_done(cmnd);
+       scsi_done(cmnd);
        return 0;
 }
 
@@ -7363,7 +7363,7 @@ static int sdebug_blk_mq_poll(struct Scsi_Host *shost, unsigned int queue_num)
                }
                sd_dp->defer_t = SDEB_DEFER_NONE;
                spin_unlock_irqrestore(&sqp->qc_lock, iflags);
-               scp->scsi_done(scp); /* callback to mid level */
+               scsi_done(scp); /* callback to mid level */
                spin_lock_irqsave(&sqp->qc_lock, iflags);
                num_entries++;
        }