mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 12:11:40 +00:00
[PATCH] kill libata scsi_wait_req usage (make libata compile with scsi-misc changes)
scsi_wait_req does not exist any more in the SCSI layer. This patch makes it so libata can compile again. Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
39990b5eb9
commit
85837ebdd7
@ -38,6 +38,7 @@
|
||||
#include <linux/spinlock.h>
|
||||
#include <scsi/scsi.h>
|
||||
#include <scsi/scsi_host.h>
|
||||
#include <scsi/scsi_eh.h>
|
||||
#include <scsi/scsi_device.h>
|
||||
#include <scsi/scsi_request.h>
|
||||
#include <linux/libata.h>
|
||||
@ -147,7 +148,8 @@ int ata_cmd_ioctl(struct scsi_device *scsidev, void __user *arg)
|
||||
u8 scsi_cmd[MAX_COMMAND_SIZE];
|
||||
u8 args[4], *argbuf = NULL;
|
||||
int argsize = 0;
|
||||
struct scsi_request *sreq;
|
||||
struct scsi_sense_hdr sshdr;
|
||||
enum dma_data_direction data_dir;
|
||||
|
||||
if (NULL == (void *)arg)
|
||||
return -EINVAL;
|
||||
@ -155,10 +157,6 @@ int ata_cmd_ioctl(struct scsi_device *scsidev, void __user *arg)
|
||||
if (copy_from_user(args, arg, sizeof(args)))
|
||||
return -EFAULT;
|
||||
|
||||
sreq = scsi_allocate_request(scsidev, GFP_KERNEL);
|
||||
if (!sreq)
|
||||
return -EINTR;
|
||||
|
||||
memset(scsi_cmd, 0, sizeof(scsi_cmd));
|
||||
|
||||
if (args[3]) {
|
||||
@ -172,11 +170,11 @@ int ata_cmd_ioctl(struct scsi_device *scsidev, void __user *arg)
|
||||
scsi_cmd[1] = (4 << 1); /* PIO Data-in */
|
||||
scsi_cmd[2] = 0x0e; /* no off.line or cc, read from dev,
|
||||
block count in sector count field */
|
||||
sreq->sr_data_direction = DMA_FROM_DEVICE;
|
||||
data_dir = DMA_FROM_DEVICE;
|
||||
} else {
|
||||
scsi_cmd[1] = (3 << 1); /* Non-data */
|
||||
/* scsi_cmd[2] is already 0 -- no off.line, cc, or data xfer */
|
||||
sreq->sr_data_direction = DMA_NONE;
|
||||
data_dir = DMA_NONE;
|
||||
}
|
||||
|
||||
scsi_cmd[0] = ATA_16;
|
||||
@ -194,9 +192,8 @@ int ata_cmd_ioctl(struct scsi_device *scsidev, void __user *arg)
|
||||
|
||||
/* Good values for timeout and retries? Values below
|
||||
from scsi_ioctl_send_command() for default case... */
|
||||
scsi_wait_req(sreq, scsi_cmd, argbuf, argsize, (10*HZ), 5);
|
||||
|
||||
if (sreq->sr_result) {
|
||||
if (scsi_execute_req(scsidev, scsi_cmd, data_dir, argbuf, argsize,
|
||||
&sshdr, (10*HZ), 5)) {
|
||||
rc = -EIO;
|
||||
goto error;
|
||||
}
|
||||
@ -207,8 +204,6 @@ int ata_cmd_ioctl(struct scsi_device *scsidev, void __user *arg)
|
||||
&& copy_to_user((void *)(arg + sizeof(args)), argbuf, argsize))
|
||||
rc = -EFAULT;
|
||||
error:
|
||||
scsi_release_request(sreq);
|
||||
|
||||
if (argbuf)
|
||||
kfree(argbuf);
|
||||
|
||||
@ -231,7 +226,7 @@ int ata_task_ioctl(struct scsi_device *scsidev, void __user *arg)
|
||||
int rc = 0;
|
||||
u8 scsi_cmd[MAX_COMMAND_SIZE];
|
||||
u8 args[7];
|
||||
struct scsi_request *sreq;
|
||||
struct scsi_sense_hdr sshdr;
|
||||
|
||||
if (NULL == (void *)arg)
|
||||
return -EINVAL;
|
||||
@ -250,26 +245,13 @@ int ata_task_ioctl(struct scsi_device *scsidev, void __user *arg)
|
||||
scsi_cmd[12] = args[5];
|
||||
scsi_cmd[14] = args[0];
|
||||
|
||||
sreq = scsi_allocate_request(scsidev, GFP_KERNEL);
|
||||
if (!sreq) {
|
||||
rc = -EINTR;
|
||||
goto error;
|
||||
}
|
||||
|
||||
sreq->sr_data_direction = DMA_NONE;
|
||||
/* Good values for timeout and retries? Values below
|
||||
from scsi_ioctl_send_command() for default case... */
|
||||
scsi_wait_req(sreq, scsi_cmd, NULL, 0, (10*HZ), 5);
|
||||
|
||||
if (sreq->sr_result) {
|
||||
from scsi_ioctl_send_command() for default case... */
|
||||
if (scsi_execute_req(scsidev, scsi_cmd, DMA_NONE, NULL, 0, &sshdr,
|
||||
(10*HZ), 5))
|
||||
rc = -EIO;
|
||||
goto error;
|
||||
}
|
||||
|
||||
/* Need code to retrieve data from check condition? */
|
||||
|
||||
error:
|
||||
scsi_release_request(sreq);
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user