Commit c9ee828a authored by Mike Christie's avatar Mike Christie Committed by Martin K. Petersen

scsi: spi: Convert to scsi_execute_cmd()

scsi_execute() is going to be removed. Convert to the SPI class to
scsi_execute_cmd().
Signed-off-by: default avatarMike Christie <michael.christie@oracle.com>
Reviewed-by: default avatarJohn Garry <john.g.garry@oracle.com>
Reviewed-by: default avatarBart Van Assche <bvanassche@acm.org>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 7dfe0b5e
...@@ -105,28 +105,27 @@ static int sprint_frac(char *dest, int value, int denom) ...@@ -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, static int spi_execute(struct scsi_device *sdev, const void *cmd,
enum dma_data_direction dir, enum req_op op, void *buffer, unsigned int bufflen,
void *buffer, unsigned bufflen,
struct scsi_sense_hdr *sshdr) struct scsi_sense_hdr *sshdr)
{ {
int i, result; int i, result;
unsigned char sense[SCSI_SENSE_BUFFERSIZE];
struct scsi_sense_hdr sshdr_tmp; 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 = exec_args.sshdr;
sshdr = &sshdr_tmp;
for(i = 0; i < DV_RETRIES; i++) { for(i = 0; i < DV_RETRIES; i++) {
/* /*
* The purpose of the RQF_PM flag below is to bypass the * The purpose of the RQF_PM flag below is to bypass the
* SDEV_QUIESCE state. * SDEV_QUIESCE state.
*/ */
result = scsi_execute(sdev, cmd, dir, buffer, bufflen, sense, result = scsi_execute_cmd(sdev, cmd, opf, buffer, bufflen,
sshdr, DV_TIMEOUT, /* retries */ 1, DV_TIMEOUT, 1, &exec_args);
REQ_FAILFAST_DEV |
REQ_FAILFAST_TRANSPORT |
REQ_FAILFAST_DRIVER,
RQF_PM, NULL);
if (result < 0 || !scsi_sense_valid(sshdr) || if (result < 0 || !scsi_sense_valid(sshdr) ||
sshdr->sense_key != UNIT_ATTENTION) sshdr->sense_key != UNIT_ATTENTION)
break; break;
...@@ -675,7 +674,7 @@ spi_dv_device_echo_buffer(struct scsi_device *sdev, u8 *buffer, ...@@ -675,7 +674,7 @@ spi_dv_device_echo_buffer(struct scsi_device *sdev, u8 *buffer,
} }
for (r = 0; r < retries; r++) { 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); buffer, len, &sshdr);
if(result || !scsi_device_online(sdev)) { if(result || !scsi_device_online(sdev)) {
...@@ -697,7 +696,7 @@ spi_dv_device_echo_buffer(struct scsi_device *sdev, u8 *buffer, ...@@ -697,7 +696,7 @@ spi_dv_device_echo_buffer(struct scsi_device *sdev, u8 *buffer,
} }
memset(ptr, 0, len); 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); ptr, len, NULL);
scsi_device_set_state(sdev, SDEV_QUIESCE); scsi_device_set_state(sdev, SDEV_QUIESCE);
...@@ -722,7 +721,7 @@ spi_dv_device_compare_inquiry(struct scsi_device *sdev, u8 *buffer, ...@@ -722,7 +721,7 @@ spi_dv_device_compare_inquiry(struct scsi_device *sdev, u8 *buffer,
for (r = 0; r < retries; r++) { for (r = 0; r < retries; r++) {
memset(ptr, 0, len); 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); ptr, len, NULL);
if(result || !scsi_device_online(sdev)) { if(result || !scsi_device_online(sdev)) {
...@@ -828,7 +827,7 @@ spi_dv_device_get_echo_buffer(struct scsi_device *sdev, u8 *buffer) ...@@ -828,7 +827,7 @@ spi_dv_device_get_echo_buffer(struct scsi_device *sdev, u8 *buffer)
* (reservation conflict, device not ready, etc) just * (reservation conflict, device not ready, etc) just
* skip the write tests */ * skip the write tests */
for (l = 0; ; l++) { 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); NULL, 0, NULL);
if(result) { if(result) {
...@@ -841,7 +840,7 @@ spi_dv_device_get_echo_buffer(struct scsi_device *sdev, u8 *buffer) ...@@ -841,7 +840,7 @@ spi_dv_device_get_echo_buffer(struct scsi_device *sdev, u8 *buffer)
} }
result = spi_execute(sdev, spi_read_buffer_descriptor, result = spi_execute(sdev, spi_read_buffer_descriptor,
DMA_FROM_DEVICE, buffer, 4, NULL); REQ_OP_DRV_IN, buffer, 4, NULL);
if (result) if (result)
/* Device has no echo buffer */ /* Device has no echo buffer */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment