scsi: core: Remove the 'done' argument from SCSI queuecommand_lck functions
authorBart Van Assche <bvanassche@acm.org>
Thu, 7 Oct 2021 20:46:14 +0000 (13:46 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Sun, 17 Oct 2021 01:32:16 +0000 (21:32 -0400)
The DEF_SCSI_QCMD() macro passes the addresses of the SCSI host lock and
also that of the scsi_done function to the queuecommand_lck() function
implementations. Remove the 'scsi_done' argument since its address is
now a constant and instead call 'scsi_done' directly from inside the
queuecommand_lck() functions.

Link: https://lore.kernel.org/r/20211007204618.2196847-14-bvanassche@acm.org
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
49 files changed:
drivers/scsi/3w-9xxx.c
drivers/scsi/3w-sas.c
drivers/scsi/3w-xxxx.c
drivers/scsi/53c700.c
drivers/scsi/BusLogic.c
drivers/scsi/a100u2w.c
drivers/scsi/advansys.c
drivers/scsi/aha152x.c
drivers/scsi/aha1740.c
drivers/scsi/aic7xxx/aic79xx_osm.c
drivers/scsi/aic7xxx/aic7xxx_osm.c
drivers/scsi/arcmsr/arcmsr_hba.c
drivers/scsi/arm/acornscsi.c
drivers/scsi/arm/fas216.c
drivers/scsi/atp870u.c
drivers/scsi/bfa/bfad_im.c
drivers/scsi/dc395x.c
drivers/scsi/dpt_i2o.c
drivers/scsi/esp_scsi.c
drivers/scsi/fnic/fnic_scsi.c
drivers/scsi/hptiop.c
drivers/scsi/ibmvscsi/ibmvscsi.c
drivers/scsi/imm.c
drivers/scsi/initio.c
drivers/scsi/ips.c
drivers/scsi/mac53c94.c
drivers/scsi/megaraid.c
drivers/scsi/megaraid/megaraid_mbox.c
drivers/scsi/mesh.c
drivers/scsi/ncr53c8xx.c
drivers/scsi/nsp32.c
drivers/scsi/pcmcia/nsp_cs.c
drivers/scsi/pcmcia/sym53c500_cs.c
drivers/scsi/pmcraid.c
drivers/scsi/ppa.c
drivers/scsi/ps3rom.c
drivers/scsi/qla1280.c
drivers/scsi/qlogicfas408.c
drivers/scsi/qlogicpti.c
drivers/scsi/stex.c
drivers/scsi/sym53c8xx_2/sym_glue.c
drivers/scsi/vmw_pvscsi.c
drivers/scsi/wd33c93.c
drivers/staging/rts5208/rtsx.c
drivers/staging/unisys/visorhba/visorhba_main.c
drivers/usb/image/microtek.c
drivers/usb/storage/scsiglue.c
drivers/usb/storage/uas.c
include/scsi/scsi_host.h

index 4ebc2c79f45f8507552206f4aa738b7fad2e68de..778d4892ed7dc640e4890d9831a1e60b80e2e3d0 100644 (file)
@@ -1744,8 +1744,9 @@ out:
 } /* End twa_scsi_eh_reset() */
 
 /* This is the main scsi queue function to handle scsi opcodes */
-static int twa_scsi_queue_lck(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
+static int twa_scsi_queue_lck(struct scsi_cmnd *SCpnt)
 {
+       void (*done)(struct scsi_cmnd *) = scsi_done;
        int request_id, retval;
        TW_Device_Extension *tw_dev = (TW_Device_Extension *)SCpnt->device->host->hostdata;
 
index e6f51904f5b1e4bb66e2a41bca52cfe875bb216f..fc9a2f27aaf9e7665453970f085639cd4bc50cb2 100644 (file)
@@ -1450,8 +1450,9 @@ out:
 } /* End twl_scsi_eh_reset() */
 
 /* This is the main scsi queue function to handle scsi opcodes */
-static int twl_scsi_queue_lck(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
+static int twl_scsi_queue_lck(struct scsi_cmnd *SCpnt)
 {
+       void (*done)(struct scsi_cmnd *) = scsi_done;
        int request_id, retval;
        TW_Device_Extension *tw_dev = (TW_Device_Extension *)SCpnt->device->host->hostdata;
 
index bdd3ab8875e2bbd0b454df88879a213d7bcf3b6a..498a5ab7a321b708e4950f9c1d8630513c6b5660 100644 (file)
@@ -1918,8 +1918,9 @@ static int tw_scsiop_test_unit_ready_complete(TW_Device_Extension *tw_dev, int r
 } /* End tw_scsiop_test_unit_ready_complete() */
 
 /* This is the main scsi queue function to handle scsi opcodes */
-static int tw_scsi_queue_lck(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
+static int tw_scsi_queue_lck(struct scsi_cmnd *SCpnt)
 {
+       void (*done)(struct scsi_cmnd *) = scsi_done;
        unsigned char *command = SCpnt->cmnd;
        int request_id = 0;
        int retval = 1;
index e7ed2fd6cdec8b4ecd64b62ff097723a046c757d..f1cbac77959e357f2fa78b74e78a0f8a5977bd84 100644 (file)
@@ -1751,8 +1751,7 @@ NCR_700_intr(int irq, void *dev_id)
        return IRQ_RETVAL(handled);
 }
 
-static int
-NCR_700_queuecommand_lck(struct scsi_cmnd *SCp, void (*done)(struct scsi_cmnd *))
+static int NCR_700_queuecommand_lck(struct scsi_cmnd *SCp)
 {
        struct NCR_700_Host_Parameters *hostdata = 
                (struct NCR_700_Host_Parameters *)SCp->device->host->hostdata[0];
index 7287a9081684f66b6037191acd9d4dfd00446e5b..a897c8f914cf331f4efe72273d355ebb3803c6d0 100644 (file)
@@ -2866,9 +2866,9 @@ static int blogic_hostreset(struct scsi_cmnd *SCpnt)
   Outgoing Mailbox for execution by the associated Host Adapter.
 */
 
-static int blogic_qcmd_lck(struct scsi_cmnd *command,
-               void (*comp_cb) (struct scsi_cmnd *))
+static int blogic_qcmd_lck(struct scsi_cmnd *command)
 {
+       void (*comp_cb)(struct scsi_cmnd *) = scsi_done;
        struct blogic_adapter *adapter =
                (struct blogic_adapter *) command->device->host->hostdata;
        struct blogic_tgt_flags *tgt_flags =
index 68343bcb4616af4ab5c26d2eea0a2c66401827f6..564ade03b530220f5e2e50aae38bdb42a820210f 100644 (file)
@@ -911,7 +911,7 @@ static int inia100_build_scb(struct orc_host * host, struct orc_scb * scb, struc
  *     queue the command down to the controller
  */
 
-static int inia100_queue_lck(struct scsi_cmnd * cmd, void (*done) (struct scsi_cmnd *))
+static int inia100_queue_lck(struct scsi_cmnd *cmd)
 {
        struct orc_scb *scb;
        struct orc_host *host;          /* Point to Host adapter control block */
index f2f14fbd50697e2d57413bfec622af4733e108d4..ace5eff828e96acba509994790974531cb87e2f1 100644 (file)
@@ -8453,8 +8453,7 @@ static int asc_execute_scsi_cmnd(struct scsi_cmnd *scp)
  * This function always returns 0. Command return status is saved
  * in the 'scp' result field.
  */
-static int
-advansys_queuecommand_lck(struct scsi_cmnd *scp, void (*done)(struct scsi_cmnd *))
+static int advansys_queuecommand_lck(struct scsi_cmnd *scp)
 {
        struct Scsi_Host *shost = scp->device->host;
        int asc_res, result = 0;
index f07de99127903d16c8165bbcc30ba1a510b7f848..d17880b57d17b57827eaa0332bdffc12a1c30505 100644 (file)
@@ -975,10 +975,8 @@ static int aha152x_internal_queue(struct scsi_cmnd *SCpnt,
  *  queue a command
  *
  */
-static int aha152x_queue_lck(struct scsi_cmnd *SCpnt,
-                            void (*done)(struct scsi_cmnd *))
+static int aha152x_queue_lck(struct scsi_cmnd *SCpnt)
 {
-       WARN_ON_ONCE(done != scsi_done);
        return aha152x_internal_queue(SCpnt, NULL, 0);
 }
 
index 39d8759fe558d8febbea9aa44aeefd3853214c9c..18eb4cfcef9a5005394b5b888e11d1f79ec47fc4 100644 (file)
@@ -315,9 +315,9 @@ static irqreturn_t aha1740_intr_handle(int irq, void *dev_id)
        return IRQ_RETVAL(handled);
 }
 
-static int aha1740_queuecommand_lck(struct scsi_cmnd * SCpnt,
-                                   void (*done)(struct scsi_cmnd *))
+static int aha1740_queuecommand_lck(struct scsi_cmnd *SCpnt)
 {
+       void (*done)(struct scsi_cmnd *) = scsi_done;
        unchar direction;
        unchar *cmd = (unchar *) SCpnt->cmnd;
        unchar target = scmd_id(SCpnt);
index af49c32cfaf7cbb4fc07ed46e89cc28314909bcb..5d566d2b2997c88fba1bcef01599aac2f0678514 100644 (file)
@@ -572,8 +572,7 @@ ahd_linux_info(struct Scsi_Host *host)
 /*
  * Queue an SCB to the controller.
  */
-static int
-ahd_linux_queue_lck(struct scsi_cmnd * cmd, void (*scsi_done) (struct scsi_cmnd *))
+static int ahd_linux_queue_lck(struct scsi_cmnd *cmd)
 {
        struct   ahd_softc *ahd;
        struct   ahd_linux_device *dev = scsi_transport_device_data(cmd->device);
index f2daca41f3f2157bbb0dcb5ad421bb3cd92b063f..d3b1082654d575df9e1ad6f54b520b4ff9bef790 100644 (file)
@@ -518,8 +518,7 @@ ahc_linux_info(struct Scsi_Host *host)
 /*
  * Queue an SCB to the controller.
  */
-static int
-ahc_linux_queue_lck(struct scsi_cmnd * cmd, void (*scsi_done) (struct scsi_cmnd *))
+static int ahc_linux_queue_lck(struct scsi_cmnd *cmd)
 {
        struct   ahc_softc *ahc;
        struct   ahc_linux_device *dev = scsi_transport_device_data(cmd->device);
index e2692ca87a6e7f1a01763b7517e43b3b58cfc2d5..daa8cf61f6d6354469471d549df9eb417e4760d1 100644 (file)
@@ -3231,8 +3231,7 @@ static void arcmsr_handle_virtual_command(struct AdapterControlBlock *acb,
        }
 }
 
-static int arcmsr_queue_command_lck(struct scsi_cmnd *cmd,
-       void (* done)(struct scsi_cmnd *))
+static int arcmsr_queue_command_lck(struct scsi_cmnd *cmd)
 {
        struct Scsi_Host *host = cmd->device->host;
        struct AdapterControlBlock *acb = (struct AdapterControlBlock *) host->hostdata;
index dadaf5ee0ea99479b60d71a47f48e55d10950e41..81eb3bbdfc51cdda4f70624948c3c3736df36f42 100644 (file)
@@ -2397,24 +2397,16 @@ acornscsi_intr(int irq, void *dev_id)
  */
 
 /*
- * Function : acornscsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *))
+ * Function : acornscsi_queuecmd(struct scsi_cmnd *cmd)
  * Purpose  : queues a SCSI command
  * Params   : cmd  - SCSI command
- *           done - function called on completion, with pointer to command descriptor
  * Returns  : 0, or < 0 on error.
  */
-static int acornscsi_queuecmd_lck(struct scsi_cmnd *SCpnt,
-                      void (*done)(struct scsi_cmnd *))
+static int acornscsi_queuecmd_lck(struct scsi_cmnd *SCpnt)
 {
+    void (*done)(struct scsi_cmnd *) = scsi_done;
     AS_Host *host = (AS_Host *)SCpnt->device->host->hostdata;
 
-    if (!done) {
-       /* there should be some way of rejecting errors like this without panicing... */
-       panic("scsi%d: queuecommand called with NULL done function [cmd=%p]",
-               host->host->host_no, SCpnt);
-       return -EINVAL;
-    }
-
 #if (DEBUG & DEBUG_NO_WRITE)
     if (acornscsi_cmdtype(SCpnt->cmnd[0]) == CMD_WRITE && (NO_WRITE & (1 << SCpnt->device->id))) {
        printk(KERN_CRIT "scsi%d.%c: WRITE attempted with NO_WRITE flag set\n",
index a8befd2eec528b3cb5bda448729bb0aa61ec0458..7019b91f0ce635afacbfdfd94de19fdc63624d67 100644 (file)
@@ -2233,10 +2233,9 @@ static int fas216_queue_command_internal(struct scsi_cmnd *SCpnt,
        return result;
 }
 
-static int fas216_queue_command_lck(struct scsi_cmnd *SCpnt,
-                                   void (*done)(struct scsi_cmnd *))
+static int fas216_queue_command_lck(struct scsi_cmnd *SCpnt)
 {
-       return fas216_queue_command_internal(SCpnt, done);
+       return fas216_queue_command_internal(SCpnt, scsi_done);
 }
 
 DEF_SCSI_QCMD(fas216_queue_command)
@@ -2264,8 +2263,7 @@ static void fas216_internal_done(struct scsi_cmnd *SCpnt)
  * Returns: scsi result code.
  * Notes: io_request_lock is held, interrupts are disabled.
  */
-static int fas216_noqueue_command_lck(struct scsi_cmnd *SCpnt,
-                          void (*done)(struct scsi_cmnd *))
+static int fas216_noqueue_command_lck(struct scsi_cmnd *SCpnt)
 {
        FAS216_Info *info = (FAS216_Info *)SCpnt->device->host->hostdata;
 
@@ -2306,7 +2304,7 @@ static int fas216_noqueue_command_lck(struct scsi_cmnd *SCpnt,
 
        spin_lock_irq(info->host->host_lock);
 
-       done(SCpnt);
+       scsi_done(SCpnt);
 
        return 0;
 }
index 6e1595b32bc01bfe6b4791c5d8a73f65f7bc8894..dcd6fae65a885071ffcbe0618f3841845b2fe992 100644 (file)
@@ -618,9 +618,9 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)
  *
  *     Queue a command to the ATP queue. Called with the host lock held.
  */
-static int atp870u_queuecommand_lck(struct scsi_cmnd *req_p,
-                        void (*done) (struct scsi_cmnd *))
+static int atp870u_queuecommand_lck(struct scsi_cmnd *req_p)
 {
+       void (*done)(struct scsi_cmnd *) = scsi_done;
        unsigned char c;
        unsigned int m;
        struct atp_unit *dev;
index e12ae60efd33c57f72a361354554a5debf26b3fd..79d8f2af12944222906a71b48d2396cb7e943086 100644 (file)
@@ -1199,9 +1199,9 @@ bfad_im_itnim_work_handler(struct work_struct *work)
 /*
  * Scsi_Host template entry, queue a SCSI command to the BFAD.
  */
-static int
-bfad_im_queuecommand_lck(struct scsi_cmnd *cmnd, void (*done) (struct scsi_cmnd *))
+static int bfad_im_queuecommand_lck(struct scsi_cmnd *cmnd)
 {
+       void (*done)(struct scsi_cmnd *) = scsi_done;
        struct bfad_im_port_s *im_port =
                (struct bfad_im_port_s *) cmnd->device->host->hostdata[0];
        struct bfad_s         *bfad = im_port->bfad;
index 5adbc7f61c19718848664b57143b20448f7063ee..9b8796c9e6345f35ee8a9788e2d80baff7f122c7 100644 (file)
@@ -960,8 +960,9 @@ static void build_srb(struct scsi_cmnd *cmd, struct DeviceCtlBlk *dcb,
  *        and is expected to be held on return.
  *
  **/
-static int dc395x_queue_command_lck(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *))
+static int dc395x_queue_command_lck(struct scsi_cmnd *cmd)
 {
+       void (*done)(struct scsi_cmnd *) = scsi_done;
        struct DeviceCtlBlk *dcb;
        struct ScsiReqBlk *srb;
        struct AdapterCtlBlk *acb =
index 1f00afcfe4400a102088b05535b85f232f8b7d1a..93227c04ef59c2988784295cdf853f08720bc52f 100644 (file)
@@ -416,7 +416,7 @@ static int adpt_slave_configure(struct scsi_device * device)
        return 0;
 }
 
-static int adpt_queue_lck(struct scsi_cmnd * cmd, void (*done) (struct scsi_cmnd *))
+static int adpt_queue_lck(struct scsi_cmnd *cmd)
 {
        adpt_hba* pHba = NULL;
        struct adpt_device* pDev = NULL;        /* dpt per device information */
index f7c2d64f1cef9b4d4364c92a688583ac0a0bb181..57787537285a33a0c99823362f47e022d974e391 100644 (file)
@@ -952,7 +952,7 @@ static void esp_event_queue_full(struct esp *esp, struct esp_cmd_entry *ent)
        scsi_track_queue_full(dev, lp->num_tagged - 1);
 }
 
-static int esp_queuecommand_lck(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *))
+static int esp_queuecommand_lck(struct scsi_cmnd *cmd)
 {
        struct scsi_device *dev = cmd->device;
        struct esp *esp = shost_priv(dev->host);
index 09b8bf5adaf528d5cf488b6b53e81bd5b92e652c..88c549f257dbf7e74df28251c32f658ff0c6454a 100644 (file)
@@ -420,8 +420,9 @@ static inline int fnic_queue_wq_copy_desc(struct fnic *fnic,
  * Routine to send a scsi cdb
  * Called with host_lock held and interrupts disabled.
  */
-static int fnic_queuecommand_lck(struct scsi_cmnd *sc, void (*done)(struct scsi_cmnd *))
+static int fnic_queuecommand_lck(struct scsi_cmnd *sc)
 {
+       void (*done)(struct scsi_cmnd *) = scsi_done;
        const int tag = scsi_cmd_to_rq(sc)->tag;
        struct fc_lport *lp = shost_priv(sc->device->host);
        struct fc_rport *rport;
index f18f6a677c1bbeedcdd7f32e29254c2b9dbe45af..f9a9def394ccf748991a29d3b6d9d9c53213aaff 100644 (file)
@@ -993,8 +993,7 @@ static int hptiop_reset_comm_mvfrey(struct hptiop_hba *hba)
        return 0;
 }
 
-static int hptiop_queuecommand_lck(struct scsi_cmnd *scp,
-                               void (*done)(struct scsi_cmnd *))
+static int hptiop_queuecommand_lck(struct scsi_cmnd *scp)
 {
        struct Scsi_Host *host = scp->device->host;
        struct hptiop_hba *hba = (struct hptiop_hba *)host->hostdata;
index 50df7dd9cb9185aafb161886db0ec02a485aaba0..5cc37859b8742d0840c3293ee26863f03f5a76eb 100644 (file)
@@ -1039,9 +1039,9 @@ static inline u16 lun_from_dev(struct scsi_device *dev)
  * @cmnd:      struct scsi_cmnd to be executed
  * @done:      Callback function to be called when cmd is completed
 */
-static int ibmvscsi_queuecommand_lck(struct scsi_cmnd *cmnd,
-                                void (*done) (struct scsi_cmnd *))
+static int ibmvscsi_queuecommand_lck(struct scsi_cmnd *cmnd)
 {
+       void (*done)(struct scsi_cmnd *) = scsi_done;
        struct srp_cmd *srp_cmd;
        struct srp_event_struct *evt_struct;
        struct srp_indirect_buf *indirect;
index be8edcff01775ccf1c5ce07e7d5f40b956c23e48..8afdb4dba2be0df690cf3b0381c8df7d4061e73c 100644 (file)
@@ -910,8 +910,7 @@ static int imm_engine(imm_struct *dev, struct scsi_cmnd *cmd)
        return 0;
 }
 
-static int imm_queuecommand_lck(struct scsi_cmnd *cmd,
-               void (*done)(struct scsi_cmnd *))
+static int imm_queuecommand_lck(struct scsi_cmnd *cmd)
 {
        imm_struct *dev = imm_dev(cmd->device->host);
 
index 183f95758636c507e6301bd9e1f2c746dbee9f6d..fd6da96bc51ab6f7955eac7a4f6b288c965a2fca 100644 (file)
@@ -2609,8 +2609,7 @@ static void initio_build_scb(struct initio_host * host, struct scsi_ctrl_blk * c
  *     will cause the mid layer to call us again later with the command)
  */
 
-static int i91u_queuecommand_lck(struct scsi_cmnd *cmd,
-               void (*done)(struct scsi_cmnd *))
+static int i91u_queuecommand_lck(struct scsi_cmnd *cmd)
 {
        struct initio_host *host = (struct initio_host *) cmd->device->host->hostdata;
        struct scsi_ctrl_blk *cmnd;
index 0c93ec359e9bec7e97a45b1d392801950e7550f5..498bf04499ce72039f84ff11ac7012a365478bf4 100644 (file)
@@ -1035,8 +1035,9 @@ static int ips_eh_reset(struct scsi_cmnd *SC)
 /*    Linux obtains io_request_lock before calling this function            */
 /*                                                                          */
 /****************************************************************************/
-static int ips_queue_lck(struct scsi_cmnd *SC, void (*done) (struct scsi_cmnd *))
+static int ips_queue_lck(struct scsi_cmnd *SC)
 {
+       void (*done)(struct scsi_cmnd *) = scsi_done;
        ips_ha_t *ha;
        ips_passthru_t *pt;
 
index 9731855805f502fbf4f88c41f117bcb857e71936..3976a18f6333bcaa116f3b195a5c05af2ce7629b 100644 (file)
@@ -66,8 +66,7 @@ static irqreturn_t do_mac53c94_interrupt(int, void *);
 static void cmd_done(struct fsc_state *, int result);
 static void set_dma_cmds(struct fsc_state *, struct scsi_cmnd *);
 
-
-static int mac53c94_queue_lck(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *))
+static int mac53c94_queue_lck(struct scsi_cmnd *cmd)
 {
        struct fsc_state *state;
 
index c4ea833586e038fd0f022dfc019c11d68f6055d8..0d31d7a5e3352fc8e0135cc097dab7a910bfb1ed 100644 (file)
@@ -370,8 +370,7 @@ mega_runpendq(adapter_t *adapter)
  *
  * The command queuing entry point for the mid-layer.
  */
-static int
-megaraid_queue_lck(struct scsi_cmnd *scmd, void (*done)(struct scsi_cmnd *))
+static int megaraid_queue_lck(struct scsi_cmnd *scmd)
 {
        adapter_t       *adapter;
        scb_t   *scb;
index 705c5027ba9127edc207ef0e49b487476ddaa736..0f47a9862ef98625d12b82ab9c3094b286c006eb 100644 (file)
@@ -1432,9 +1432,9 @@ mbox_post_cmd(adapter_t *adapter, scb_t *scb)
  *
  * Queue entry point for mailbox based controllers.
  */
-static int
-megaraid_queue_command_lck(struct scsi_cmnd *scp, void (*done)(struct scsi_cmnd *))
+static int megaraid_queue_command_lck(struct scsi_cmnd *scp)
 {
+       void (*done)(struct scsi_cmnd *) = scsi_done;
        adapter_t       *adapter;
        scb_t           *scb;
        int             if_busy;
index 73a3e85802ad9669d2c2a26fa38e5f324a7b2e87..ca133e0a140ae0b05787191a206ca15090b4194f 100644 (file)
@@ -1621,7 +1621,7 @@ static void cmd_complete(struct mesh_state *ms)
  * Called by midlayer with host locked to queue a new
  * request
  */
-static int mesh_queue_lck(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *))
+static int mesh_queue_lck(struct scsi_cmnd *cmd)
 {
        struct mesh_state *ms;
 
index 6ad43a98409ceb4ea78c8cd49f5262896af1066a..168b854ccf147fbb071d99368c3922bcff1650d1 100644 (file)
@@ -7852,8 +7852,9 @@ static int ncr53c8xx_slave_configure(struct scsi_device *device)
        return 0;
 }
 
-static int ncr53c8xx_queue_command_lck (struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *))
+static int ncr53c8xx_queue_command_lck(struct scsi_cmnd *cmd)
 {
+     void (*done)(struct scsi_cmnd *) = scsi_done;
      struct ncb *np = ((struct host_data *) cmd->device->host->hostdata)->ncb;
      unsigned long flags;
      int sts;
index 1057b6fd756978ff842fe4058e64be74d5174f20..bd3ee3bf08ee0ee9ae7d39acee07f8492e3c8ff6 100644 (file)
@@ -904,9 +904,9 @@ static int nsp32_setup_sg_table(struct scsi_cmnd *SCpnt)
        return TRUE;
 }
 
-static int nsp32_queuecommand_lck(struct scsi_cmnd *SCpnt,
-                                 void (*done)(struct scsi_cmnd *))
+static int nsp32_queuecommand_lck(struct scsi_cmnd *SCpnt)
 {
+       void (*done)(struct scsi_cmnd *) = scsi_done;
        nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata;
        nsp32_target *target;
        nsp32_lunt   *cur_lunt;
index 0271d534133ada7e65ac9cc3514afcf8205bd7bf..8b9e889bc3067e2fbacfc78f201db70efe17c1fd 100644 (file)
@@ -181,8 +181,7 @@ static void nsp_scsi_done(struct scsi_cmnd *SCpnt)
        scsi_done(SCpnt);
 }
 
-static int nsp_queuecommand_lck(struct scsi_cmnd *SCpnt,
-                           void (*done)(struct scsi_cmnd *))
+static int nsp_queuecommand_lck(struct scsi_cmnd *SCpnt)
 {
 #ifdef NSP_DEBUG
        /*unsigned int host_id = SCpnt->device->host->this_id;*/
index d2adda815d7b94a917e6f9341a4f755842295d46..d5c30ac662baaa455ea9dacfaa585254e037afce 100644 (file)
@@ -537,8 +537,7 @@ SYM53C500_info(struct Scsi_Host *SChost)
        return (info_msg);
 }
 
-static int 
-SYM53C500_queue_lck(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
+static int SYM53C500_queue_lck(struct scsi_cmnd *SCpnt)
 {
        int i;
        int port_base = SCpnt->device->host->io_port;
index 11f36fd4e62fc61023eaaeaa7878c01d224acd3f..18efb3e64c84e445a3b0e3e3d53f2445c96a57b3 100644 (file)
@@ -3313,10 +3313,7 @@ static int pmcraid_copy_sglist(
  *       SCSI_MLQUEUE_DEVICE_BUSY if device is busy
  *       SCSI_MLQUEUE_HOST_BUSY if host is busy
  */
-static int pmcraid_queuecommand_lck(
-       struct scsi_cmnd *scsi_cmd,
-       void (*done) (struct scsi_cmnd *)
-)
+static int pmcraid_queuecommand_lck(struct scsi_cmnd *scsi_cmd)
 {
        struct pmcraid_instance *pinstance;
        struct pmcraid_resource_entry *res;
index 799ad8562e2486608edee3b0c0a335deeb36cbec..003043de23a553b8b49c59240e3bf2b08908249d 100644 (file)
@@ -786,8 +786,7 @@ static int ppa_engine(ppa_struct *dev, struct scsi_cmnd *cmd)
        return 0;
 }
 
-static int ppa_queuecommand_lck(struct scsi_cmnd *cmd,
-               void (*done) (struct scsi_cmnd *))
+static int ppa_queuecommand_lck(struct scsi_cmnd *cmd)
 {
        ppa_struct *dev = ppa_dev(cmd->device->host);
 
index 08e970300b3f0efaa49bf4c1c487183d27f25478..2b80cab703337229279573b1dccca61c945dd9b4 100644 (file)
@@ -200,8 +200,7 @@ static int ps3rom_write_request(struct ps3_storage_device *dev,
        return 0;
 }
 
-static int ps3rom_queuecommand_lck(struct scsi_cmnd *cmd,
-                              void (*done)(struct scsi_cmnd *))
+static int ps3rom_queuecommand_lck(struct scsi_cmnd *cmd)
 {
        struct ps3rom_private *priv = shost_priv(cmd->device->host);
        struct ps3_storage_device *dev = priv->dev;
index c508a6e2051963fc4d9801e340a453724ad13367..1dc56f4c89d83d8598cad03b146c100420190f73 100644 (file)
@@ -689,8 +689,7 @@ qla1280_info(struct Scsi_Host *host)
  * handling).   Unfortunately, it sometimes calls the scheduler in interrupt
  * context which is a big NO! NO!.
  **************************************************************************/
-static int
-qla1280_queuecommand_lck(struct scsi_cmnd *cmd, void (*fn)(struct scsi_cmnd *))
+static int qla1280_queuecommand_lck(struct scsi_cmnd *cmd)
 {
        struct Scsi_Host *host = cmd->device->host;
        struct scsi_qla_host *ha = (struct scsi_qla_host *)host->hostdata;
index 5471c046a4b7c54453448653c395f6bee959a28b..30a88849a626bb531997d938a68401a576e418ce 100644 (file)
@@ -460,9 +460,9 @@ irqreturn_t qlogicfas408_ihandl(int irq, void *dev_id)
  *     Queued command
  */
 
-static int qlogicfas408_queuecommand_lck(struct scsi_cmnd *cmd,
-                             void (*done) (struct scsi_cmnd *))
+static int qlogicfas408_queuecommand_lck(struct scsi_cmnd *cmd)
 {
+       void (*done)(struct scsi_cmnd *) = scsi_done;
        struct qlogicfas408_priv *priv = get_priv_by_cmd(cmd);
 
        set_host_byte(cmd, DID_OK);
index 30b5e98b5de0e53d206faac615eb9f07f24ac1c8..57f2f4135a060557d34486d1e0fba2b21c1284ec 100644 (file)
@@ -1013,8 +1013,9 @@ static int qlogicpti_slave_configure(struct scsi_device *sdev)
  *
  * "This code must fly." -davem
  */
-static int qlogicpti_queuecommand_lck(struct scsi_cmnd *Cmnd, void (*done)(struct scsi_cmnd *))
+static int qlogicpti_queuecommand_lck(struct scsi_cmnd *Cmnd)
 {
+       void (*done)(struct scsi_cmnd *) = scsi_done;
        struct Scsi_Host *host = Cmnd->device->host;
        struct qlogicpti *qpti = (struct qlogicpti *) host->hostdata;
        struct Command_Entry *cmd;
index 2f96a2fdaa405b2118b49cb9fa2c21c8fb1c2bf3..e6420f2127ce1c4eb9725b8f7711893ccb06ab1f 100644 (file)
@@ -590,9 +590,9 @@ stex_slave_config(struct scsi_device *sdev)
        return 0;
 }
 
-static int
-stex_queuecommand_lck(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *))
+static int stex_queuecommand_lck(struct scsi_cmnd *cmd)
 {
+       void (*done)(struct scsi_cmnd *) = scsi_done;
        struct st_hba *hba;
        struct Scsi_Host *host;
        unsigned int id, lun;
index 76747e180b17b502e6bb2199d1a24faba15dc00d..b04bfde65e3fe3ac3f286afa9e4184fbd472f896 100644 (file)
@@ -486,8 +486,7 @@ void sym_log_bus_error(struct Scsi_Host *shost)
  * queuecommand method.  Entered with the host adapter lock held and
  * interrupts disabled.
  */
-static int sym53c8xx_queue_command_lck(struct scsi_cmnd *cmd,
-                                       void (*done)(struct scsi_cmnd *))
+static int sym53c8xx_queue_command_lck(struct scsi_cmnd *cmd)
 {
        struct sym_hcb *np = SYM_SOFTC_PTR(cmd);
        struct sym_ucmd *ucp = SYM_UCMD_PTR(cmd);
index 7bfa023d0feb5a4342fcd745ef20bb3bd8f9a09d..c2ba65224633c7bbabd3dd2b26dde0395b454330 100644 (file)
@@ -768,7 +768,7 @@ static int pvscsi_queue_ring(struct pvscsi_adapter *adapter,
        return 0;
 }
 
-static int pvscsi_queue_lck(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *))
+static int pvscsi_queue_lck(struct scsi_cmnd *cmd)
 {
        struct Scsi_Host *host = cmd->device->host;
        struct pvscsi_adapter *adapter = shost_priv(host);
index fe28d21c7e93d4ac6586c988da4eb8951c5dc06c..7d2f00f3571a4883b489ff3f4106a81ccd05d97e 100644 (file)
@@ -362,9 +362,7 @@ calc_sync_msg(unsigned int period, unsigned int offset, unsigned int fast,
        msg[1] = offset;
 }
 
-static int
-wd33c93_queuecommand_lck(struct scsi_cmnd *cmd,
-               void (*done)(struct scsi_cmnd *))
+static int wd33c93_queuecommand_lck(struct scsi_cmnd *cmd)
 {
        struct WD33C93_hostdata *hostdata;
        struct scsi_cmnd *tmp;
index f1136f6bcee2ba118a4064991c10916135dcdf9b..8d6139fce13ed13b589386aa57a05e19601d7290 100644 (file)
@@ -118,9 +118,9 @@ static int slave_configure(struct scsi_device *sdev)
 
 /* queue a command */
 /* This is always called with scsi_lock(host) held */
-static int queuecommand_lck(struct scsi_cmnd *srb,
-                           void (*done)(struct scsi_cmnd *))
+static int queuecommand_lck(struct scsi_cmnd *srb)
 {
+       void (*done)(struct scsi_cmnd *) = scsi_done;
        struct rtsx_dev *dev = host_to_rtsx(srb->device->host);
        struct rtsx_chip *chip = dev->chip;
 
index 6a8fa0587280b5018482ebde090da6f0618a0fad..b40c8cacb813be86af0786388b8df41ce444fb8b 100644 (file)
@@ -446,10 +446,9 @@ static u32 dma_data_dir_linux_to_spar(enum dma_data_direction d)
  * Return: 0 if successfully queued to the Service Partition, otherwise
  *        error code
  */
-static int visorhba_queue_command_lck(struct scsi_cmnd *scsicmd,
-                                     void (*visorhba_cmnd_done)
-                                          (struct scsi_cmnd *))
+static int visorhba_queue_command_lck(struct scsi_cmnd *scsicmd)
 {
+       void (*visorhba_cmnd_done)(struct scsi_cmnd *) = scsi_done;
        struct uiscmdrsp *cmdrsp;
        struct scsi_device *scsidev = scsicmd->device;
        int insert_location;
index 59b02a539963bc1af0e5093adf2dfbeda1938374..b8dc6fa6a5a37d61c1a318ac87908ec11e4eb97d 100644 (file)
@@ -561,10 +561,9 @@ mts_build_transfer_context(struct scsi_cmnd *srb, struct mts_desc* desc)
        desc->context.data_pipe = pipe;
 }
 
-
-static int
-mts_scsi_queuecommand_lck(struct scsi_cmnd *srb, mts_scsi_cmnd_callback callback)
+static int mts_scsi_queuecommand_lck(struct scsi_cmnd *srb)
 {
+       mts_scsi_cmnd_callback callback = scsi_done;
        struct mts_desc* desc = (struct mts_desc*)(srb->device->host->hostdata[0]);
        int res;
 
index 9dfea19e5a91e5de04b0ea11e254578f138d8237..220aa1cf4b3d4dd891826827a00554facbe30d42 100644 (file)
@@ -363,9 +363,9 @@ static int target_alloc(struct scsi_target *starget)
 
 /* queue a command */
 /* This is always called with scsi_lock(host) held */
-static int queuecommand_lck(struct scsi_cmnd *srb,
-                       void (*done)(struct scsi_cmnd *))
+static int queuecommand_lck(struct scsi_cmnd *srb)
 {
+       void (*done)(struct scsi_cmnd *) = scsi_done;
        struct us_data *us = host_to_us(srb->device->host);
 
        /* check for state-transition errors */
index 774d18907f47279f9b19cd6ff0d57a48c7fa3ac9..7f2944729ecd9580f6b2a705e6a5ecb8856d19c6 100644 (file)
@@ -633,8 +633,7 @@ static int uas_submit_urbs(struct scsi_cmnd *cmnd,
        return 0;
 }
 
-static int uas_queuecommand_lck(struct scsi_cmnd *cmnd,
-                                       void (*done)(struct scsi_cmnd *))
+static int uas_queuecommand_lck(struct scsi_cmnd *cmnd)
 {
        struct scsi_device *sdev = cmnd->device;
        struct uas_dev_info *devinfo = sdev->hostdata;
index 04e9b821c0c7b5f2342a60d6240760688dbcaa71..3bb46b188e1cfc9032892ef80c4ba2a6f1354639 100644 (file)
@@ -516,7 +516,7 @@ struct scsi_host_template {
                unsigned long irq_flags;                                \
                int rc;                                                 \
                spin_lock_irqsave(shost->host_lock, irq_flags);         \
-               rc = func_name##_lck(cmd, scsi_done);                   \
+               rc = func_name##_lck(cmd);                              \
                spin_unlock_irqrestore(shost->host_lock, irq_flags);    \
                return rc;                                              \
        }