summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/st.h
diff options
context:
space:
mode:
authorKai Makisara <Kai.Makisara@kolumbus.fi>2008-02-24 22:23:24 +0200
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-04-07 12:15:39 -0500
commit40f6b36c6243462fb95d0343237331c423494b03 (patch)
tree456b78c5647684527e0104463dd45b8e93ea9d81 /drivers/scsi/st.h
parentd35055a0f2637f29f95001a67b464fe833b09ebc (diff)
downloadlinux-stable-40f6b36c6243462fb95d0343237331c423494b03.tar.gz
linux-stable-40f6b36c6243462fb95d0343237331c423494b03.tar.bz2
linux-stable-40f6b36c6243462fb95d0343237331c423494b03.zip
[SCSI] st: add option to use SILI in variable block reads
Add new option MT_ST_SILI to enable setting the SILI bit in reads in variable block mode. If SILI is set, reading a block shorter than the byte count does not result in CHECK CONDITION. The length of the block is determined using the residual count from the HBA. Avoiding the REQUEST SENSE command for every block speeds up some real applications considerably. Signed-off-by: Kai Makisara <kai.makisara@kolumbus.fi> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/st.h')
-rw-r--r--drivers/scsi/st.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/scsi/st.h b/drivers/scsi/st.h
index 5931726fcf93..b92712f95931 100644
--- a/drivers/scsi/st.h
+++ b/drivers/scsi/st.h
@@ -12,6 +12,7 @@ struct st_cmdstatus {
int midlevel_result;
struct scsi_sense_hdr sense_hdr;
int have_sense;
+ int residual;
u64 uremainder64;
u8 flags;
u8 remainder_valid;
@@ -34,6 +35,7 @@ struct st_request {
struct st_buffer {
unsigned char dma; /* DMA-able buffer */
unsigned char do_dio; /* direct i/o set up? */
+ unsigned char cleared; /* internal buffer cleared after open? */
int buffer_size;
int buffer_blocks;
int buffer_bytes;
@@ -122,6 +124,7 @@ struct scsi_tape {
unsigned char try_dio_now; /* try direct i/o before next close? */
unsigned char c_algo; /* compression algorithm */
unsigned char pos_unknown; /* after reset position unknown */
+ unsigned char sili; /* use SILI when reading in variable b mode */
int tape_type;
int long_timeout; /* timeout for commands known to take long time */