Commit 8b05b773 authored by Mike Christie's avatar Mike Christie Committed by James Bottomley

[SCSI] convert st to use scsi_execute_async

convert st to always send scatterlists and kill scsi_request
usage.

This is the same as last time as it was posted, but with Kai's patches
merged and we now pass the bytes value to scsi_execute_async.

TODO:

- move DIO code to common place or make block layers usable for ULDs.
- move buffer allocation code to common place for all ULDs to use. And
make buffer allocation code handle all queue limits so we can find
out about problems before calling scsi_execute_async.
- move indirect (copy_to/from_user) paths commone place or make block
layers usable for ULDs.
Signed-off-by: default avatarMike Christie <michaelc@cs.wisc.edu>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent d6b10348
This diff is collapsed.
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#include <linux/completion.h> #include <linux/completion.h>
#include <linux/kref.h> #include <linux/kref.h>
#include <scsi/scsi_cmnd.h>
/* Descriptor for analyzed sense data */ /* Descriptor for analyzed sense data */
struct st_cmdstatus { struct st_cmdstatus {
...@@ -17,6 +18,17 @@ struct st_cmdstatus { ...@@ -17,6 +18,17 @@ struct st_cmdstatus {
u8 deferred; u8 deferred;
}; };
struct scsi_tape;
/* scsi tape command */
struct st_request {
unsigned char cmd[MAX_COMMAND_SIZE];
unsigned char sense[SCSI_SENSE_BUFFERSIZE];
int result;
struct scsi_tape *stp;
struct completion *waiting;
};
/* The tape buffer descriptor. */ /* The tape buffer descriptor. */
struct st_buffer { struct st_buffer {
unsigned char in_use; unsigned char in_use;
...@@ -28,7 +40,7 @@ struct st_buffer { ...@@ -28,7 +40,7 @@ struct st_buffer {
int read_pointer; int read_pointer;
int writing; int writing;
int syscall_result; int syscall_result;
struct scsi_request *last_SRpnt; struct st_request *last_SRpnt;
struct st_cmdstatus cmdstat; struct st_cmdstatus cmdstat;
unsigned char *b_data; unsigned char *b_data;
unsigned short use_sg; /* zero or max number of s/g segments for this adapter */ unsigned short use_sg; /* zero or max number of s/g segments for this adapter */
......
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