tag | line | file | source code |
STp | 187 | drivers/scsi/st.c | Scsi_Tape * STp; |
STp | 190 | drivers/scsi/st.c | STp = &(scsi_tapes[st_nbr]); |
STp | 191 | drivers/scsi/st.c | if ((STp->buffer)->writing && |
STp | 203 | drivers/scsi/st.c | (STp->buffer)->last_result = SCpnt->result; /* Error */ |
STp | 205 | drivers/scsi/st.c | (STp->buffer)->last_result = INT_MAX; /* OK */ |
STp | 208 | drivers/scsi/st.c | (STp->buffer)->last_result = SCpnt->result; |
STp | 209 | drivers/scsi/st.c | if ((STp->buffer)->writing) { |
STp | 211 | drivers/scsi/st.c | (STp->buffer)->last_result_fatal = st_chk_result(SCpnt); |
STp | 218 | drivers/scsi/st.c | STp->write_pending = 0; |
STp | 231 | drivers/scsi/st.c | st_do_scsi(Scsi_Cmnd *SCpnt, Scsi_Tape *STp, unsigned char *cmd, int bytes, |
STp | 235 | drivers/scsi/st.c | if ((SCpnt = allocate_device(NULL, STp->device, 1)) == NULL) { |
STp | 236 | drivers/scsi/st.c | printk(KERN_ERR "st%d: Can't get SCSI request.\n", TAPE_NR(STp->devt)); |
STp | 241 | drivers/scsi/st.c | STp->sem = MUTEX_LOCKED; |
STp | 242 | drivers/scsi/st.c | SCpnt->request.sem = &(STp->sem); |
STp | 244 | drivers/scsi/st.c | SCpnt->request.rq_dev = STp->devt; |
STp | 246 | drivers/scsi/st.c | scsi_do_cmd(SCpnt, (void *)cmd, (STp->buffer)->b_data, bytes, |
STp | 251 | drivers/scsi/st.c | (STp->buffer)->last_result_fatal = st_chk_result(SCpnt); |
STp | 259 | drivers/scsi/st.c | write_behind_check(Scsi_Tape *STp) |
STp | 263 | drivers/scsi/st.c | STbuffer = STp->buffer; |
STp | 266 | drivers/scsi/st.c | if (STp->write_pending) |
STp | 267 | drivers/scsi/st.c | STp->nbr_waits++; |
STp | 269 | drivers/scsi/st.c | STp->nbr_finished++; |
STp | 272 | drivers/scsi/st.c | down(&(STp->sem)); |
STp | 279 | drivers/scsi/st.c | if (STp->drv_block >= 0) { |
STp | 280 | drivers/scsi/st.c | if (STp->block_size == 0) |
STp | 281 | drivers/scsi/st.c | STp->drv_block++; |
STp | 283 | drivers/scsi/st.c | STp->drv_block += STbuffer->writing / STp->block_size; |
STp | 294 | drivers/scsi/st.c | back_over_eof(Scsi_Tape *STp) |
STp | 304 | drivers/scsi/st.c | SCpnt = st_do_scsi(NULL, STp, cmd, 0, ST_TIMEOUT, MAX_RETRIES); |
STp | 309 | drivers/scsi/st.c | if ((STp->buffer)->last_result != 0) { |
STp | 310 | drivers/scsi/st.c | printk(KERN_ERR "st%d: Backing over filemark failed.\n", TAPE_NR(STp->devt)); |
STp | 311 | drivers/scsi/st.c | if ((STp->mt_status)->mt_fileno >= 0) |
STp | 312 | drivers/scsi/st.c | (STp->mt_status)->mt_fileno += 1; |
STp | 313 | drivers/scsi/st.c | (STp->mt_status)->mt_blkno = 0; |
STp | 316 | drivers/scsi/st.c | return (STp->buffer)->last_result_fatal; |
STp | 322 | drivers/scsi/st.c | flush_write_buffer(Scsi_Tape *STp) |
STp | 329 | drivers/scsi/st.c | if ((STp->buffer)->writing) { |
STp | 330 | drivers/scsi/st.c | write_behind_check(STp); |
STp | 331 | drivers/scsi/st.c | if ((STp->buffer)->last_result_fatal) { |
STp | 335 | drivers/scsi/st.c | TAPE_NR(STp->devt), (STp->buffer)->last_result); |
STp | 337 | drivers/scsi/st.c | if ((STp->buffer)->last_result == INT_MAX) |
STp | 343 | drivers/scsi/st.c | if (STp->block_size == 0) |
STp | 347 | drivers/scsi/st.c | if (STp->dirty == 1) { |
STp | 349 | drivers/scsi/st.c | offset = (STp->buffer)->buffer_bytes; |
STp | 350 | drivers/scsi/st.c | transfer = ((offset + STp->block_size - 1) / |
STp | 351 | drivers/scsi/st.c | STp->block_size) * STp->block_size; |
STp | 354 | drivers/scsi/st.c | printk(ST_DEB_MSG "st%d: Flushing %d bytes.\n", TAPE_NR(STp->devt), transfer); |
STp | 356 | drivers/scsi/st.c | memset((STp->buffer)->b_data + offset, 0, transfer - offset); |
STp | 361 | drivers/scsi/st.c | blks = transfer / STp->block_size; |
STp | 366 | drivers/scsi/st.c | SCpnt = st_do_scsi(NULL, STp, cmd, transfer, ST_TIMEOUT, MAX_WRITE_RETRIES); |
STp | 370 | drivers/scsi/st.c | if ((STp->buffer)->last_result_fatal != 0) { |
STp | 371 | drivers/scsi/st.c | printk(KERN_ERR "st%d: Error on flush.\n", TAPE_NR(STp->devt)); |
STp | 375 | drivers/scsi/st.c | STp->dirty = 0; |
STp | 376 | drivers/scsi/st.c | (STp->buffer)->buffer_bytes = 0; |
STp | 381 | drivers/scsi/st.c | STp->drv_block = (-1); |
STp | 384 | drivers/scsi/st.c | if (STp->drv_block >= 0) |
STp | 385 | drivers/scsi/st.c | STp->drv_block += blks; |
STp | 386 | drivers/scsi/st.c | STp->dirty = 0; |
STp | 387 | drivers/scsi/st.c | (STp->buffer)->buffer_bytes = 0; |
STp | 401 | drivers/scsi/st.c | Scsi_Tape * STp; |
STp | 405 | drivers/scsi/st.c | STp = &(scsi_tapes[dev]); |
STp | 406 | drivers/scsi/st.c | STbuffer = STp->buffer; |
STp | 412 | drivers/scsi/st.c | if( STp->device->was_reset ) |
STp | 415 | drivers/scsi/st.c | if (STp->ready != ST_READY) |
STp | 418 | drivers/scsi/st.c | if (STp->rw == ST_WRITING) /* Writing */ |
STp | 419 | drivers/scsi/st.c | return flush_write_buffer(STp); |
STp | 421 | drivers/scsi/st.c | if (STp->block_size == 0) |
STp | 424 | drivers/scsi/st.c | backspace = ((STp->buffer)->buffer_bytes + |
STp | 425 | drivers/scsi/st.c | (STp->buffer)->read_pointer) / STp->block_size - |
STp | 426 | drivers/scsi/st.c | ((STp->buffer)->read_pointer + STp->block_size - 1) / |
STp | 427 | drivers/scsi/st.c | STp->block_size; |
STp | 428 | drivers/scsi/st.c | (STp->buffer)->buffer_bytes = 0; |
STp | 429 | drivers/scsi/st.c | (STp->buffer)->read_pointer = 0; |
STp | 432 | drivers/scsi/st.c | if ((STp->eof == ST_FM) && !STp->eof_hit) { |
STp | 433 | drivers/scsi/st.c | result = back_over_eof(STp); /* Back over the EOF hit */ |
STp | 435 | drivers/scsi/st.c | STp->eof = ST_NOEOF; |
STp | 436 | drivers/scsi/st.c | STp->eof_hit = 0; |
STp | 442 | drivers/scsi/st.c | else if ((STp->eof == ST_FM) && !STp->eof_hit) { |
STp | 443 | drivers/scsi/st.c | (STp->mt_status)->mt_fileno++; |
STp | 444 | drivers/scsi/st.c | STp->drv_block = 0; |
STp | 460 | drivers/scsi/st.c | Scsi_Tape * STp; |
STp | 465 | drivers/scsi/st.c | STp = &(scsi_tapes[dev]); |
STp | 466 | drivers/scsi/st.c | if (STp->in_use) { |
STp | 472 | drivers/scsi/st.c | STp->rew_at_close = (MINOR(inode->i_rdev) & 0x80) == 0; |
STp | 475 | drivers/scsi/st.c | need_dma_buffer = STp->restr_dma; |
STp | 481 | drivers/scsi/st.c | STp->buffer = new_tape_buffer(FALSE, need_dma_buffer); |
STp | 482 | drivers/scsi/st.c | if (STp->buffer == NULL) { |
STp | 488 | drivers/scsi/st.c | STp->buffer = st_buffers[i]; |
STp | 489 | drivers/scsi/st.c | (STp->buffer)->in_use = 1; |
STp | 490 | drivers/scsi/st.c | (STp->buffer)->writing = 0; |
STp | 491 | drivers/scsi/st.c | STp->in_use = 1; |
STp | 494 | drivers/scsi/st.c | STp->write_prot = ((flags & O_ACCMODE) == O_RDONLY); |
STp | 496 | drivers/scsi/st.c | STp->dirty = 0; |
STp | 497 | drivers/scsi/st.c | STp->rw = ST_IDLE; |
STp | 498 | drivers/scsi/st.c | STp->ready = ST_READY; |
STp | 499 | drivers/scsi/st.c | if (STp->eof != ST_EOD) /* Save EOD across opens */ |
STp | 500 | drivers/scsi/st.c | STp->eof = ST_NOEOF; |
STp | 501 | drivers/scsi/st.c | STp->eof_hit = 0; |
STp | 502 | drivers/scsi/st.c | STp->recover_count = 0; |
STp | 504 | drivers/scsi/st.c | STp->nbr_waits = STp->nbr_finished = 0; |
STp | 510 | drivers/scsi/st.c | SCpnt = st_do_scsi(NULL, STp, cmd, 0, ST_LONG_TIMEOUT, MAX_READY_RETRIES); |
STp | 516 | drivers/scsi/st.c | (STp->mt_status)->mt_fileno = 0 ; |
STp | 520 | drivers/scsi/st.c | SCpnt = st_do_scsi(SCpnt, STp, cmd, 0, ST_LONG_TIMEOUT, MAX_READY_RETRIES); |
STp | 522 | drivers/scsi/st.c | (STp->mt_status)->mt_fileno = STp->drv_block = 0; |
STp | 523 | drivers/scsi/st.c | STp->eof = ST_NOEOF; |
STp | 524 | drivers/scsi/st.c | (STp->device)->was_reset = 0; |
STp | 527 | drivers/scsi/st.c | if ((STp->buffer)->last_result_fatal != 0) { |
STp | 530 | drivers/scsi/st.c | (STp->mt_status)->mt_fileno = STp->drv_block = 0 ; |
STp | 532 | drivers/scsi/st.c | STp->ready = ST_NO_TAPE; |
STp | 534 | drivers/scsi/st.c | (STp->mt_status)->mt_fileno = STp->drv_block = (-1); |
STp | 535 | drivers/scsi/st.c | STp->ready = ST_NOT_READY; |
STp | 538 | drivers/scsi/st.c | STp->density = 0; /* Clear the erroneous "residue" */ |
STp | 539 | drivers/scsi/st.c | STp->write_prot = 0; |
STp | 540 | drivers/scsi/st.c | STp->block_size = 0; |
STp | 541 | drivers/scsi/st.c | STp->eof = ST_NOEOF; |
STp | 542 | drivers/scsi/st.c | (STp->mt_status)->mt_fileno = STp->drv_block = 0; |
STp | 543 | drivers/scsi/st.c | STp->door_locked = ST_UNLOCKED; |
STp | 553 | drivers/scsi/st.c | SCpnt = st_do_scsi(SCpnt, STp, cmd, 6, ST_TIMEOUT, MAX_READY_RETRIES); |
STp | 556 | drivers/scsi/st.c | STp->max_block = ((STp->buffer)->b_data[1] << 16) | |
STp | 557 | drivers/scsi/st.c | ((STp->buffer)->b_data[2] << 8) | (STp->buffer)->b_data[3]; |
STp | 558 | drivers/scsi/st.c | STp->min_block = ((STp->buffer)->b_data[4] << 8) | |
STp | 559 | drivers/scsi/st.c | (STp->buffer)->b_data[5]; |
STp | 562 | drivers/scsi/st.c | printk(ST_DEB_MSG "st%d: Block limits %d - %d bytes.\n", dev, STp->min_block, |
STp | 563 | drivers/scsi/st.c | STp->max_block); |
STp | 567 | drivers/scsi/st.c | STp->min_block = STp->max_block = (-1); |
STp | 578 | drivers/scsi/st.c | SCpnt = st_do_scsi(SCpnt, STp, cmd, 12, ST_TIMEOUT, MAX_READY_RETRIES); |
STp | 580 | drivers/scsi/st.c | if ((STp->buffer)->last_result_fatal != 0) { |
STp | 585 | drivers/scsi/st.c | STp->block_size = ST_DEFAULT_BLOCK; /* Educated guess (?) */ |
STp | 586 | drivers/scsi/st.c | (STp->buffer)->last_result_fatal = 0; /* Prevent error propagation */ |
STp | 587 | drivers/scsi/st.c | STp->drv_write_prot = 0; |
STp | 595 | drivers/scsi/st.c | (STp->buffer)->b_data[0], (STp->buffer)->b_data[1], |
STp | 596 | drivers/scsi/st.c | (STp->buffer)->b_data[2], (STp->buffer)->b_data[3]); |
STp | 599 | drivers/scsi/st.c | if ((STp->buffer)->b_data[3] >= 8) { |
STp | 600 | drivers/scsi/st.c | STp->drv_buffer = ((STp->buffer)->b_data[2] >> 4) & 7; |
STp | 601 | drivers/scsi/st.c | STp->density = (STp->buffer)->b_data[4]; |
STp | 602 | drivers/scsi/st.c | STp->block_size = (STp->buffer)->b_data[9] * 65536 + |
STp | 603 | drivers/scsi/st.c | (STp->buffer)->b_data[10] * 256 + (STp->buffer)->b_data[11]; |
STp | 607 | drivers/scsi/st.c | dev, STp->density, (STp->buffer)->b_data[5] * 65536 + |
STp | 608 | drivers/scsi/st.c | (STp->buffer)->b_data[6] * 256 + (STp->buffer)->b_data[7], |
STp | 609 | drivers/scsi/st.c | STp->drv_buffer); |
STp | 613 | drivers/scsi/st.c | if (STp->block_size > (STp->buffer)->buffer_size && |
STp | 614 | drivers/scsi/st.c | !enlarge_buffer(STp->buffer, STp->block_size, STp->restr_dma)) { |
STp | 616 | drivers/scsi/st.c | STp->block_size); |
STp | 617 | drivers/scsi/st.c | (STp->buffer)->in_use = 0; |
STp | 618 | drivers/scsi/st.c | STp->in_use = 0; |
STp | 621 | drivers/scsi/st.c | STp->drv_write_prot = ((STp->buffer)->b_data[2] & 0x80) != 0; |
STp | 625 | drivers/scsi/st.c | if (STp->block_size > 0) |
STp | 626 | drivers/scsi/st.c | (STp->buffer)->buffer_blocks = st_buffer_size / STp->block_size; |
STp | 628 | drivers/scsi/st.c | (STp->buffer)->buffer_blocks = 1; |
STp | 629 | drivers/scsi/st.c | (STp->buffer)->buffer_bytes = (STp->buffer)->read_pointer = 0; |
STp | 634 | drivers/scsi/st.c | STp->block_size, (STp->buffer)->buffer_size, |
STp | 635 | drivers/scsi/st.c | (STp->buffer)->buffer_blocks); |
STp | 638 | drivers/scsi/st.c | if (STp->drv_write_prot) { |
STp | 639 | drivers/scsi/st.c | STp->write_prot = 1; |
STp | 645 | drivers/scsi/st.c | (STp->buffer)->in_use = 0; |
STp | 646 | drivers/scsi/st.c | STp->buffer = 0; |
STp | 647 | drivers/scsi/st.c | STp->in_use = 0; |
STp | 667 | drivers/scsi/st.c | Scsi_Tape * STp; |
STp | 672 | drivers/scsi/st.c | STp = &(scsi_tapes[dev]); |
STp | 674 | drivers/scsi/st.c | if ( STp->rw == ST_WRITING && !(STp->device)->was_reset) { |
STp | 676 | drivers/scsi/st.c | result = flush_write_buffer(STp); |
STp | 683 | drivers/scsi/st.c | dev, STp->nbr_waits, STp->nbr_finished); |
STp | 691 | drivers/scsi/st.c | cmd[4] = 1 + STp->two_fm; |
STp | 693 | drivers/scsi/st.c | SCpnt = st_do_scsi(NULL, STp, cmd, 0, ST_TIMEOUT, MAX_WRITE_RETRIES); |
STp | 699 | drivers/scsi/st.c | if ((STp->buffer)->last_result_fatal != 0) |
STp | 702 | drivers/scsi/st.c | if ((STp->mt_status)->mt_fileno >= 0) |
STp | 703 | drivers/scsi/st.c | (STp->mt_status)->mt_fileno++ ; |
STp | 704 | drivers/scsi/st.c | STp->drv_block = 0; |
STp | 705 | drivers/scsi/st.c | if (STp->two_fm) |
STp | 706 | drivers/scsi/st.c | back_over_eof(STp); |
STp | 716 | drivers/scsi/st.c | else if (!STp->rew_at_close) { |
STp | 720 | drivers/scsi/st.c | if ((STp->eof == ST_FM) && !STp->eof_hit) |
STp | 721 | drivers/scsi/st.c | back_over_eof(STp); |
STp | 725 | drivers/scsi/st.c | if (STp->rew_at_close) |
STp | 728 | drivers/scsi/st.c | if (STp->door_locked == ST_LOCKED_AUTO) |
STp | 731 | drivers/scsi/st.c | if (STp->buffer != NULL) { |
STp | 732 | drivers/scsi/st.c | normalize_buffer(STp->buffer); |
STp | 733 | drivers/scsi/st.c | (STp->buffer)->in_use = 0; |
STp | 735 | drivers/scsi/st.c | STp->in_use = 0; |
STp | 755 | drivers/scsi/st.c | Scsi_Tape * STp; |
STp | 758 | drivers/scsi/st.c | STp = &(scsi_tapes[dev]); |
STp | 759 | drivers/scsi/st.c | if (STp->ready != ST_READY) |
STp | 766 | drivers/scsi/st.c | if( STp->device->was_reset ) |
STp | 770 | drivers/scsi/st.c | if (!STp->in_use) { |
STp | 776 | drivers/scsi/st.c | if (STp->write_prot) |
STp | 779 | drivers/scsi/st.c | if (STp->block_size == 0 && |
STp | 780 | drivers/scsi/st.c | count > (STp->buffer)->buffer_size && |
STp | 781 | drivers/scsi/st.c | !enlarge_buffer(STp->buffer, count, STp->restr_dma)) |
STp | 784 | drivers/scsi/st.c | if (STp->do_auto_lock && STp->door_locked == ST_UNLOCKED && |
STp | 786 | drivers/scsi/st.c | STp->door_locked = ST_LOCKED_AUTO; |
STp | 788 | drivers/scsi/st.c | if (STp->rw == ST_READING) { |
STp | 792 | drivers/scsi/st.c | STp->rw = ST_WRITING; |
STp | 795 | drivers/scsi/st.c | if (STp->moves_after_eof < 255) |
STp | 796 | drivers/scsi/st.c | STp->moves_after_eof++; |
STp | 798 | drivers/scsi/st.c | if ((STp->buffer)->writing) { |
STp | 799 | drivers/scsi/st.c | write_behind_check(STp); |
STp | 800 | drivers/scsi/st.c | if ((STp->buffer)->last_result_fatal) { |
STp | 804 | drivers/scsi/st.c | (STp->buffer)->last_result); |
STp | 806 | drivers/scsi/st.c | if ((STp->buffer)->last_result == INT_MAX) { |
STp | 808 | drivers/scsi/st.c | STp->eof = ST_EOM_OK; |
STp | 815 | drivers/scsi/st.c | if (STp->eof == ST_EOM_OK) |
STp | 817 | drivers/scsi/st.c | else if (STp->eof == ST_EOM_ERROR) |
STp | 820 | drivers/scsi/st.c | if (!STp->do_buffer_writes) { |
STp | 821 | drivers/scsi/st.c | if (STp->block_size != 0 && (count % STp->block_size) != 0) |
STp | 826 | drivers/scsi/st.c | write_threshold = (STp->buffer)->buffer_blocks * STp->block_size; |
STp | 827 | drivers/scsi/st.c | if (!STp->do_async_writes) |
STp | 834 | drivers/scsi/st.c | cmd[1] = (STp->block_size != 0); |
STp | 836 | drivers/scsi/st.c | STp->rw = ST_WRITING; |
STp | 839 | drivers/scsi/st.c | while((STp->block_size == 0 && !STp->do_async_writes && count > 0) || |
STp | 840 | drivers/scsi/st.c | (STp->block_size != 0 && |
STp | 841 | drivers/scsi/st.c | (STp->buffer)->buffer_bytes + count > write_threshold)) |
STp | 844 | drivers/scsi/st.c | if (STp->block_size == 0) |
STp | 847 | drivers/scsi/st.c | do_count = (STp->buffer)->buffer_blocks * STp->block_size - |
STp | 848 | drivers/scsi/st.c | (STp->buffer)->buffer_bytes; |
STp | 852 | drivers/scsi/st.c | memcpy_fromfs((STp->buffer)->b_data + |
STp | 853 | drivers/scsi/st.c | (STp->buffer)->buffer_bytes, b_point, do_count); |
STp | 855 | drivers/scsi/st.c | if (STp->block_size == 0) |
STp | 858 | drivers/scsi/st.c | blks = ((STp->buffer)->buffer_bytes + do_count) / |
STp | 859 | drivers/scsi/st.c | STp->block_size; |
STp | 860 | drivers/scsi/st.c | transfer = blks * STp->block_size; |
STp | 866 | drivers/scsi/st.c | SCpnt = st_do_scsi(SCpnt, STp, cmd, transfer, ST_TIMEOUT, MAX_WRITE_RETRIES); |
STp | 870 | drivers/scsi/st.c | if ((STp->buffer)->last_result_fatal != 0) { |
STp | 877 | drivers/scsi/st.c | if (STp->block_size != 0 && (SCpnt->sense_buffer[0] & 0x80) != 0) |
STp | 881 | drivers/scsi/st.c | else if (STp->block_size == 0 && |
STp | 886 | drivers/scsi/st.c | if (STp->block_size != 0) |
STp | 887 | drivers/scsi/st.c | transfer *= STp->block_size; |
STp | 891 | drivers/scsi/st.c | if (STp->drv_block >= 0) { |
STp | 892 | drivers/scsi/st.c | if (STp->block_size == 0 && transfer < do_count) |
STp | 893 | drivers/scsi/st.c | STp->drv_block++; |
STp | 894 | drivers/scsi/st.c | else if (STp->block_size != 0) |
STp | 895 | drivers/scsi/st.c | STp->drv_block += (do_count - transfer) / STp->block_size; |
STp | 897 | drivers/scsi/st.c | STp->eof = ST_EOM_OK; |
STp | 906 | drivers/scsi/st.c | STp->eof = ST_EOM_ERROR; |
STp | 907 | drivers/scsi/st.c | STp->drv_block = (-1); /* Too cautious? */ |
STp | 916 | drivers/scsi/st.c | STp->drv_block = (-1); /* Too cautious? */ |
STp | 921 | drivers/scsi/st.c | (STp->buffer)->buffer_bytes = 0; |
STp | 922 | drivers/scsi/st.c | STp->dirty = 0; |
STp | 931 | drivers/scsi/st.c | if (STp->drv_block >= 0) { |
STp | 932 | drivers/scsi/st.c | if (STp->block_size == 0) |
STp | 933 | drivers/scsi/st.c | STp->drv_block++; |
STp | 935 | drivers/scsi/st.c | STp->drv_block += blks; |
STp | 937 | drivers/scsi/st.c | (STp->buffer)->buffer_bytes = 0; |
STp | 938 | drivers/scsi/st.c | STp->dirty = 0; |
STp | 941 | drivers/scsi/st.c | STp->dirty = 1; |
STp | 942 | drivers/scsi/st.c | memcpy_fromfs((STp->buffer)->b_data + |
STp | 943 | drivers/scsi/st.c | (STp->buffer)->buffer_bytes,b_point,count); |
STp | 945 | drivers/scsi/st.c | (STp->buffer)->buffer_bytes += count; |
STp | 949 | drivers/scsi/st.c | if (doing_write && (STp->buffer)->last_result_fatal != 0) { |
STp | 951 | drivers/scsi/st.c | return (STp->buffer)->last_result_fatal; |
STp | 954 | drivers/scsi/st.c | if (STp->do_async_writes && |
STp | 955 | drivers/scsi/st.c | ((STp->buffer)->buffer_bytes >= STp->write_threshold || |
STp | 956 | drivers/scsi/st.c | STp->block_size == 0) ) { |
STp | 959 | drivers/scsi/st.c | SCpnt = allocate_device(NULL, STp->device, 1); |
STp | 963 | drivers/scsi/st.c | if (STp->block_size == 0) |
STp | 964 | drivers/scsi/st.c | (STp->buffer)->writing = (STp->buffer)->buffer_bytes; |
STp | 966 | drivers/scsi/st.c | (STp->buffer)->writing = ((STp->buffer)->buffer_bytes / |
STp | 967 | drivers/scsi/st.c | STp->block_size) * STp->block_size; |
STp | 968 | drivers/scsi/st.c | STp->dirty = !((STp->buffer)->writing == |
STp | 969 | drivers/scsi/st.c | (STp->buffer)->buffer_bytes); |
STp | 971 | drivers/scsi/st.c | if (STp->block_size == 0) |
STp | 972 | drivers/scsi/st.c | blks = (STp->buffer)->writing; |
STp | 974 | drivers/scsi/st.c | blks = (STp->buffer)->writing / STp->block_size; |
STp | 978 | drivers/scsi/st.c | STp->sem = MUTEX_LOCKED; |
STp | 979 | drivers/scsi/st.c | SCpnt->request.sem = &(STp->sem); |
STp | 981 | drivers/scsi/st.c | SCpnt->request.rq_dev = STp->devt; |
STp | 983 | drivers/scsi/st.c | STp->write_pending = 1; |
STp | 987 | drivers/scsi/st.c | (void *) cmd, (STp->buffer)->b_data, |
STp | 988 | drivers/scsi/st.c | (STp->buffer)->writing, |
STp | 994 | drivers/scsi/st.c | STp->at_sm &= (total != 0); |
STp | 1007 | drivers/scsi/st.c | Scsi_Tape * STp; |
STp | 1010 | drivers/scsi/st.c | STp = &(scsi_tapes[dev]); |
STp | 1011 | drivers/scsi/st.c | if (STp->ready != ST_READY) |
STp | 1014 | drivers/scsi/st.c | if (!STp->in_use) { |
STp | 1020 | drivers/scsi/st.c | if (STp->block_size == 0 && |
STp | 1021 | drivers/scsi/st.c | count > (STp->buffer)->buffer_size && |
STp | 1022 | drivers/scsi/st.c | !enlarge_buffer(STp->buffer, count, STp->restr_dma)) |
STp | 1025 | drivers/scsi/st.c | if (!(STp->do_read_ahead) && STp->block_size != 0 && |
STp | 1026 | drivers/scsi/st.c | (count % STp->block_size) != 0) |
STp | 1029 | drivers/scsi/st.c | if (STp->do_auto_lock && STp->door_locked == ST_UNLOCKED && |
STp | 1031 | drivers/scsi/st.c | STp->door_locked = ST_LOCKED_AUTO; |
STp | 1033 | drivers/scsi/st.c | if (STp->rw == ST_WRITING) { |
STp | 1037 | drivers/scsi/st.c | STp->rw = ST_READING; |
STp | 1039 | drivers/scsi/st.c | if (STp->moves_after_eof < 255) |
STp | 1040 | drivers/scsi/st.c | STp->moves_after_eof++; |
STp | 1043 | drivers/scsi/st.c | if (debugging && STp->eof != ST_NOEOF) |
STp | 1045 | drivers/scsi/st.c | (STp->buffer)->buffer_bytes); |
STp | 1047 | drivers/scsi/st.c | if (((STp->buffer)->buffer_bytes == 0) && |
STp | 1048 | drivers/scsi/st.c | (STp->eof == ST_EOM_OK || STp->eof == ST_EOD)) |
STp | 1051 | drivers/scsi/st.c | STp->rw = ST_READING; |
STp | 1055 | drivers/scsi/st.c | if ((STp->buffer)->buffer_bytes == 0 && |
STp | 1056 | drivers/scsi/st.c | STp->eof == ST_NOEOF) { |
STp | 1060 | drivers/scsi/st.c | cmd[1] = (STp->block_size != 0); |
STp | 1061 | drivers/scsi/st.c | if (STp->block_size == 0) |
STp | 1064 | drivers/scsi/st.c | if (STp->do_read_ahead) { |
STp | 1065 | drivers/scsi/st.c | blks = (STp->buffer)->buffer_blocks; |
STp | 1066 | drivers/scsi/st.c | bytes = blks * STp->block_size; |
STp | 1070 | drivers/scsi/st.c | if (bytes > (STp->buffer)->buffer_size) |
STp | 1071 | drivers/scsi/st.c | bytes = (STp->buffer)->buffer_size; |
STp | 1072 | drivers/scsi/st.c | blks = bytes / STp->block_size; |
STp | 1073 | drivers/scsi/st.c | bytes = blks * STp->block_size; |
STp | 1080 | drivers/scsi/st.c | SCpnt = st_do_scsi(SCpnt, STp, cmd, bytes, ST_TIMEOUT, MAX_RETRIES); |
STp | 1084 | drivers/scsi/st.c | (STp->buffer)->read_pointer = 0; |
STp | 1085 | drivers/scsi/st.c | STp->eof_hit = 0; |
STp | 1086 | drivers/scsi/st.c | STp->at_sm = 0; |
STp | 1088 | drivers/scsi/st.c | if ((STp->buffer)->last_result_fatal) { |
STp | 1108 | drivers/scsi/st.c | if (STp->block_size == 0 && |
STp | 1113 | drivers/scsi/st.c | if (STp->block_size == 0) { |
STp | 1116 | drivers/scsi/st.c | (STp->buffer)->buffer_bytes = bytes - transfer; |
STp | 1125 | drivers/scsi/st.c | STp->eof = ST_EOM_OK; |
STp | 1126 | drivers/scsi/st.c | if (STp->block_size == 0) |
STp | 1127 | drivers/scsi/st.c | (STp->buffer)->buffer_bytes = bytes - transfer; |
STp | 1129 | drivers/scsi/st.c | (STp->buffer)->buffer_bytes = |
STp | 1130 | drivers/scsi/st.c | bytes - transfer * STp->block_size; |
STp | 1134 | drivers/scsi/st.c | (STp->buffer)->buffer_bytes); |
STp | 1138 | drivers/scsi/st.c | STp->eof = ST_FM; |
STp | 1139 | drivers/scsi/st.c | if (STp->block_size == 0) |
STp | 1140 | drivers/scsi/st.c | (STp->buffer)->buffer_bytes = 0; |
STp | 1142 | drivers/scsi/st.c | (STp->buffer)->buffer_bytes = |
STp | 1143 | drivers/scsi/st.c | bytes - transfer * STp->block_size; |
STp | 1148 | drivers/scsi/st.c | dev, (STp->buffer)->buffer_bytes, total); |
STp | 1158 | drivers/scsi/st.c | STp->drv_block = (-1); |
STp | 1161 | drivers/scsi/st.c | else if (STp->moves_after_eof == 1 && |
STp | 1169 | drivers/scsi/st.c | STp->eof = ST_EOD; |
STp | 1177 | drivers/scsi/st.c | transfer = (STp->buffer)->last_result_fatal; |
STp | 1183 | drivers/scsi/st.c | (STp->buffer)->buffer_bytes = bytes; |
STp | 1185 | drivers/scsi/st.c | if (STp->drv_block >= 0) { |
STp | 1186 | drivers/scsi/st.c | if (STp->block_size == 0) |
STp | 1187 | drivers/scsi/st.c | STp->drv_block++; |
STp | 1189 | drivers/scsi/st.c | STp->drv_block += (STp->buffer)->buffer_bytes / STp->block_size; |
STp | 1195 | drivers/scsi/st.c | if ((STp->buffer)->buffer_bytes > 0) { |
STp | 1197 | drivers/scsi/st.c | if (debugging && STp->eof != ST_NOEOF) |
STp | 1199 | drivers/scsi/st.c | (STp->buffer)->buffer_bytes, count - total); |
STp | 1201 | drivers/scsi/st.c | transfer = (STp->buffer)->buffer_bytes < count - total ? |
STp | 1202 | drivers/scsi/st.c | (STp->buffer)->buffer_bytes : count - total; |
STp | 1203 | drivers/scsi/st.c | memcpy_tofs(buf, (STp->buffer)->b_data + |
STp | 1204 | drivers/scsi/st.c | (STp->buffer)->read_pointer,transfer); |
STp | 1208 | drivers/scsi/st.c | (STp->buffer)->buffer_bytes -= transfer; |
STp | 1209 | drivers/scsi/st.c | (STp->buffer)->read_pointer += transfer; |
STp | 1211 | drivers/scsi/st.c | else if (STp->eof != ST_NOEOF) { |
STp | 1212 | drivers/scsi/st.c | STp->eof_hit = 1; |
STp | 1215 | drivers/scsi/st.c | if (total == 0 && STp->eof == ST_FM) { |
STp | 1216 | drivers/scsi/st.c | STp->eof = ST_NOEOF; |
STp | 1217 | drivers/scsi/st.c | STp->drv_block = 0; |
STp | 1218 | drivers/scsi/st.c | if (STp->moves_after_eof > 1) |
STp | 1219 | drivers/scsi/st.c | STp->moves_after_eof = 0; |
STp | 1220 | drivers/scsi/st.c | if ((STp->mt_status)->mt_fileno >= 0) |
STp | 1221 | drivers/scsi/st.c | (STp->mt_status)->mt_fileno++; |
STp | 1223 | drivers/scsi/st.c | if (total == 0 && STp->eof == ST_EOM_OK) |
STp | 1228 | drivers/scsi/st.c | if (STp->block_size == 0) |
STp | 1246 | drivers/scsi/st.c | Scsi_Tape *STp; |
STp | 1249 | drivers/scsi/st.c | STp = &(scsi_tapes[dev]); |
STp | 1251 | drivers/scsi/st.c | STp->do_buffer_writes = (options & MT_ST_BUFFER_WRITES) != 0; |
STp | 1252 | drivers/scsi/st.c | STp->do_async_writes = (options & MT_ST_ASYNC_WRITES) != 0; |
STp | 1253 | drivers/scsi/st.c | STp->do_read_ahead = (options & MT_ST_READ_AHEAD) != 0; |
STp | 1254 | drivers/scsi/st.c | STp->two_fm = (options & MT_ST_TWO_FM) != 0; |
STp | 1255 | drivers/scsi/st.c | STp->fast_mteom = (options & MT_ST_FAST_MTEOM) != 0; |
STp | 1256 | drivers/scsi/st.c | STp->do_auto_lock = (options & MT_ST_AUTO_LOCK) != 0; |
STp | 1261 | drivers/scsi/st.c | dev, STp->do_buffer_writes, STp->do_async_writes, STp->do_read_ahead); |
STp | 1264 | drivers/scsi/st.c | dev, STp->two_fm, STp->fast_mteom, STp->do_auto_lock, debugging); |
STp | 1274 | drivers/scsi/st.c | STp->write_threshold = value; |
STp | 1277 | drivers/scsi/st.c | STp->write_threshold); |
STp | 1297 | drivers/scsi/st.c | Scsi_Tape * STp; |
STp | 1301 | drivers/scsi/st.c | STp = &(scsi_tapes[dev]); |
STp | 1302 | drivers/scsi/st.c | if (STp->ready != ST_READY && cmd_in != MTLOAD) |
STp | 1304 | drivers/scsi/st.c | fileno = (STp->mt_status)->mt_fileno ; |
STp | 1305 | drivers/scsi/st.c | blkno = STp->drv_block; |
STp | 1306 | drivers/scsi/st.c | at_sm = STp->at_sm; |
STp | 1423 | drivers/scsi/st.c | if (STp->write_prot) |
STp | 1498 | drivers/scsi/st.c | if (!STp->fast_mteom) { |
STp | 1501 | drivers/scsi/st.c | fileno = (STp->mt_status)->mt_fileno ; |
STp | 1502 | drivers/scsi/st.c | if (STp->eof == ST_EOD || STp->eof == ST_EOM_OK) |
STp | 1521 | drivers/scsi/st.c | if (STp->write_prot) |
STp | 1554 | drivers/scsi/st.c | if ((STp->device)->scsi_level < SCSI_2) { |
STp | 1583 | drivers/scsi/st.c | if (STp->dirty || (STp->buffer)->buffer_bytes != 0) |
STp | 1587 | drivers/scsi/st.c | (arg < STp->min_block || arg > STp->max_block || |
STp | 1595 | drivers/scsi/st.c | memset((STp->buffer)->b_data, 0, 12); |
STp | 1597 | drivers/scsi/st.c | (STp->buffer)->b_data[2] = (arg & 7) << 4; |
STp | 1599 | drivers/scsi/st.c | (STp->buffer)->b_data[2] = |
STp | 1600 | drivers/scsi/st.c | STp->drv_buffer << 4; |
STp | 1601 | drivers/scsi/st.c | (STp->buffer)->b_data[3] = 8; /* block descriptor length */ |
STp | 1603 | drivers/scsi/st.c | (STp->buffer)->b_data[4] = arg; |
STp | 1605 | drivers/scsi/st.c | (STp->buffer)->b_data[4] = STp->density; |
STp | 1609 | drivers/scsi/st.c | ltmp = STp->block_size; |
STp | 1610 | drivers/scsi/st.c | (STp->buffer)->b_data[9] = (ltmp >> 16); |
STp | 1611 | drivers/scsi/st.c | (STp->buffer)->b_data[10] = (ltmp >> 8); |
STp | 1612 | drivers/scsi/st.c | (STp->buffer)->b_data[11] = ltmp; |
STp | 1618 | drivers/scsi/st.c | (STp->buffer)->b_data[9] * 65536 + |
STp | 1619 | drivers/scsi/st.c | (STp->buffer)->b_data[10] * 256 + |
STp | 1620 | drivers/scsi/st.c | (STp->buffer)->b_data[11]); |
STp | 1623 | drivers/scsi/st.c | (STp->buffer)->b_data[4]); |
STp | 1626 | drivers/scsi/st.c | ((STp->buffer)->b_data[2] >> 4) & 7); |
STp | 1634 | drivers/scsi/st.c | SCpnt = st_do_scsi(NULL, STp, cmd, datalen, timeout, MAX_RETRIES); |
STp | 1638 | drivers/scsi/st.c | ioctl_result = (STp->buffer)->last_result_fatal; |
STp | 1643 | drivers/scsi/st.c | STp->moves_after_eof = 0; |
STp | 1645 | drivers/scsi/st.c | STp->moves_after_eof = 1; |
STp | 1648 | drivers/scsi/st.c | STp->drv_block = blkno; |
STp | 1649 | drivers/scsi/st.c | (STp->mt_status)->mt_fileno = fileno; |
STp | 1650 | drivers/scsi/st.c | STp->at_sm = at_sm; |
STp | 1653 | drivers/scsi/st.c | STp->drv_block = (STp->mt_status)->mt_fileno = (-1); |
STp | 1654 | drivers/scsi/st.c | STp->at_sm = 0; |
STp | 1657 | drivers/scsi/st.c | STp->door_locked = ST_LOCKED_EXPLICIT; |
STp | 1659 | drivers/scsi/st.c | STp->door_locked = ST_UNLOCKED; |
STp | 1665 | drivers/scsi/st.c | STp->block_size = arg; |
STp | 1667 | drivers/scsi/st.c | (STp->buffer)->buffer_blocks = |
STp | 1668 | drivers/scsi/st.c | (STp->buffer)->buffer_size / STp->block_size; |
STp | 1669 | drivers/scsi/st.c | (STp->buffer)->buffer_bytes = (STp->buffer)->read_pointer = 0; |
STp | 1672 | drivers/scsi/st.c | STp->drv_buffer = (arg & 7); |
STp | 1674 | drivers/scsi/st.c | STp->density = arg; |
STp | 1676 | drivers/scsi/st.c | STp->eof = ST_EOD; |
STp | 1677 | drivers/scsi/st.c | STp->eof_hit = 0; |
STp | 1680 | drivers/scsi/st.c | STp->eof = ST_NOEOF; |
STp | 1681 | drivers/scsi/st.c | STp->eof_hit = 0; |
STp | 1684 | drivers/scsi/st.c | STp->rew_at_close = 0; |
STp | 1686 | drivers/scsi/st.c | STp->rew_at_close = (MINOR(inode->i_rdev) & 0x80) == 0; |
STp | 1692 | drivers/scsi/st.c | STp->eof = ST_EOM_OK; |
STp | 1693 | drivers/scsi/st.c | STp->eof_hit = 0; |
STp | 1694 | drivers/scsi/st.c | STp->drv_block = 0; |
STp | 1703 | drivers/scsi/st.c | (STp->mt_status)->mt_fileno = fileno - undone ; |
STp | 1705 | drivers/scsi/st.c | (STp->mt_status)->mt_fileno = fileno; |
STp | 1706 | drivers/scsi/st.c | STp->drv_block = 0; |
STp | 1709 | drivers/scsi/st.c | (STp->mt_status)->mt_fileno = fileno + undone ; |
STp | 1710 | drivers/scsi/st.c | STp->drv_block = 0; |
STp | 1714 | drivers/scsi/st.c | (STp->mt_status)->mt_fileno++; |
STp | 1715 | drivers/scsi/st.c | STp->drv_block = 0; |
STp | 1719 | drivers/scsi/st.c | STp->drv_block = blkno - undone; |
STp | 1721 | drivers/scsi/st.c | STp->drv_block = (-1); |
STp | 1726 | drivers/scsi/st.c | (STp->mt_status)->mt_fileno--; |
STp | 1727 | drivers/scsi/st.c | STp->drv_block = (-1); |
STp | 1731 | drivers/scsi/st.c | STp->drv_block = blkno + undone; |
STp | 1733 | drivers/scsi/st.c | STp->drv_block = (-1); |
STp | 1737 | drivers/scsi/st.c | (STp->mt_status)->mt_fileno = (-1); |
STp | 1738 | drivers/scsi/st.c | STp->drv_block = (-1); |
STp | 1740 | drivers/scsi/st.c | if (STp->eof == ST_NOEOF && |
STp | 1742 | drivers/scsi/st.c | STp->eof = ST_EOD; |
STp | 1744 | drivers/scsi/st.c | STp->door_locked = ST_LOCK_FAILS; |
STp | 1762 | drivers/scsi/st.c | Scsi_Tape *STp; |
STp | 1765 | drivers/scsi/st.c | STp = &(scsi_tapes[dev]); |
STp | 1767 | drivers/scsi/st.c | if (debugging && !STp->in_use) { |
STp | 1779 | drivers/scsi/st.c | return scsi_ioctl(STp->device, cmd_in, (void *) arg); |
STp | 1794 | drivers/scsi/st.c | if (!(STp->device)->was_reset) { |
STp | 1796 | drivers/scsi/st.c | if (STp->eof_hit) { |
STp | 1799 | drivers/scsi/st.c | (STp->mt_status)->mt_fileno += 1; |
STp | 1803 | drivers/scsi/st.c | (STp->mt_status)->mt_fileno += 1; |
STp | 1827 | drivers/scsi/st.c | STp->device->was_reset = 0; |
STp | 1828 | drivers/scsi/st.c | if (STp->door_locked != ST_UNLOCKED && |
STp | 1829 | drivers/scsi/st.c | STp->door_locked != ST_LOCK_FAILS) { |
STp | 1833 | drivers/scsi/st.c | STp->door_locked = ST_UNLOCKED; |
STp | 1841 | drivers/scsi/st.c | STp->rw = ST_IDLE; /* Prevent automatic WEOF */ |
STp | 1843 | drivers/scsi/st.c | if (mtc.mt_op == MTOFFL && STp->door_locked != ST_UNLOCKED) |
STp | 1864 | drivers/scsi/st.c | (STp->mt_status)->mt_dsreg = |
STp | 1865 | drivers/scsi/st.c | ((STp->block_size << MT_ST_BLKSIZE_SHIFT) & MT_ST_BLKSIZE_MASK) | |
STp | 1866 | drivers/scsi/st.c | ((STp->density << MT_ST_DENSITY_SHIFT) & MT_ST_DENSITY_MASK); |
STp | 1867 | drivers/scsi/st.c | (STp->mt_status)->mt_blkno = STp->drv_block; |
STp | 1868 | drivers/scsi/st.c | if (STp->block_size != 0) { |
STp | 1869 | drivers/scsi/st.c | if (STp->rw == ST_WRITING) |
STp | 1870 | drivers/scsi/st.c | (STp->mt_status)->mt_blkno += |
STp | 1871 | drivers/scsi/st.c | (STp->buffer)->buffer_bytes / STp->block_size; |
STp | 1872 | drivers/scsi/st.c | else if (STp->rw == ST_READING) |
STp | 1873 | drivers/scsi/st.c | (STp->mt_status)->mt_blkno -= ((STp->buffer)->buffer_bytes + |
STp | 1874 | drivers/scsi/st.c | STp->block_size - 1) / STp->block_size; |
STp | 1877 | drivers/scsi/st.c | (STp->mt_status)->mt_gstat = 0; |
STp | 1878 | drivers/scsi/st.c | if (STp->drv_write_prot) |
STp | 1879 | drivers/scsi/st.c | (STp->mt_status)->mt_gstat |= GMT_WR_PROT(0xffffffff); |
STp | 1880 | drivers/scsi/st.c | if ((STp->mt_status)->mt_blkno == 0) { |
STp | 1881 | drivers/scsi/st.c | if ((STp->mt_status)->mt_fileno == 0) |
STp | 1882 | drivers/scsi/st.c | (STp->mt_status)->mt_gstat |= GMT_BOT(0xffffffff); |
STp | 1884 | drivers/scsi/st.c | (STp->mt_status)->mt_gstat |= GMT_EOF(0xffffffff); |
STp | 1886 | drivers/scsi/st.c | if (STp->eof == ST_EOM_OK || STp->eof == ST_EOM_ERROR) |
STp | 1887 | drivers/scsi/st.c | (STp->mt_status)->mt_gstat |= GMT_EOT(0xffffffff); |
STp | 1888 | drivers/scsi/st.c | else if (STp->eof == ST_EOD) |
STp | 1889 | drivers/scsi/st.c | (STp->mt_status)->mt_gstat |= GMT_EOD(0xffffffff); |
STp | 1890 | drivers/scsi/st.c | if (STp->density == 1) |
STp | 1891 | drivers/scsi/st.c | (STp->mt_status)->mt_gstat |= GMT_D_800(0xffffffff); |
STp | 1892 | drivers/scsi/st.c | else if (STp->density == 2) |
STp | 1893 | drivers/scsi/st.c | (STp->mt_status)->mt_gstat |= GMT_D_1600(0xffffffff); |
STp | 1894 | drivers/scsi/st.c | else if (STp->density == 3) |
STp | 1895 | drivers/scsi/st.c | (STp->mt_status)->mt_gstat |= GMT_D_6250(0xffffffff); |
STp | 1896 | drivers/scsi/st.c | if (STp->ready == ST_READY) |
STp | 1897 | drivers/scsi/st.c | (STp->mt_status)->mt_gstat |= GMT_ONLINE(0xffffffff); |
STp | 1898 | drivers/scsi/st.c | if (STp->ready == ST_NO_TAPE) |
STp | 1899 | drivers/scsi/st.c | (STp->mt_status)->mt_gstat |= GMT_DR_OPEN(0xffffffff); |
STp | 1900 | drivers/scsi/st.c | if (STp->at_sm) |
STp | 1901 | drivers/scsi/st.c | (STp->mt_status)->mt_gstat |= GMT_SM(0xffffffff); |
STp | 1903 | drivers/scsi/st.c | memcpy_tofs((char *)arg, (char *)(STp->mt_status), |
STp | 1906 | drivers/scsi/st.c | (STp->mt_status)->mt_erreg = 0; /* Clear after read */ |
STp | 1910 | drivers/scsi/st.c | if (STp->ready != ST_READY) |
STp | 1928 | drivers/scsi/st.c | if ((STp->device)->scsi_level < SCSI_2) { |
STp | 1936 | drivers/scsi/st.c | SCpnt = st_do_scsi(NULL, STp, scmd, 20, ST_TIMEOUT, MAX_READY_RETRIES); |
STp | 1940 | drivers/scsi/st.c | if ((STp->buffer)->last_result_fatal != 0) { |
STp | 1950 | drivers/scsi/st.c | if ((STp->device)->scsi_level < SCSI_2) |
STp | 1951 | drivers/scsi/st.c | mt_pos.mt_blkno = ((STp->buffer)->b_data[0] << 16) |
STp | 1952 | drivers/scsi/st.c | + ((STp->buffer)->b_data[1] << 8) |
STp | 1953 | drivers/scsi/st.c | + (STp->buffer)->b_data[2]; |
STp | 1955 | drivers/scsi/st.c | mt_pos.mt_blkno = ((STp->buffer)->b_data[4] << 24) |
STp | 1956 | drivers/scsi/st.c | + ((STp->buffer)->b_data[5] << 16) |
STp | 1957 | drivers/scsi/st.c | + ((STp->buffer)->b_data[6] << 8) |
STp | 1958 | drivers/scsi/st.c | + (STp->buffer)->b_data[7]; |
STp | 1968 | drivers/scsi/st.c | return scsi_ioctl(STp->device, cmd_in, (void *) arg); |
STp | 2171 | drivers/scsi/st.c | Scsi_Tape * STp; |
STp | 2205 | drivers/scsi/st.c | STp = &(scsi_tapes[i]); |
STp | 2206 | drivers/scsi/st.c | STp->device = NULL; |
STp | 2207 | drivers/scsi/st.c | STp->capacity = 0xfffff; |
STp | 2208 | drivers/scsi/st.c | STp->dirty = 0; |
STp | 2209 | drivers/scsi/st.c | STp->rw = ST_IDLE; |
STp | 2210 | drivers/scsi/st.c | STp->eof = ST_NOEOF; |
STp | 2211 | drivers/scsi/st.c | STp->waiting = NULL; |
STp | 2212 | drivers/scsi/st.c | STp->in_use = 0; |
STp | 2213 | drivers/scsi/st.c | STp->drv_buffer = 1; /* Try buffering if no mode sense */ |
STp | 2214 | drivers/scsi/st.c | STp->density = 0; |
STp | 2215 | drivers/scsi/st.c | STp->do_buffer_writes = ST_BUFFER_WRITES; |
STp | 2216 | drivers/scsi/st.c | STp->do_async_writes = ST_ASYNC_WRITES; |
STp | 2217 | drivers/scsi/st.c | STp->do_read_ahead = ST_READ_AHEAD; |
STp | 2218 | drivers/scsi/st.c | STp->do_auto_lock = ST_AUTO_LOCK; |
STp | 2219 | drivers/scsi/st.c | STp->two_fm = ST_TWO_FM; |
STp | 2220 | drivers/scsi/st.c | STp->fast_mteom = ST_FAST_MTEOM; |
STp | 2221 | drivers/scsi/st.c | STp->write_threshold = st_write_threshold; |
STp | 2222 | drivers/scsi/st.c | STp->drv_block = 0; |
STp | 2223 | drivers/scsi/st.c | STp->moves_after_eof = 1; |
STp | 2224 | drivers/scsi/st.c | STp->at_sm = 0; |
STp | 2225 | drivers/scsi/st.c | STp->mt_status = (struct mtget *) scsi_init_malloc(sizeof(struct mtget), |