mirror of
https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux
synced 2025-09-20 20:42:12 +10: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,
|
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,
|
|||||||
}
|
}
|
||||||
|
|
||||||
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,
|
|||||||
}
|
}
|
||||||
|
|
||||||
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,
|
|||||||
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)
|
|||||||
* (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)
|
|||||||
}
|
}
|
||||||
|
|
||||||
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 */
|
||||||
|
Loading…
Reference in New Issue
Block a user