mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-24 04:34:08 +08:00
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: 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>
This commit is contained in:
parent
7dfe0b5e7c
commit
c9ee828aad
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user