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

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
Loading
Loading
Loading
Loading
+15 −16
Original line number Diff line number Diff line
@@ -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 */