taglinefilesource code
STp186drivers/scsi/st.cScsi_Tape * STp;
STp189drivers/scsi/st.cSTp = &(scsi_tapes[st_nbr]);
STp190drivers/scsi/st.cif ((STp->buffer)->writing &&
STp202drivers/scsi/st.c(STp->buffer)->last_result = SCpnt->result; /* Error */
STp204drivers/scsi/st.c(STp->buffer)->last_result = INT_MAX; /* OK */
STp207drivers/scsi/st.c(STp->buffer)->last_result = SCpnt->result;
STp208drivers/scsi/st.cif ((STp->buffer)->writing) {
STp210drivers/scsi/st.c(STp->buffer)->last_result_fatal = st_chk_result(SCpnt);
STp217drivers/scsi/st.cSTp->write_pending = 0;
STp230drivers/scsi/st.cst_do_scsi(Scsi_Cmnd *SCpnt, Scsi_Tape *STp, unsigned char *cmd, int bytes,
STp234drivers/scsi/st.cif ((SCpnt = allocate_device(NULL, STp->device, 1)) == NULL) {
STp235drivers/scsi/st.cprintk(KERN_ERR "st%d: Can't get SCSI request.\n", TAPE_NR(STp->devt));
STp240drivers/scsi/st.cSTp->sem = MUTEX_LOCKED;
STp241drivers/scsi/st.cSCpnt->request.sem = &(STp->sem);
STp243drivers/scsi/st.cSCpnt->request.rq_dev = STp->devt;
STp245drivers/scsi/st.cscsi_do_cmd(SCpnt, (void *)cmd, (STp->buffer)->b_data, bytes,
STp250drivers/scsi/st.c(STp->buffer)->last_result_fatal = st_chk_result(SCpnt);
STp258drivers/scsi/st.cwrite_behind_check(Scsi_Tape *STp)
STp262drivers/scsi/st.cSTbuffer = STp->buffer;
STp265drivers/scsi/st.cif (STp->write_pending)
STp266drivers/scsi/st.cSTp->nbr_waits++;
STp268drivers/scsi/st.cSTp->nbr_finished++;
STp271drivers/scsi/st.cdown(&(STp->sem));
STp278drivers/scsi/st.cif (STp->drv_block >= 0) {
STp279drivers/scsi/st.cif (STp->block_size == 0)
STp280drivers/scsi/st.cSTp->drv_block++;
STp282drivers/scsi/st.cSTp->drv_block += STbuffer->writing / STp->block_size;
STp293drivers/scsi/st.cback_over_eof(Scsi_Tape *STp)
STp303drivers/scsi/st.cSCpnt = st_do_scsi(NULL, STp, cmd, 0, ST_TIMEOUT, MAX_RETRIES);
STp308drivers/scsi/st.cif ((STp->buffer)->last_result != 0) {
STp309drivers/scsi/st.cprintk(KERN_ERR "st%d: Backing over filemark failed.\n", TAPE_NR(STp->devt));
STp310drivers/scsi/st.cif ((STp->mt_status)->mt_fileno >= 0)
STp311drivers/scsi/st.c(STp->mt_status)->mt_fileno += 1;
STp312drivers/scsi/st.c(STp->mt_status)->mt_blkno = 0;
STp315drivers/scsi/st.creturn (STp->buffer)->last_result_fatal;
STp321drivers/scsi/st.cflush_write_buffer(Scsi_Tape *STp)
STp328drivers/scsi/st.cif ((STp->buffer)->writing) {
STp329drivers/scsi/st.cwrite_behind_check(STp);
STp330drivers/scsi/st.cif ((STp->buffer)->last_result_fatal) {
STp334drivers/scsi/st.cTAPE_NR(STp->devt), (STp->buffer)->last_result);
STp336drivers/scsi/st.cif ((STp->buffer)->last_result == INT_MAX)
STp342drivers/scsi/st.cif (STp->block_size == 0)
STp346drivers/scsi/st.cif (STp->dirty == 1) {
STp348drivers/scsi/st.coffset = (STp->buffer)->buffer_bytes;
STp349drivers/scsi/st.ctransfer = ((offset + STp->block_size - 1) /
STp350drivers/scsi/st.cSTp->block_size) * STp->block_size;
STp353drivers/scsi/st.cprintk(ST_DEB_MSG "st%d: Flushing %d bytes.\n", TAPE_NR(STp->devt), transfer);
STp355drivers/scsi/st.cmemset((STp->buffer)->b_data + offset, 0, transfer - offset);
STp360drivers/scsi/st.cblks = transfer / STp->block_size;
STp365drivers/scsi/st.cSCpnt = st_do_scsi(NULL, STp, cmd, transfer, ST_TIMEOUT, MAX_WRITE_RETRIES);
STp369drivers/scsi/st.cif ((STp->buffer)->last_result_fatal != 0) {
STp370drivers/scsi/st.cprintk(KERN_ERR "st%d: Error on flush.\n", TAPE_NR(STp->devt));
STp374drivers/scsi/st.cSTp->dirty = 0;
STp375drivers/scsi/st.c(STp->buffer)->buffer_bytes = 0;
STp380drivers/scsi/st.cSTp->drv_block = (-1);
STp383drivers/scsi/st.cif (STp->drv_block >= 0)
STp384drivers/scsi/st.cSTp->drv_block += blks;
STp385drivers/scsi/st.cSTp->dirty = 0;
STp386drivers/scsi/st.c(STp->buffer)->buffer_bytes = 0;
STp400drivers/scsi/st.cScsi_Tape * STp;
STp404drivers/scsi/st.cSTp = &(scsi_tapes[dev]);
STp405drivers/scsi/st.cSTbuffer = STp->buffer;
STp411drivers/scsi/st.cif( STp->device->was_reset )
STp414drivers/scsi/st.cif (STp->ready != ST_READY)
STp417drivers/scsi/st.cif (STp->rw == ST_WRITING)  /* Writing */
STp418drivers/scsi/st.creturn flush_write_buffer(STp);
STp420drivers/scsi/st.cif (STp->block_size == 0)
STp423drivers/scsi/st.cbackspace = ((STp->buffer)->buffer_bytes +
STp424drivers/scsi/st.c(STp->buffer)->read_pointer) / STp->block_size -
STp425drivers/scsi/st.c((STp->buffer)->read_pointer + STp->block_size - 1) /
STp426drivers/scsi/st.cSTp->block_size;
STp427drivers/scsi/st.c(STp->buffer)->buffer_bytes = 0;
STp428drivers/scsi/st.c(STp->buffer)->read_pointer = 0;
STp431drivers/scsi/st.cif ((STp->eof == ST_FM) && !STp->eof_hit) {
STp432drivers/scsi/st.cresult = back_over_eof(STp); /* Back over the EOF hit */
STp434drivers/scsi/st.cSTp->eof = ST_NOEOF;
STp435drivers/scsi/st.cSTp->eof_hit = 0;
STp441drivers/scsi/st.celse if ((STp->eof == ST_FM) && !STp->eof_hit) {
STp442drivers/scsi/st.c(STp->mt_status)->mt_fileno++;
STp443drivers/scsi/st.cSTp->drv_block = 0;
STp459drivers/scsi/st.cScsi_Tape * STp;
STp464drivers/scsi/st.cSTp = &(scsi_tapes[dev]);
STp465drivers/scsi/st.cif (STp->in_use) {
STp471drivers/scsi/st.cSTp->rew_at_close = (MINOR(inode->i_rdev) & 0x80) == 0;
STp478drivers/scsi/st.cSTp->buffer = new_tape_buffer(FALSE);
STp479drivers/scsi/st.cif (STp->buffer == NULL) {
STp485drivers/scsi/st.cSTp->buffer = st_buffers[i];
STp486drivers/scsi/st.c(STp->buffer)->in_use = 1;
STp487drivers/scsi/st.c(STp->buffer)->writing = 0;
STp488drivers/scsi/st.cSTp->in_use = 1;
STp491drivers/scsi/st.cSTp->write_prot = ((flags & O_ACCMODE) == O_RDONLY);
STp493drivers/scsi/st.cSTp->dirty = 0;
STp494drivers/scsi/st.cSTp->rw = ST_IDLE;
STp495drivers/scsi/st.cSTp->ready = ST_READY;
STp496drivers/scsi/st.cif (STp->eof != ST_EOD)  /* Save EOD across opens */
STp497drivers/scsi/st.cSTp->eof = ST_NOEOF;
STp498drivers/scsi/st.cSTp->eof_hit = 0;
STp499drivers/scsi/st.cSTp->recover_count = 0;
STp501drivers/scsi/st.cSTp->nbr_waits = STp->nbr_finished = 0;
STp507drivers/scsi/st.cSCpnt = st_do_scsi(NULL, STp, cmd, 0, ST_LONG_TIMEOUT, MAX_READY_RETRIES);
STp513drivers/scsi/st.c(STp->mt_status)->mt_fileno = 0 ;
STp517drivers/scsi/st.cSCpnt = st_do_scsi(SCpnt, STp, cmd, 0, ST_LONG_TIMEOUT, MAX_READY_RETRIES);
STp519drivers/scsi/st.c(STp->mt_status)->mt_fileno = STp->drv_block = 0;
STp520drivers/scsi/st.cSTp->eof = ST_NOEOF;
STp521drivers/scsi/st.c(STp->device)->was_reset = 0;
STp524drivers/scsi/st.cif ((STp->buffer)->last_result_fatal != 0) {
STp527drivers/scsi/st.c(STp->mt_status)->mt_fileno = STp->drv_block = 0 ;
STp529drivers/scsi/st.cSTp->ready = ST_NO_TAPE;
STp531drivers/scsi/st.c(STp->mt_status)->mt_fileno = STp->drv_block = (-1);
STp532drivers/scsi/st.cSTp->ready = ST_NOT_READY;
STp535drivers/scsi/st.cSTp->density = 0;     /* Clear the erroneous "residue" */
STp536drivers/scsi/st.cSTp->write_prot = 0;
STp537drivers/scsi/st.cSTp->block_size = 0;
STp538drivers/scsi/st.cSTp->eof = ST_NOEOF;
STp539drivers/scsi/st.c(STp->mt_status)->mt_fileno = STp->drv_block = 0;
STp540drivers/scsi/st.cSTp->door_locked = ST_UNLOCKED;
STp550drivers/scsi/st.cSCpnt = st_do_scsi(SCpnt, STp, cmd, 6, ST_TIMEOUT, MAX_READY_RETRIES);
STp553drivers/scsi/st.cSTp->max_block = ((STp->buffer)->b_data[1] << 16) |
STp554drivers/scsi/st.c((STp->buffer)->b_data[2] << 8) | (STp->buffer)->b_data[3];
STp555drivers/scsi/st.cSTp->min_block = ((STp->buffer)->b_data[4] << 8) |
STp556drivers/scsi/st.c(STp->buffer)->b_data[5];
STp559drivers/scsi/st.cprintk(ST_DEB_MSG "st%d: Block limits %d - %d bytes.\n", dev, STp->min_block,
STp560drivers/scsi/st.cSTp->max_block);
STp564drivers/scsi/st.cSTp->min_block = STp->max_block = (-1);
STp575drivers/scsi/st.cSCpnt = st_do_scsi(SCpnt, STp, cmd, 12, ST_TIMEOUT, MAX_READY_RETRIES);
STp577drivers/scsi/st.cif ((STp->buffer)->last_result_fatal != 0) {
STp582drivers/scsi/st.cSTp->block_size = ST_DEFAULT_BLOCK;  /* Educated guess (?) */
STp583drivers/scsi/st.c(STp->buffer)->last_result_fatal = 0;  /* Prevent error propagation */
STp584drivers/scsi/st.cSTp->drv_write_prot = 0;
STp592drivers/scsi/st.c(STp->buffer)->b_data[0], (STp->buffer)->b_data[1],
STp593drivers/scsi/st.c(STp->buffer)->b_data[2], (STp->buffer)->b_data[3]);
STp596drivers/scsi/st.cif ((STp->buffer)->b_data[3] >= 8) {
STp597drivers/scsi/st.cSTp->drv_buffer = ((STp->buffer)->b_data[2] >> 4) & 7;
STp598drivers/scsi/st.cSTp->density = (STp->buffer)->b_data[4];
STp599drivers/scsi/st.cSTp->block_size = (STp->buffer)->b_data[9] * 65536 +
STp600drivers/scsi/st.c(STp->buffer)->b_data[10] * 256 + (STp->buffer)->b_data[11];
STp604drivers/scsi/st.cdev, STp->density, (STp->buffer)->b_data[5] * 65536 +
STp605drivers/scsi/st.c(STp->buffer)->b_data[6] * 256 + (STp->buffer)->b_data[7],
STp606drivers/scsi/st.cSTp->drv_buffer);
STp610drivers/scsi/st.cif (STp->block_size > (STp->buffer)->buffer_size &&
STp611drivers/scsi/st.c!enlarge_buffer(STp->buffer, STp->block_size)) {
STp613drivers/scsi/st.cSTp->block_size);
STp614drivers/scsi/st.c(STp->buffer)->in_use = 0;
STp615drivers/scsi/st.cSTp->in_use = 0;
STp618drivers/scsi/st.cSTp->drv_write_prot = ((STp->buffer)->b_data[2] & 0x80) != 0;
STp622drivers/scsi/st.cif (STp->block_size > 0)
STp623drivers/scsi/st.c(STp->buffer)->buffer_blocks = st_buffer_size / STp->block_size;
STp625drivers/scsi/st.c(STp->buffer)->buffer_blocks = 1;
STp626drivers/scsi/st.c(STp->buffer)->buffer_bytes = (STp->buffer)->read_pointer = 0;
STp631drivers/scsi/st.cSTp->block_size, (STp->buffer)->buffer_size,
STp632drivers/scsi/st.c(STp->buffer)->buffer_blocks);
STp635drivers/scsi/st.cif (STp->drv_write_prot) {
STp636drivers/scsi/st.cSTp->write_prot = 1;
STp642drivers/scsi/st.c(STp->buffer)->in_use = 0;
STp643drivers/scsi/st.cSTp->buffer = 0;
STp644drivers/scsi/st.cSTp->in_use = 0;
STp664drivers/scsi/st.cScsi_Tape * STp;
STp669drivers/scsi/st.cSTp = &(scsi_tapes[dev]);
STp671drivers/scsi/st.cif ( STp->rw == ST_WRITING && !(STp->device)->was_reset) {
STp673drivers/scsi/st.cresult = flush_write_buffer(STp);
STp680drivers/scsi/st.cdev, STp->nbr_waits, STp->nbr_finished);
STp688drivers/scsi/st.ccmd[4] = 1 + STp->two_fm;
STp690drivers/scsi/st.cSCpnt = st_do_scsi(NULL, STp, cmd, 0, ST_TIMEOUT, MAX_WRITE_RETRIES);
STp696drivers/scsi/st.cif ((STp->buffer)->last_result_fatal != 0)
STp699drivers/scsi/st.cif ((STp->mt_status)->mt_fileno >= 0)
STp700drivers/scsi/st.c(STp->mt_status)->mt_fileno++ ;
STp701drivers/scsi/st.cSTp->drv_block = 0;
STp702drivers/scsi/st.cif (STp->two_fm)
STp703drivers/scsi/st.cback_over_eof(STp);
STp713drivers/scsi/st.celse if (!STp->rew_at_close) {
STp717drivers/scsi/st.cif ((STp->eof == ST_FM) && !STp->eof_hit)
STp718drivers/scsi/st.cback_over_eof(STp);
STp722drivers/scsi/st.cif (STp->rew_at_close)
STp725drivers/scsi/st.cif (STp->door_locked == ST_LOCKED_AUTO)
STp728drivers/scsi/st.cif (STp->buffer != NULL) {
STp729drivers/scsi/st.cnormalize_buffer(STp->buffer);
STp730drivers/scsi/st.c(STp->buffer)->in_use = 0;
STp732drivers/scsi/st.cSTp->in_use = 0;
STp752drivers/scsi/st.cScsi_Tape * STp;
STp755drivers/scsi/st.cSTp = &(scsi_tapes[dev]);
STp756drivers/scsi/st.cif (STp->ready != ST_READY)
STp763drivers/scsi/st.cif( STp->device->was_reset )
STp767drivers/scsi/st.cif (!STp->in_use) {
STp773drivers/scsi/st.cif (STp->write_prot)
STp776drivers/scsi/st.cif (STp->block_size == 0 &&
STp777drivers/scsi/st.ccount > (STp->buffer)->buffer_size &&
STp778drivers/scsi/st.c!enlarge_buffer(STp->buffer, count))
STp781drivers/scsi/st.cif (STp->do_auto_lock && STp->door_locked == ST_UNLOCKED &&
STp783drivers/scsi/st.cSTp->door_locked = ST_LOCKED_AUTO;
STp785drivers/scsi/st.cif (STp->rw == ST_READING) {
STp789drivers/scsi/st.cSTp->rw = ST_WRITING;
STp792drivers/scsi/st.cif (STp->moves_after_eof < 255)
STp793drivers/scsi/st.cSTp->moves_after_eof++;
STp795drivers/scsi/st.cif ((STp->buffer)->writing) {
STp796drivers/scsi/st.cwrite_behind_check(STp);
STp797drivers/scsi/st.cif ((STp->buffer)->last_result_fatal) {
STp801drivers/scsi/st.c(STp->buffer)->last_result);
STp803drivers/scsi/st.cif ((STp->buffer)->last_result == INT_MAX) {
STp805drivers/scsi/st.cSTp->eof = ST_EOM_OK;
STp812drivers/scsi/st.cif (STp->eof == ST_EOM_OK)
STp814drivers/scsi/st.celse if (STp->eof == ST_EOM_ERROR)
STp817drivers/scsi/st.cif (!STp->do_buffer_writes) {
STp818drivers/scsi/st.cif (STp->block_size != 0 && (count % STp->block_size) != 0)
STp823drivers/scsi/st.cwrite_threshold = (STp->buffer)->buffer_blocks * STp->block_size;
STp824drivers/scsi/st.cif (!STp->do_async_writes)
STp831drivers/scsi/st.ccmd[1] = (STp->block_size != 0);
STp833drivers/scsi/st.cSTp->rw = ST_WRITING;
STp836drivers/scsi/st.cwhile((STp->block_size == 0 && !STp->do_async_writes && count > 0) ||
STp837drivers/scsi/st.c(STp->block_size != 0 &&
STp838drivers/scsi/st.c(STp->buffer)->buffer_bytes + count > write_threshold))
STp841drivers/scsi/st.cif (STp->block_size == 0)
STp844drivers/scsi/st.cdo_count = (STp->buffer)->buffer_blocks * STp->block_size -
STp845drivers/scsi/st.c(STp->buffer)->buffer_bytes;
STp849drivers/scsi/st.cmemcpy_fromfs((STp->buffer)->b_data +
STp850drivers/scsi/st.c(STp->buffer)->buffer_bytes, b_point, do_count);
STp852drivers/scsi/st.cif (STp->block_size == 0)
STp855drivers/scsi/st.cblks = ((STp->buffer)->buffer_bytes + do_count) /
STp856drivers/scsi/st.cSTp->block_size;
STp857drivers/scsi/st.ctransfer = blks * STp->block_size;
STp863drivers/scsi/st.cSCpnt = st_do_scsi(SCpnt, STp, cmd, transfer, ST_TIMEOUT, MAX_WRITE_RETRIES);
STp867drivers/scsi/st.cif ((STp->buffer)->last_result_fatal != 0) {
STp874drivers/scsi/st.cif (STp->block_size != 0 && (SCpnt->sense_buffer[0] & 0x80) != 0)
STp878drivers/scsi/st.celse if (STp->block_size == 0 &&
STp883drivers/scsi/st.cif (STp->block_size != 0)
STp884drivers/scsi/st.ctransfer *= STp->block_size;
STp888drivers/scsi/st.cif (STp->drv_block >= 0) {
STp889drivers/scsi/st.cif (STp->block_size == 0 && transfer < do_count)
STp890drivers/scsi/st.cSTp->drv_block++;
STp891drivers/scsi/st.celse if (STp->block_size != 0)
STp892drivers/scsi/st.cSTp->drv_block += (do_count - transfer) / STp->block_size;
STp894drivers/scsi/st.cSTp->eof = ST_EOM_OK;
STp903drivers/scsi/st.cSTp->eof = ST_EOM_ERROR;
STp904drivers/scsi/st.cSTp->drv_block = (-1);    /* Too cautious? */
STp913drivers/scsi/st.cSTp->drv_block = (-1);    /* Too cautious? */
STp918drivers/scsi/st.c(STp->buffer)->buffer_bytes = 0;
STp919drivers/scsi/st.cSTp->dirty = 0;
STp928drivers/scsi/st.cif (STp->drv_block >= 0) {
STp929drivers/scsi/st.cif (STp->block_size == 0)
STp930drivers/scsi/st.cSTp->drv_block++;
STp932drivers/scsi/st.cSTp->drv_block += blks;
STp934drivers/scsi/st.c(STp->buffer)->buffer_bytes = 0;
STp935drivers/scsi/st.cSTp->dirty = 0;
STp938drivers/scsi/st.cSTp->dirty = 1;
STp939drivers/scsi/st.cmemcpy_fromfs((STp->buffer)->b_data +
STp940drivers/scsi/st.c(STp->buffer)->buffer_bytes,b_point,count);
STp942drivers/scsi/st.c(STp->buffer)->buffer_bytes += count;
STp946drivers/scsi/st.cif (doing_write && (STp->buffer)->last_result_fatal != 0) {
STp948drivers/scsi/st.creturn (STp->buffer)->last_result_fatal;
STp951drivers/scsi/st.cif (STp->do_async_writes &&
STp952drivers/scsi/st.c((STp->buffer)->buffer_bytes >= STp->write_threshold ||
STp953drivers/scsi/st.cSTp->block_size == 0) ) {
STp956drivers/scsi/st.cSCpnt = allocate_device(NULL, STp->device, 1);
STp960drivers/scsi/st.cif (STp->block_size == 0)
STp961drivers/scsi/st.c(STp->buffer)->writing = (STp->buffer)->buffer_bytes;
STp963drivers/scsi/st.c(STp->buffer)->writing = ((STp->buffer)->buffer_bytes /
STp964drivers/scsi/st.cSTp->block_size) * STp->block_size;
STp965drivers/scsi/st.cSTp->dirty = !((STp->buffer)->writing ==
STp966drivers/scsi/st.c(STp->buffer)->buffer_bytes);
STp968drivers/scsi/st.cif (STp->block_size == 0)
STp969drivers/scsi/st.cblks = (STp->buffer)->writing;
STp971drivers/scsi/st.cblks = (STp->buffer)->writing / STp->block_size;
STp975drivers/scsi/st.cSTp->sem = MUTEX_LOCKED;
STp976drivers/scsi/st.cSCpnt->request.sem = &(STp->sem);
STp978drivers/scsi/st.cSCpnt->request.rq_dev = STp->devt;
STp980drivers/scsi/st.cSTp->write_pending = 1;
STp984drivers/scsi/st.c(void *) cmd, (STp->buffer)->b_data,
STp985drivers/scsi/st.c(STp->buffer)->writing,
STp991drivers/scsi/st.cSTp->at_sm &= (total != 0);
STp1004drivers/scsi/st.cScsi_Tape * STp;
STp1007drivers/scsi/st.cSTp = &(scsi_tapes[dev]);
STp1008drivers/scsi/st.cif (STp->ready != ST_READY)
STp1011drivers/scsi/st.cif (!STp->in_use) {
STp1017drivers/scsi/st.cif (STp->block_size == 0 &&
STp1018drivers/scsi/st.ccount > (STp->buffer)->buffer_size &&
STp1019drivers/scsi/st.c!enlarge_buffer(STp->buffer, count))
STp1022drivers/scsi/st.cif (!(STp->do_read_ahead) && STp->block_size != 0 &&
STp1023drivers/scsi/st.c(count % STp->block_size) != 0)
STp1026drivers/scsi/st.cif (STp->do_auto_lock && STp->door_locked == ST_UNLOCKED &&
STp1028drivers/scsi/st.cSTp->door_locked = ST_LOCKED_AUTO;
STp1030drivers/scsi/st.cif (STp->rw == ST_WRITING) {
STp1034drivers/scsi/st.cSTp->rw = ST_READING;
STp1036drivers/scsi/st.cif (STp->moves_after_eof < 255)
STp1037drivers/scsi/st.cSTp->moves_after_eof++;
STp1040drivers/scsi/st.cif (debugging && STp->eof != ST_NOEOF)
STp1042drivers/scsi/st.c(STp->buffer)->buffer_bytes);
STp1044drivers/scsi/st.cif (((STp->buffer)->buffer_bytes == 0) &&
STp1045drivers/scsi/st.c(STp->eof == ST_EOM_OK || STp->eof == ST_EOD))
STp1048drivers/scsi/st.cSTp->rw = ST_READING;
STp1052drivers/scsi/st.cif ((STp->buffer)->buffer_bytes == 0 &&
STp1053drivers/scsi/st.cSTp->eof == ST_NOEOF) {
STp1057drivers/scsi/st.ccmd[1] = (STp->block_size != 0);
STp1058drivers/scsi/st.cif (STp->block_size == 0)
STp1061drivers/scsi/st.cif (STp->do_read_ahead) {
STp1062drivers/scsi/st.cblks = (STp->buffer)->buffer_blocks;
STp1063drivers/scsi/st.cbytes = blks * STp->block_size;
STp1067drivers/scsi/st.cif (bytes > (STp->buffer)->buffer_size)
STp1068drivers/scsi/st.cbytes = (STp->buffer)->buffer_size;
STp1069drivers/scsi/st.cblks = bytes / STp->block_size;
STp1070drivers/scsi/st.cbytes = blks * STp->block_size;
STp1077drivers/scsi/st.cSCpnt = st_do_scsi(SCpnt, STp, cmd, bytes, ST_TIMEOUT, MAX_RETRIES);
STp1081drivers/scsi/st.c(STp->buffer)->read_pointer = 0;
STp1082drivers/scsi/st.cSTp->eof_hit = 0;
STp1083drivers/scsi/st.cSTp->at_sm = 0;
STp1085drivers/scsi/st.cif ((STp->buffer)->last_result_fatal) {
STp1105drivers/scsi/st.cif (STp->block_size == 0 &&
STp1110drivers/scsi/st.cif (STp->block_size == 0) {
STp1113drivers/scsi/st.c(STp->buffer)->buffer_bytes = bytes - transfer;
STp1122drivers/scsi/st.cSTp->eof = ST_EOM_OK;
STp1123drivers/scsi/st.cif (STp->block_size == 0)
STp1124drivers/scsi/st.c(STp->buffer)->buffer_bytes = bytes - transfer;
STp1126drivers/scsi/st.c(STp->buffer)->buffer_bytes =
STp1127drivers/scsi/st.cbytes - transfer * STp->block_size;
STp1131drivers/scsi/st.c(STp->buffer)->buffer_bytes);
STp1135drivers/scsi/st.cSTp->eof = ST_FM;
STp1136drivers/scsi/st.cif (STp->block_size == 0)
STp1137drivers/scsi/st.c(STp->buffer)->buffer_bytes = 0;
STp1139drivers/scsi/st.c(STp->buffer)->buffer_bytes =
STp1140drivers/scsi/st.cbytes - transfer * STp->block_size;
STp1145drivers/scsi/st.cdev, (STp->buffer)->buffer_bytes, total);
STp1155drivers/scsi/st.cSTp->drv_block = (-1);
STp1158drivers/scsi/st.celse if (STp->moves_after_eof == 1 &&
STp1166drivers/scsi/st.cSTp->eof = ST_EOD;
STp1174drivers/scsi/st.ctransfer = (STp->buffer)->last_result_fatal;
STp1180drivers/scsi/st.c(STp->buffer)->buffer_bytes = bytes;
STp1182drivers/scsi/st.cif (STp->drv_block >= 0) {
STp1183drivers/scsi/st.cif (STp->block_size == 0)
STp1184drivers/scsi/st.cSTp->drv_block++;
STp1186drivers/scsi/st.cSTp->drv_block += (STp->buffer)->buffer_bytes / STp->block_size;
STp1192drivers/scsi/st.cif ((STp->buffer)->buffer_bytes > 0) {
STp1194drivers/scsi/st.cif (debugging && STp->eof != ST_NOEOF)
STp1196drivers/scsi/st.c(STp->buffer)->buffer_bytes, count - total);
STp1198drivers/scsi/st.ctransfer = (STp->buffer)->buffer_bytes < count - total ?
STp1199drivers/scsi/st.c(STp->buffer)->buffer_bytes : count - total;
STp1200drivers/scsi/st.cmemcpy_tofs(buf, (STp->buffer)->b_data +
STp1201drivers/scsi/st.c(STp->buffer)->read_pointer,transfer);
STp1205drivers/scsi/st.c(STp->buffer)->buffer_bytes -= transfer;
STp1206drivers/scsi/st.c(STp->buffer)->read_pointer += transfer;
STp1208drivers/scsi/st.celse if (STp->eof != ST_NOEOF) {
STp1209drivers/scsi/st.cSTp->eof_hit = 1;
STp1212drivers/scsi/st.cif (total == 0 && STp->eof == ST_FM) {
STp1213drivers/scsi/st.cSTp->eof = ST_NOEOF;
STp1214drivers/scsi/st.cSTp->drv_block = 0;
STp1215drivers/scsi/st.cif (STp->moves_after_eof > 1)
STp1216drivers/scsi/st.cSTp->moves_after_eof = 0;
STp1217drivers/scsi/st.cif ((STp->mt_status)->mt_fileno >= 0)
STp1218drivers/scsi/st.c(STp->mt_status)->mt_fileno++;
STp1220drivers/scsi/st.cif (total == 0 && STp->eof == ST_EOM_OK)
STp1225drivers/scsi/st.cif (STp->block_size == 0)
STp1243drivers/scsi/st.cScsi_Tape *STp;
STp1246drivers/scsi/st.cSTp = &(scsi_tapes[dev]);
STp1248drivers/scsi/st.cSTp->do_buffer_writes = (options & MT_ST_BUFFER_WRITES) != 0;
STp1249drivers/scsi/st.cSTp->do_async_writes  = (options & MT_ST_ASYNC_WRITES) != 0;
STp1250drivers/scsi/st.cSTp->do_read_ahead    = (options & MT_ST_READ_AHEAD) != 0;
STp1251drivers/scsi/st.cSTp->two_fm      = (options & MT_ST_TWO_FM) != 0;
STp1252drivers/scsi/st.cSTp->fast_mteom    = (options & MT_ST_FAST_MTEOM) != 0;
STp1253drivers/scsi/st.cSTp->do_auto_lock     = (options & MT_ST_AUTO_LOCK) != 0;
STp1258drivers/scsi/st.cdev, STp->do_buffer_writes, STp->do_async_writes, STp->do_read_ahead);
STp1261drivers/scsi/st.cdev, STp->two_fm, STp->fast_mteom, STp->do_auto_lock, debugging);
STp1271drivers/scsi/st.cSTp->write_threshold = value;
STp1274drivers/scsi/st.cSTp->write_threshold);
STp1294drivers/scsi/st.cScsi_Tape * STp;
STp1298drivers/scsi/st.cSTp = &(scsi_tapes[dev]);
STp1299drivers/scsi/st.cif (STp->ready != ST_READY && cmd_in != MTLOAD)
STp1301drivers/scsi/st.cfileno = (STp->mt_status)->mt_fileno ;
STp1302drivers/scsi/st.cblkno = STp->drv_block;
STp1303drivers/scsi/st.cat_sm = STp->at_sm;
STp1420drivers/scsi/st.cif (STp->write_prot)
STp1495drivers/scsi/st.cif (!STp->fast_mteom) {
STp1498drivers/scsi/st.cfileno = (STp->mt_status)->mt_fileno ;
STp1499drivers/scsi/st.cif (STp->eof == ST_EOD || STp->eof == ST_EOM_OK)
STp1518drivers/scsi/st.cif (STp->write_prot)
STp1551drivers/scsi/st.cif ((STp->device)->scsi_level < SCSI_2) {
STp1580drivers/scsi/st.cif (STp->dirty || (STp->buffer)->buffer_bytes != 0)
STp1584drivers/scsi/st.c(arg < STp->min_block || arg > STp->max_block ||
STp1592drivers/scsi/st.cmemset((STp->buffer)->b_data, 0, 12);
STp1594drivers/scsi/st.c(STp->buffer)->b_data[2] = (arg & 7) << 4;
STp1596drivers/scsi/st.c(STp->buffer)->b_data[2] = 
STp1597drivers/scsi/st.cSTp->drv_buffer << 4;
STp1598drivers/scsi/st.c(STp->buffer)->b_data[3] = 8;     /* block descriptor length */
STp1600drivers/scsi/st.c(STp->buffer)->b_data[4] = arg;
STp1602drivers/scsi/st.c(STp->buffer)->b_data[4] = STp->density;
STp1606drivers/scsi/st.cltmp = STp->block_size;
STp1607drivers/scsi/st.c(STp->buffer)->b_data[9] = (ltmp >> 16);
STp1608drivers/scsi/st.c(STp->buffer)->b_data[10] = (ltmp >> 8);
STp1609drivers/scsi/st.c(STp->buffer)->b_data[11] = ltmp;
STp1615drivers/scsi/st.c(STp->buffer)->b_data[9] * 65536 +
STp1616drivers/scsi/st.c(STp->buffer)->b_data[10] * 256 +
STp1617drivers/scsi/st.c(STp->buffer)->b_data[11]);
STp1620drivers/scsi/st.c(STp->buffer)->b_data[4]);
STp1623drivers/scsi/st.c((STp->buffer)->b_data[2] >> 4) & 7);
STp1631drivers/scsi/st.cSCpnt = st_do_scsi(NULL, STp, cmd, datalen, timeout, MAX_RETRIES);
STp1635drivers/scsi/st.cioctl_result = (STp->buffer)->last_result_fatal;
STp1640drivers/scsi/st.cSTp->moves_after_eof = 0;
STp1642drivers/scsi/st.cSTp->moves_after_eof = 1;
STp1645drivers/scsi/st.cSTp->drv_block = blkno;
STp1646drivers/scsi/st.c(STp->mt_status)->mt_fileno = fileno;
STp1647drivers/scsi/st.cSTp->at_sm = at_sm;
STp1650drivers/scsi/st.cSTp->drv_block = (STp->mt_status)->mt_fileno = (-1);
STp1651drivers/scsi/st.cSTp->at_sm = 0;
STp1654drivers/scsi/st.cSTp->door_locked = ST_LOCKED_EXPLICIT;
STp1656drivers/scsi/st.cSTp->door_locked = ST_UNLOCKED;
STp1662drivers/scsi/st.cSTp->block_size = arg;
STp1664drivers/scsi/st.c(STp->buffer)->buffer_blocks =
STp1665drivers/scsi/st.c(STp->buffer)->buffer_size / STp->block_size;
STp1666drivers/scsi/st.c(STp->buffer)->buffer_bytes = (STp->buffer)->read_pointer = 0;
STp1669drivers/scsi/st.cSTp->drv_buffer = (arg & 7);
STp1671drivers/scsi/st.cSTp->density = arg;
STp1673drivers/scsi/st.cSTp->eof = ST_EOD;
STp1674drivers/scsi/st.cSTp->eof_hit = 0;
STp1677drivers/scsi/st.cSTp->eof = ST_NOEOF;
STp1678drivers/scsi/st.cSTp->eof_hit = 0;
STp1681drivers/scsi/st.cSTp->rew_at_close = 0;
STp1683drivers/scsi/st.cSTp->rew_at_close = (MINOR(inode->i_rdev) & 0x80) == 0;
STp1689drivers/scsi/st.cSTp->eof = ST_EOM_OK;
STp1690drivers/scsi/st.cSTp->eof_hit = 0;
STp1691drivers/scsi/st.cSTp->drv_block = 0;
STp1700drivers/scsi/st.c(STp->mt_status)->mt_fileno = fileno - undone ;
STp1702drivers/scsi/st.c(STp->mt_status)->mt_fileno = fileno;
STp1703drivers/scsi/st.cSTp->drv_block = 0;
STp1706drivers/scsi/st.c(STp->mt_status)->mt_fileno = fileno + undone ;
STp1707drivers/scsi/st.cSTp->drv_block = 0;
STp1711drivers/scsi/st.c(STp->mt_status)->mt_fileno++;
STp1712drivers/scsi/st.cSTp->drv_block = 0;
STp1716drivers/scsi/st.cSTp->drv_block = blkno - undone;
STp1718drivers/scsi/st.cSTp->drv_block = (-1);
STp1723drivers/scsi/st.c(STp->mt_status)->mt_fileno--;
STp1724drivers/scsi/st.cSTp->drv_block = (-1);
STp1728drivers/scsi/st.cSTp->drv_block = blkno + undone;
STp1730drivers/scsi/st.cSTp->drv_block = (-1);
STp1734drivers/scsi/st.c(STp->mt_status)->mt_fileno = (-1);
STp1735drivers/scsi/st.cSTp->drv_block = (-1);
STp1737drivers/scsi/st.cif (STp->eof == ST_NOEOF &&
STp1739drivers/scsi/st.cSTp->eof = ST_EOD;
STp1741drivers/scsi/st.cSTp->door_locked = ST_LOCK_FAILS;
STp1759drivers/scsi/st.cScsi_Tape *STp;
STp1762drivers/scsi/st.cSTp = &(scsi_tapes[dev]);
STp1764drivers/scsi/st.cif (debugging && !STp->in_use) {
STp1776drivers/scsi/st.creturn scsi_ioctl(STp->device, cmd_in, (void *) arg);
STp1791drivers/scsi/st.cif (!(STp->device)->was_reset) {
STp1793drivers/scsi/st.cif (STp->eof_hit) {
STp1796drivers/scsi/st.c(STp->mt_status)->mt_fileno += 1;
STp1800drivers/scsi/st.c(STp->mt_status)->mt_fileno += 1;
STp1824drivers/scsi/st.cSTp->device->was_reset = 0;
STp1825drivers/scsi/st.cif (STp->door_locked != ST_UNLOCKED &&
STp1826drivers/scsi/st.cSTp->door_locked != ST_LOCK_FAILS) {
STp1830drivers/scsi/st.cSTp->door_locked = ST_UNLOCKED;
STp1838drivers/scsi/st.cSTp->rw = ST_IDLE;  /* Prevent automatic WEOF */
STp1840drivers/scsi/st.cif (mtc.mt_op == MTOFFL && STp->door_locked != ST_UNLOCKED)
STp1861drivers/scsi/st.c(STp->mt_status)->mt_dsreg =
STp1862drivers/scsi/st.c((STp->block_size << MT_ST_BLKSIZE_SHIFT) & MT_ST_BLKSIZE_MASK) |
STp1863drivers/scsi/st.c((STp->density << MT_ST_DENSITY_SHIFT) & MT_ST_DENSITY_MASK);
STp1864drivers/scsi/st.c(STp->mt_status)->mt_blkno = STp->drv_block;
STp1865drivers/scsi/st.cif (STp->block_size != 0) {
STp1866drivers/scsi/st.cif (STp->rw == ST_WRITING)
STp1867drivers/scsi/st.c(STp->mt_status)->mt_blkno +=
STp1868drivers/scsi/st.c(STp->buffer)->buffer_bytes / STp->block_size;
STp1869drivers/scsi/st.celse if (STp->rw == ST_READING)
STp1870drivers/scsi/st.c(STp->mt_status)->mt_blkno -= ((STp->buffer)->buffer_bytes +
STp1871drivers/scsi/st.cSTp->block_size - 1) / STp->block_size;
STp1874drivers/scsi/st.c(STp->mt_status)->mt_gstat = 0;
STp1875drivers/scsi/st.cif (STp->drv_write_prot)
STp1876drivers/scsi/st.c(STp->mt_status)->mt_gstat |= GMT_WR_PROT(0xffffffff);
STp1877drivers/scsi/st.cif ((STp->mt_status)->mt_blkno == 0) {
STp1878drivers/scsi/st.cif ((STp->mt_status)->mt_fileno == 0)
STp1879drivers/scsi/st.c(STp->mt_status)->mt_gstat |= GMT_BOT(0xffffffff);
STp1881drivers/scsi/st.c(STp->mt_status)->mt_gstat |= GMT_EOF(0xffffffff);
STp1883drivers/scsi/st.cif (STp->eof == ST_EOM_OK || STp->eof == ST_EOM_ERROR)
STp1884drivers/scsi/st.c(STp->mt_status)->mt_gstat |= GMT_EOT(0xffffffff);
STp1885drivers/scsi/st.celse if (STp->eof == ST_EOD)
STp1886drivers/scsi/st.c(STp->mt_status)->mt_gstat |= GMT_EOD(0xffffffff);
STp1887drivers/scsi/st.cif (STp->density == 1)
STp1888drivers/scsi/st.c(STp->mt_status)->mt_gstat |= GMT_D_800(0xffffffff);
STp1889drivers/scsi/st.celse if (STp->density == 2)
STp1890drivers/scsi/st.c(STp->mt_status)->mt_gstat |= GMT_D_1600(0xffffffff);
STp1891drivers/scsi/st.celse if (STp->density == 3)
STp1892drivers/scsi/st.c(STp->mt_status)->mt_gstat |= GMT_D_6250(0xffffffff);
STp1893drivers/scsi/st.cif (STp->ready == ST_READY)
STp1894drivers/scsi/st.c(STp->mt_status)->mt_gstat |= GMT_ONLINE(0xffffffff);
STp1895drivers/scsi/st.cif (STp->ready == ST_NO_TAPE)
STp1896drivers/scsi/st.c(STp->mt_status)->mt_gstat |= GMT_DR_OPEN(0xffffffff);
STp1897drivers/scsi/st.cif (STp->at_sm)
STp1898drivers/scsi/st.c(STp->mt_status)->mt_gstat |= GMT_SM(0xffffffff);
STp1900drivers/scsi/st.cmemcpy_tofs((char *)arg, (char *)(STp->mt_status),
STp1903drivers/scsi/st.c(STp->mt_status)->mt_erreg = 0;  /* Clear after read */
STp1907drivers/scsi/st.cif (STp->ready != ST_READY)
STp1925drivers/scsi/st.cif ((STp->device)->scsi_level < SCSI_2) {
STp1933drivers/scsi/st.cSCpnt = st_do_scsi(NULL, STp, scmd, 20, ST_TIMEOUT, MAX_READY_RETRIES);
STp1937drivers/scsi/st.cif ((STp->buffer)->last_result_fatal != 0) {
STp1947drivers/scsi/st.cif ((STp->device)->scsi_level < SCSI_2)
STp1948drivers/scsi/st.cmt_pos.mt_blkno = ((STp->buffer)->b_data[0] << 16) 
STp1949drivers/scsi/st.c+ ((STp->buffer)->b_data[1] << 8) 
STp1950drivers/scsi/st.c+ (STp->buffer)->b_data[2];
STp1952drivers/scsi/st.cmt_pos.mt_blkno = ((STp->buffer)->b_data[4] << 24)
STp1953drivers/scsi/st.c+ ((STp->buffer)->b_data[5] << 16) 
STp1954drivers/scsi/st.c+ ((STp->buffer)->b_data[6] << 8) 
STp1955drivers/scsi/st.c+ (STp->buffer)->b_data[7];
STp1965drivers/scsi/st.creturn scsi_ioctl(STp->device, cmd_in, (void *) arg);
STp2159drivers/scsi/st.cScsi_Tape * STp;
STp2193drivers/scsi/st.cSTp = &(scsi_tapes[i]);
STp2194drivers/scsi/st.cSTp->device = NULL;
STp2195drivers/scsi/st.cSTp->capacity = 0xfffff;
STp2196drivers/scsi/st.cSTp->dirty = 0;
STp2197drivers/scsi/st.cSTp->rw = ST_IDLE;
STp2198drivers/scsi/st.cSTp->eof = ST_NOEOF;
STp2199drivers/scsi/st.cSTp->waiting = NULL;
STp2200drivers/scsi/st.cSTp->in_use = 0;
STp2201drivers/scsi/st.cSTp->drv_buffer = 1;  /* Try buffering if no mode sense */
STp2202drivers/scsi/st.cSTp->density = 0;
STp2203drivers/scsi/st.cSTp->do_buffer_writes = ST_BUFFER_WRITES;
STp2204drivers/scsi/st.cSTp->do_async_writes = ST_ASYNC_WRITES;
STp2205drivers/scsi/st.cSTp->do_read_ahead = ST_READ_AHEAD;
STp2206drivers/scsi/st.cSTp->do_auto_lock = ST_AUTO_LOCK;
STp2207drivers/scsi/st.cSTp->two_fm = ST_TWO_FM;
STp2208drivers/scsi/st.cSTp->fast_mteom = ST_FAST_MTEOM;
STp2209drivers/scsi/st.cSTp->write_threshold = st_write_threshold;
STp2210drivers/scsi/st.cSTp->drv_block = 0;
STp2211drivers/scsi/st.cSTp->moves_after_eof = 1;
STp2212drivers/scsi/st.cSTp->at_sm = 0;
STp2213drivers/scsi/st.cSTp->mt_status = (struct mtget *) scsi_init_malloc(sizeof(struct mtget),