OSDN Git Service

scsi: core: Change the type of the second argument of scsi_host_complete_all_commands()
authorBart Van Assche <bvanassche@acm.org>
Mon, 24 May 2021 02:54:57 +0000 (19:54 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 3 Jun 2021 03:09:39 +0000 (23:09 -0400)
Allow the compiler to verify the type of the second argument passed to
scsi_host_complete_all_commands().

Link: https://lore.kernel.org/r/20210524025457.11299-4-bvanassche@acm.org
Cc: Hannes Reinecke <hare@suse.com>
Cc: John Garry <john.garry@huawei.com>
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/hosts.c
include/scsi/scsi_host.h

index 624e258..1387a56 100644 (file)
@@ -655,10 +655,11 @@ EXPORT_SYMBOL_GPL(scsi_flush_work);
 static bool complete_all_cmds_iter(struct request *rq, void *data, bool rsvd)
 {
        struct scsi_cmnd *scmd = blk_mq_rq_to_pdu(rq);
-       int status = *(int *)data;
+       enum scsi_host_status status = *(enum scsi_host_status *)data;
 
        scsi_dma_unmap(scmd);
-       scmd->result = status << 16;
+       scmd->result = 0;
+       set_host_byte(scmd, status);
        scmd->scsi_done(scmd);
        return true;
 }
@@ -673,7 +674,8 @@ static bool complete_all_cmds_iter(struct request *rq, void *data, bool rsvd)
  * caller to ensure that concurrent I/O submission and/or
  * completion is stopped when calling this function.
  */
-void scsi_host_complete_all_commands(struct Scsi_Host *shost, int status)
+void scsi_host_complete_all_commands(struct Scsi_Host *shost,
+                                    enum scsi_host_status status)
 {
        blk_mq_tagset_busy_iter(&shost->tag_set, complete_all_cmds_iter,
                                &status);
index d0bf88d..7536370 100644 (file)
@@ -764,7 +764,7 @@ extern void scsi_host_put(struct Scsi_Host *t);
 extern struct Scsi_Host *scsi_host_lookup(unsigned short);
 extern const char *scsi_host_state_name(enum scsi_host_state);
 extern void scsi_host_complete_all_commands(struct Scsi_Host *shost,
-                                           int status);
+                                           enum scsi_host_status status);
 
 static inline int __must_check scsi_add_host(struct Scsi_Host *host,
                                             struct device *dev)