OSDN Git Service

scsi: spi: Convert to scsi_execute_cmd()
authorMike Christie <michael.christie@oracle.com>
Thu, 29 Dec 2022 19:01:46 +0000 (13:01 -0600)
committerMartin K. Petersen <martin.petersen@oracle.com>
Sat, 14 Jan 2023 02:34:09 +0000 (21:34 -0500)
scsi_execute() is going to be removed. Convert to the SPI class to
scsi_execute_cmd().

Signed-off-by: Mike Christie <michael.christie@oracle.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/scsi_transport_spi.c

index f569cf0..2442d4d 100644 (file)
@@ -105,28 +105,27 @@ static int sprint_frac(char *dest, int value, int denom)
 }
 
 static int spi_execute(struct scsi_device *sdev, const void *cmd,
-                      enum dma_data_direction dir,
-                      void *buffer, unsigned bufflen,
+                      enum req_op op, void *buffer, unsigned int bufflen,
                       struct scsi_sense_hdr *sshdr)
 {
        int i, result;
-       unsigned char sense[SCSI_SENSE_BUFFERSIZE];
        struct scsi_sense_hdr sshdr_tmp;
+       blk_opf_t opf = op | REQ_FAILFAST_DEV | REQ_FAILFAST_TRANSPORT |
+                       REQ_FAILFAST_DRIVER;
+       const struct scsi_exec_args exec_args = {
+               .req_flags = BLK_MQ_REQ_PM,
+               .sshdr = sshdr ? : &sshdr_tmp,
+       };
 
-       if (!sshdr)
-               sshdr = &sshdr_tmp;
+       sshdr = exec_args.sshdr;
 
        for(i = 0; i < DV_RETRIES; i++) {
                /*
                 * The purpose of the RQF_PM flag below is to bypass the
                 * SDEV_QUIESCE state.
                 */
-               result = scsi_execute(sdev, cmd, dir, buffer, bufflen, sense,
-                                     sshdr, DV_TIMEOUT, /* retries */ 1,
-                                     REQ_FAILFAST_DEV |
-                                     REQ_FAILFAST_TRANSPORT |
-                                     REQ_FAILFAST_DRIVER,
-                                     RQF_PM, NULL);
+               result = scsi_execute_cmd(sdev, cmd, opf, buffer, bufflen,
+                                         DV_TIMEOUT, 1, &exec_args);
                if (result < 0 || !scsi_sense_valid(sshdr) ||
                    sshdr->sense_key != UNIT_ATTENTION)
                        break;
@@ -675,7 +674,7 @@ spi_dv_device_echo_buffer(struct scsi_device *sdev, u8 *buffer,
        }
 
        for (r = 0; r < retries; r++) {
-               result = spi_execute(sdev, spi_write_buffer, DMA_TO_DEVICE,
+               result = spi_execute(sdev, spi_write_buffer, REQ_OP_DRV_OUT,
                                     buffer, len, &sshdr);
                if(result || !scsi_device_online(sdev)) {
 
@@ -697,7 +696,7 @@ spi_dv_device_echo_buffer(struct scsi_device *sdev, u8 *buffer,
                }
 
                memset(ptr, 0, len);
-               spi_execute(sdev, spi_read_buffer, DMA_FROM_DEVICE,
+               spi_execute(sdev, spi_read_buffer, REQ_OP_DRV_IN,
                            ptr, len, NULL);
                scsi_device_set_state(sdev, SDEV_QUIESCE);
 
@@ -722,7 +721,7 @@ spi_dv_device_compare_inquiry(struct scsi_device *sdev, u8 *buffer,
        for (r = 0; r < retries; r++) {
                memset(ptr, 0, len);
 
-               result = spi_execute(sdev, spi_inquiry, DMA_FROM_DEVICE,
+               result = spi_execute(sdev, spi_inquiry, REQ_OP_DRV_IN,
                                     ptr, len, NULL);
                
                if(result || !scsi_device_online(sdev)) {
@@ -828,7 +827,7 @@ spi_dv_device_get_echo_buffer(struct scsi_device *sdev, u8 *buffer)
         * (reservation conflict, device not ready, etc) just
         * skip the write tests */
        for (l = 0; ; l++) {
-               result = spi_execute(sdev, spi_test_unit_ready, DMA_NONE, 
+               result = spi_execute(sdev, spi_test_unit_ready, REQ_OP_DRV_IN,
                                     NULL, 0, NULL);
 
                if(result) {
@@ -841,7 +840,7 @@ spi_dv_device_get_echo_buffer(struct scsi_device *sdev, u8 *buffer)
        }
 
        result = spi_execute(sdev, spi_read_buffer_descriptor, 
-                            DMA_FROM_DEVICE, buffer, 4, NULL);
+                            REQ_OP_DRV_IN, buffer, 4, NULL);
 
        if (result)
                /* Device has no echo buffer */