#include <linux/vmalloc.h>
#include <linux/blkdev.h>
#include <linux/devfs_fs_kernel.h>
-#include <linux/delay.h>
#include <asm/uaccess.h>
#include <asm/dma.h>
#include <asm/system.h>
MODULE_DESCRIPTION("OnStream {DI-|FW-|SC-|USB}{30|50} Tape Driver");
MODULE_LICENSE("GPL");
-module_param(max_dev, int, 0);
+MODULE_PARM(max_dev, "i");
MODULE_PARM_DESC(max_dev, "Maximum number of OnStream Tape Drives to attach (4)");
-module_param(write_threshold_kbs, int, 0);
+MODULE_PARM(write_threshold_kbs, "i");
MODULE_PARM_DESC(write_threshold_kbs, "Asynchronous write threshold (KB; 32)");
-module_param(max_sg_segs, int, 0);
+MODULE_PARM(max_sg_segs, "i");
MODULE_PARM_DESC(max_sg_segs, "Maximum number of scatter/gather segments to use (9)");
#else
static struct osst_dev_parm {
char * name = tape_name(STp);
os_aux_t * aux = STp->buffer->aux;
os_partition_t * par = &(aux->partition);
- struct st_partstat * STps = &(STp->ps[STp->partition]);
+ ST_partstat * STps = &(STp->ps[STp->partition]);
int blk_cnt, blk_sz, i;
if (STp->raw) {
printk(OSST_DEB_MSG "%s:D: Reached onstream wait ready\n", name);
#endif
- if (initial_delay > 0)
- msleep(jiffies_to_msecs(initial_delay));
+ if (initial_delay > 0) {
+ set_current_state(TASK_INTERRUPTIBLE);
+ schedule_timeout(initial_delay);
+ }
memset(cmd, 0, MAX_COMMAND_SIZE);
cmd[0] = TEST_UNIT_READY;
debugging = 0;
}
#endif
- msleep(100);
+ set_current_state(TASK_INTERRUPTIBLE);
+ schedule_timeout(HZ / 10);
memset(cmd, 0, MAX_COMMAND_SIZE);
cmd[0] = TEST_UNIT_READY;
debugging = 0;
}
#endif
- msleep(100);
+ set_current_state(TASK_INTERRUPTIBLE);
+ schedule_timeout(HZ / 10);
memset(cmd, 0, MAX_COMMAND_SIZE);
cmd[0] = TEST_UNIT_READY;
notyetprinted--;
}
#endif
- msleep(1000 / OSST_POLL_PER_SEC);
+ set_current_state(TASK_INTERRUPTIBLE);
+ schedule_timeout (HZ / OSST_POLL_PER_SEC);
}
#if DEBUG
printk (OSST_DEB_MSG "%s:D: Fail wait f fr %i (>%i): %i-%i %i: %3li.%li s\n",
static int osst_initiate_read(OS_Scsi_Tape * STp, Scsi_Request ** aSRpnt)
{
- struct st_partstat * STps = &(STp->ps[STp->partition]);
+ ST_partstat * STps = &(STp->ps[STp->partition]);
Scsi_Request * SRpnt ;
unsigned char cmd[MAX_COMMAND_SIZE];
int retval = 0;
static int osst_get_logical_frame(OS_Scsi_Tape * STp, Scsi_Request ** aSRpnt, int frame_seq_number, int quiet)
{
- struct st_partstat * STps = &(STp->ps[STp->partition]);
+ ST_partstat * STps = &(STp->ps[STp->partition]);
char * name = tape_name(STp);
int cnt = 0,
bad = 0,
static int osst_seek_logical_blk(OS_Scsi_Tape * STp, Scsi_Request ** aSRpnt, int logical_blk_num)
{
- struct st_partstat * STps = &(STp->ps[STp->partition]);
+ ST_partstat * STps = &(STp->ps[STp->partition]);
char * name = tape_name(STp);
int retries = 0;
int frame_seq_estimate, ppos_estimate, move;
static int osst_seek_sector(OS_Scsi_Tape * STp, Scsi_Request ** aSRpnt, int sector)
{
- struct st_partstat * STps = &(STp->ps[STp->partition]);
+ ST_partstat * STps = &(STp->ps[STp->partition]);
int frame = sector >> OSST_FRAME_SHIFT,
offset = (sector & OSST_SECTOR_MASK) << OSST_SECTOR_SHIFT,
r;
if (SRpnt->sr_sense_buffer[2] == 2 && SRpnt->sr_sense_buffer[12] == 4 &&
(SRpnt->sr_sense_buffer[13] == 1 || SRpnt->sr_sense_buffer[13] == 8)) {
/* in the process of becoming ready */
- msleep(100);
+ set_current_state(TASK_INTERRUPTIBLE);
+ schedule_timeout(HZ / 10);
continue;
}
if (STp->buffer->syscall_result)
static int osst_write_error_recovery(OS_Scsi_Tape * STp, Scsi_Request ** aSRpnt, int pending)
{
Scsi_Request * SRpnt = * aSRpnt;
- struct st_partstat * STps = & STp->ps[STp->partition];
+ ST_partstat * STps = & STp->ps[STp->partition];
char * name = tape_name(STp);
int retval = 0;
int rw_state;
{
unsigned char scmd[MAX_COMMAND_SIZE];
Scsi_Request * SRpnt;
- struct st_partstat * STps;
+ ST_partstat * STps;
int result = 0;
int pp = (ppos == 3000 && !skip)? 0 : ppos;
char * name = tape_name(STp);
static int osst_write_trailer(OS_Scsi_Tape *STp, Scsi_Request ** aSRpnt, int leave_at_EOT)
{
- struct st_partstat * STps = &(STp->ps[STp->partition]);
+ ST_partstat * STps = &(STp->ps[STp->partition]);
int result = 0;
if (STp->write_type != OS_WRITE_NEW_MARK) {
int result = 0;
unsigned char cmd[MAX_COMMAND_SIZE];
Scsi_Request * SRpnt = *aSRpnt;
- struct st_partstat * STps;
+ ST_partstat * STps;
char * name = tape_name(STp);
if ((STp->buffer)->writing) {
seek_next is true. */
static int osst_flush_buffer(OS_Scsi_Tape * STp, Scsi_Request ** aSRpnt, int seek_next)
{
- struct st_partstat * STps;
+ ST_partstat * STps;
int backspace = 0, result = 0;
#if DEBUG
char * name = tape_name(STp);
static void reset_state(OS_Scsi_Tape *STp)
{
int i;
- struct st_partstat *STps;
+ ST_partstat *STps;
STp->pos_unknown = 0;
for (i = 0; i < ST_NBR_PARTITIONS; i++) {
int doing_write = 0;
const char __user * b_point;
Scsi_Request * SRpnt = NULL;
- struct st_modedef * STm;
- struct st_partstat * STps;
+ ST_mode * STm;
+ ST_partstat * STps;
OS_Scsi_Tape * STp = filp->private_data;
char * name = tape_name(STp);
ssize_t total, retval = 0;
ssize_t i, transfer;
int special;
- struct st_modedef * STm;
- struct st_partstat * STps;
+ ST_mode * STm;
+ ST_partstat * STps;
Scsi_Request * SRpnt = NULL;
OS_Scsi_Tape * STp = filp->private_data;
char * name = tape_name(STp);
/* Set the driver options */
-static void osst_log_options(OS_Scsi_Tape *STp, struct st_modedef *STm,
- char *name)
+static void osst_log_options(OS_Scsi_Tape *STp, ST_mode *STm, char *name)
{
printk(KERN_INFO
"%s:I: Mode %d options: buffer writes: %d, async writes: %d, read ahead: %d\n",
{
int value;
long code;
- struct st_modedef * STm;
+ ST_mode * STm;
char * name = tape_name(STp);
STm = &(STp->modes[STp->current_mode]);
if (!STm->defined) {
- memcpy(STm, &(STp->modes[0]), sizeof(*STm));
+ memcpy(STm, &(STp->modes[0]), sizeof(ST_mode));
modes_defined = TRUE;
#if DEBUG
if (debugging)
int chg_eof = TRUE;
unsigned char cmd[MAX_COMMAND_SIZE];
Scsi_Request * SRpnt = * aSRpnt;
- struct st_partstat * STps;
+ ST_partstat * STps;
int fileno, blkno, at_sm, frame_seq_numbr, logical_blk_num;
int datalen = 0, direction = SCSI_DATA_NONE;
char * name = tape_name(STp);
unsigned char cmd[MAX_COMMAND_SIZE];
Scsi_Request * SRpnt = NULL;
OS_Scsi_Tape * STp;
- struct st_modedef * STm;
- struct st_partstat * STps;
+ ST_mode * STm;
+ ST_partstat * STps;
char * name;
int dev = TAPE_NR(inode);
int mode = TAPE_MODE(inode);
{
int result = 0, result2;
OS_Scsi_Tape * STp = filp->private_data;
- struct st_modedef * STm = &(STp->modes[STp->current_mode]);
- struct st_partstat * STps = &(STp->ps[STp->partition]);
+ ST_mode * STm = &(STp->modes[STp->current_mode]);
+ ST_partstat * STps = &(STp->ps[STp->partition]);
Scsi_Request * SRpnt = NULL;
char * name = tape_name(STp);
{
int i, cmd_nr, cmd_type, retval = 0;
unsigned int blk;
- struct st_modedef * STm;
- struct st_partstat * STps;
+ ST_mode * STm;
+ ST_partstat * STps;
Scsi_Request * SRpnt = NULL;
OS_Scsi_Tape * STp = file->private_data;
char * name = tape_name(STp);
{
Scsi_Device * SDp = to_scsi_device(dev);
OS_Scsi_Tape * tpnt;
- struct st_modedef * STm;
- struct st_partstat * STps;
+ ST_mode * STm;
+ ST_partstat * STps;
OSST_buffer * buffer;
struct gendisk * drive;
int i, mode, dev_num;