tag | line | file | source code |
tape | 1225 | drivers/block/ide-tape.c | idetape_tape_t *tape=&(drive->tape); |
tape | 1237 | drivers/block/ide-tape.c | tape->block_address=0; |
tape | 1238 | drivers/block/ide-tape.c | tape->block_address_valid=0; |
tape | 1239 | drivers/block/ide-tape.c | tape->pc_stack_index=0; |
tape | 1240 | drivers/block/ide-tape.c | tape->failed_pc=NULL; |
tape | 1241 | drivers/block/ide-tape.c | tape->postponed_rq=NULL; |
tape | 1242 | drivers/block/ide-tape.c | tape->busy=0; |
tape | 1243 | drivers/block/ide-tape.c | tape->active_data_request=NULL; |
tape | 1244 | drivers/block/ide-tape.c | tape->current_number_of_stages=0; |
tape | 1245 | drivers/block/ide-tape.c | tape->first_stage=tape->next_stage=tape->last_stage=NULL; |
tape | 1246 | drivers/block/ide-tape.c | tape->error_in_pipeline_stage=0; |
tape | 1247 | drivers/block/ide-tape.c | tape->request_status=0; |
tape | 1248 | drivers/block/ide-tape.c | tape->chrdev_direction=idetape_direction_none; |
tape | 1249 | drivers/block/ide-tape.c | tape->reset_issued=0; |
tape | 1250 | drivers/block/ide-tape.c | tape->pc=&(tape->pc_stack [0]); |
tape | 1253 | drivers/block/ide-tape.c | tape->max_number_of_stages=IDETAPE_MIN_PIPELINE_STAGES; |
tape | 1256 | drivers/block/ide-tape.c | tape->max_number_of_stages=0; |
tape | 1262 | drivers/block/ide-tape.c | tape->data_buffer_size=tape->capabilities.ctl*tape->tape_block_size; |
tape | 1264 | drivers/block/ide-tape.c | allocation_length=tape->data_buffer_size; |
tape | 1265 | drivers/block/ide-tape.c | if (tape->data_buffer_size % IDETAPE_ALLOCATION_BLOCK) |
tape | 1269 | drivers/block/ide-tape.c | tape->data_buffer=tape->merge_buffer=NULL; |
tape | 1271 | drivers/block/ide-tape.c | tape->data_buffer=kmalloc (allocation_length,GFP_KERNEL); |
tape | 1272 | drivers/block/ide-tape.c | tape->merge_buffer=kmalloc (allocation_length,GFP_KERNEL); |
tape | 1273 | drivers/block/ide-tape.c | if (tape->data_buffer == NULL || tape->merge_buffer == NULL) { |
tape | 1282 | drivers/block/ide-tape.c | tape->merge_buffer_size=tape->merge_buffer_offset=0; |
tape | 1307 | drivers/block/ide-tape.c | service_time=((double) tape->data_buffer_size/1024.0)/((double) tape->capabilities.speed*(1000.0/1024.0)); |
tape | 1308 | drivers/block/ide-tape.c | nr_units=(double) tape->capabilities.buffer_size*512.0/(double) tape->data_buffer_size; |
tape | 1310 | drivers/block/ide-tape.c | if (tape->max_number_of_stages) |
tape | 1311 | drivers/block/ide-tape.c | tape->best_dsc_rw_frequency=(unsigned long) (0.5*nr_units*service_time*HZ); |
tape | 1313 | drivers/block/ide-tape.c | tape->best_dsc_rw_frequency=(unsigned long) (service_time*HZ); |
tape | 1319 | drivers/block/ide-tape.c | if (tape->best_dsc_rw_frequency > IDETAPE_DSC_READ_WRITE_LOWEST_FREQUENCY) { |
tape | 1320 | drivers/block/ide-tape.c | printk ("ide-tape: Although the recommended polling period is %lu jiffies, \n",tape->best_dsc_rw_frequency); |
tape | 1323 | drivers/block/ide-tape.c | tape->best_dsc_rw_frequency = IDETAPE_DSC_READ_WRITE_LOWEST_FREQUENCY; |
tape | 1326 | drivers/block/ide-tape.c | if (tape->best_dsc_rw_frequency < IDETAPE_DSC_READ_WRITE_FALLBACK_FREQUENCY) { |
tape | 1327 | drivers/block/ide-tape.c | printk ("ide-tape: Although the recommended polling period is %lu jiffies, \n",tape->best_dsc_rw_frequency); |
tape | 1329 | drivers/block/ide-tape.c | tape->best_dsc_rw_frequency = IDETAPE_DSC_READ_WRITE_FALLBACK_FREQUENCY; |
tape | 1333 | drivers/block/ide-tape.c | tape->best_dsc_rw_frequency=IDETAPE_DSC_READ_WRITE_FALLBACK_FREQUENCY; |
tape | 1336 | drivers/block/ide-tape.c | printk ("ide-tape: Tape speed - %d KBps. Recommended transfer unit - %d bytes.\n",tape->capabilities.speed,tape->data_buffer_size); |
tape | 1351 | drivers/block/ide-tape.c | idetape_tape_t *tape=&(drive->tape); |
tape | 1370 | drivers/block/ide-tape.c | tape->capabilities=*capabilities; /* Save us a copy */ |
tape | 1371 | drivers/block/ide-tape.c | tape->tape_block_size=capabilities->blk512 ? 512:1024; |
tape | 1376 | drivers/block/ide-tape.c | tape->tape_block_size=512; |
tape | 1377 | drivers/block/ide-tape.c | tape->capabilities.ctl=52; |
tape | 1378 | drivers/block/ide-tape.c | tape->capabilities.speed=450; |
tape | 1379 | drivers/block/ide-tape.c | tape->capabilities.buffer_size=6*52; |
tape | 1460 | drivers/block/ide-tape.c | idetape_tape_t *tape; |
tape | 1465 | drivers/block/ide-tape.c | tape=&(drive->tape); |
tape | 1468 | drivers/block/ide-tape.c | if (tape->pc->c[0] == IDETAPE_REQUEST_SENSE_CMD && pc->c[0] == IDETAPE_REQUEST_SENSE_CMD) { |
tape | 1473 | drivers/block/ide-tape.c | if (tape->failed_pc == NULL && pc->c[0] != IDETAPE_REQUEST_SENSE_CMD) |
tape | 1474 | drivers/block/ide-tape.c | tape->failed_pc=pc; |
tape | 1475 | drivers/block/ide-tape.c | tape->pc=pc; /* Set the current packet command */ |
tape | 1488 | drivers/block/ide-tape.c | printk ("pc = %x, key = %x, asc = %x, ascq = %x\n",pc->c[0],tape->sense_key,tape->asc,tape->ascq); |
tape | 1492 | drivers/block/ide-tape.c | tape->failed_pc=NULL; |
tape | 1578 | drivers/block/ide-tape.c | idetape_tape_t *tape=&(drive->tape); |
tape | 1582 | drivers/block/ide-tape.c | idetape_packet_command_t *pc=tape->pc; |
tape | 1636 | drivers/block/ide-tape.c | tape->dsc_polling_frequency=IDETAPE_DSC_FAST_MEDIA_ACCESS_FREQUENCY; |
tape | 1640 | drivers/block/ide-tape.c | if (tape->failed_pc == pc) |
tape | 1641 | drivers/block/ide-tape.c | tape->failed_pc=NULL; |
tape | 1726 | drivers/block/ide-tape.c | idetape_tape_t *tape=&(drive->tape); |
tape | 1734 | drivers/block/ide-tape.c | if (tape->postponed_rq != NULL) |
tape | 1738 | drivers/block/ide-tape.c | tape->dsc_timer.expires=jiffies + tape->dsc_polling_frequency; /* Set timer to poll for */ |
tape | 1739 | drivers/block/ide-tape.c | tape->dsc_timeout=jiffies+IDETAPE_DSC_TIMEOUT; /* actual completion */ |
tape | 1740 | drivers/block/ide-tape.c | tape->dsc_timer.data=(unsigned long) drive; |
tape | 1741 | drivers/block/ide-tape.c | tape->dsc_timer.function=&idetape_poll_for_dsc; |
tape | 1742 | drivers/block/ide-tape.c | init_timer (&(tape->dsc_timer)); |
tape | 1748 | drivers/block/ide-tape.c | tape->postponed_rq = rq = HWGROUP(drive)->rq; |
tape | 1758 | drivers/block/ide-tape.c | tape->last_status=status.all; |
tape | 1759 | drivers/block/ide-tape.c | tape->request_status=1; |
tape | 1761 | drivers/block/ide-tape.c | tape->dsc_polling_start=jiffies; |
tape | 1762 | drivers/block/ide-tape.c | add_timer(&(tape->dsc_timer)); /* Activate the polling timer */ |
tape | 1775 | drivers/block/ide-tape.c | idetape_tape_t *tape=&(drive->tape); |
tape | 1786 | drivers/block/ide-tape.c | tape->dsc_received=1; |
tape | 1787 | drivers/block/ide-tape.c | del_timer (&(tape->dsc_timer)); /* Stop polling and put back the postponed */ |
tape | 1792 | drivers/block/ide-tape.c | if (jiffies > tape->dsc_timeout) { /* Timeout */ |
tape | 1793 | drivers/block/ide-tape.c | tape->dsc_received=0; |
tape | 1794 | drivers/block/ide-tape.c | del_timer (&(tape->dsc_timer)); |
tape | 1802 | drivers/block/ide-tape.c | if (jiffies - tape->dsc_polling_start > IDETAPE_FAST_SLOW_THRESHOLD) |
tape | 1803 | drivers/block/ide-tape.c | tape->dsc_timer.expires = jiffies + IDETAPE_DSC_SLOW_MEDIA_ACCESS_FREQUENCY; |
tape | 1805 | drivers/block/ide-tape.c | tape->dsc_timer.expires = jiffies + tape->dsc_polling_frequency; |
tape | 1806 | drivers/block/ide-tape.c | add_timer(&(tape->dsc_timer)); |
tape | 1831 | drivers/block/ide-tape.c | idetape_tape_t *tape=&(drive->tape); |
tape | 1859 | drivers/block/ide-tape.c | status.all=tape->last_status; |
tape | 1862 | drivers/block/ide-tape.c | tape->dsc_received=1; |
tape | 1864 | drivers/block/ide-tape.c | del_timer (&(tape->dsc_timer)); |
tape | 1920 | drivers/block/ide-tape.c | if (tape->postponed_rq->cmd != IDETAPE_PACKET_COMMAND_REQUEST_TYPE1) { |
tape | 1928 | drivers/block/ide-tape.c | del_timer (&(tape->dsc_timer)); |
tape | 1960 | drivers/block/ide-tape.c | if (tape->postponed_rq->cmd == IDETAPE_PACKET_COMMAND_REQUEST_TYPE1) { |
tape | 1969 | drivers/block/ide-tape.c | tape->request_status=1; |
tape | 1971 | drivers/block/ide-tape.c | tape->dsc_timer.expires = jiffies + tape->dsc_polling_frequency; |
tape | 1972 | drivers/block/ide-tape.c | add_timer(&(tape->dsc_timer)); |
tape | 1983 | drivers/block/ide-tape.c | del_timer (&(tape->dsc_timer)); |
tape | 1995 | drivers/block/ide-tape.c | tape->request_status=1; |
tape | 1998 | drivers/block/ide-tape.c | if (jiffies > tape->dsc_timeout) { /* Timeout */ |
tape | 1999 | drivers/block/ide-tape.c | tape->dsc_received=0; |
tape | 2002 | drivers/block/ide-tape.c | del_timer (&(tape->dsc_timer)); |
tape | 2009 | drivers/block/ide-tape.c | if (jiffies - tape->dsc_polling_start > IDETAPE_FAST_SLOW_THRESHOLD) |
tape | 2010 | drivers/block/ide-tape.c | tape->dsc_timer.expires = jiffies + IDETAPE_DSC_SLOW_MEDIA_ACCESS_FREQUENCY; |
tape | 2012 | drivers/block/ide-tape.c | tape->dsc_timer.expires = jiffies + tape->dsc_polling_frequency; |
tape | 2013 | drivers/block/ide-tape.c | add_timer(&(tape->dsc_timer)); |
tape | 2025 | drivers/block/ide-tape.c | idetape_tape_t *tape = &(drive->tape); |
tape | 2031 | drivers/block/ide-tape.c | if (tape->postponed_rq == NULL) { |
tape | 2036 | drivers/block/ide-tape.c | (void) ide_do_drive_cmd (drive, tape->postponed_rq, ide_next); |
tape | 2053 | drivers/block/ide-tape.c | idetape_tape_t *tape=&(drive->tape); |
tape | 2057 | drivers/block/ide-tape.c | pc=tape->pc; |
tape | 2061 | drivers/block/ide-tape.c | if (tape->dsc_received) { |
tape | 2071 | drivers/block/ide-tape.c | if (tape->failed_pc == pc) |
tape | 2072 | drivers/block/ide-tape.c | tape->failed_pc=NULL; |
tape | 2086 | drivers/block/ide-tape.c | tape->failed_pc=NULL; |
tape | 2128 | drivers/block/ide-tape.c | idetape_tape_t *tape; |
tape | 2131 | drivers/block/ide-tape.c | tape=&(drive->tape); |
tape | 2137 | drivers/block/ide-tape.c | if (!tape->pc->error) { |
tape | 2153 | drivers/block/ide-tape.c | idetape_tape_t *tape=&(drive->tape); |
tape | 2155 | drivers/block/ide-tape.c | int blocks_read=tape->pc->actually_transferred/tape->tape_block_size; |
tape | 2161 | drivers/block/ide-tape.c | tape->block_address+=blocks_read; |
tape | 2164 | drivers/block/ide-tape.c | if (!tape->pc->error) |
tape | 2167 | drivers/block/ide-tape.c | rq->errors=tape->pc->error; |
tape | 2181 | drivers/block/ide-tape.c | idetape_tape_t *tape=&(drive->tape); |
tape | 2183 | drivers/block/ide-tape.c | int blocks_written=tape->pc->actually_transferred/tape->tape_block_size; |
tape | 2189 | drivers/block/ide-tape.c | tape->block_address+=blocks_written; |
tape | 2192 | drivers/block/ide-tape.c | if (!tape->pc->error) |
tape | 2195 | drivers/block/ide-tape.c | rq->errors=tape->pc->error; |
tape | 2204 | drivers/block/ide-tape.c | idetape_tape_t *tape; |
tape | 2206 | drivers/block/ide-tape.c | tape=&(drive->tape); |
tape | 2208 | drivers/block/ide-tape.c | idetape_display_inquiry_result (tape->pc->buffer); |
tape | 2394 | drivers/block/ide-tape.c | idetape_tape_t *tape=&(drive->tape); |
tape | 2399 | drivers/block/ide-tape.c | if (!tape->pc->error) { |
tape | 2403 | drivers/block/ide-tape.c | idetape_analyze_error (drive,(idetape_request_sense_result_t *) tape->pc->buffer); |
tape | 2422 | drivers/block/ide-tape.c | idetape_tape_t *tape=&(drive->tape); |
tape | 2423 | drivers/block/ide-tape.c | idetape_packet_command_t *pc=tape->failed_pc; |
tape | 2425 | drivers/block/ide-tape.c | tape->sense_key=result->sense_key; |
tape | 2426 | drivers/block/ide-tape.c | tape->asc=result->asc; |
tape | 2427 | drivers/block/ide-tape.c | tape->ascq=result->ascq; |
tape | 2460 | drivers/block/ide-tape.c | pc->actually_transferred=pc->request_transfer-tape->tape_block_size*idetape_swap_long (*long_ptr); |
tape | 2754 | drivers/block/ide-tape.c | idetape_tape_t *tape; |
tape | 2758 | drivers/block/ide-tape.c | tape=&(drive->tape); |
tape | 2766 | drivers/block/ide-tape.c | if (!tape->pc->error) { |
tape | 2767 | drivers/block/ide-tape.c | result=(idetape_read_position_result_t *) tape->pc->buffer; |
tape | 2777 | drivers/block/ide-tape.c | tape->block_address_valid=0; |
tape | 2784 | drivers/block/ide-tape.c | tape->block_address=idetape_swap_long (result->first_block); |
tape | 2785 | drivers/block/ide-tape.c | tape->block_address_valid=1; |
tape | 2835 | drivers/block/ide-tape.c | idetape_tape_t *tape = &(drive->tape); |
tape | 2850 | drivers/block/ide-tape.c | if (tape->active_data_request == rq) { /* The request was a pipelined data transfer request */ |
tape | 2854 | drivers/block/ide-tape.c | if (tape->active_stage == NULL) |
tape | 2858 | drivers/block/ide-tape.c | idetape_copy_buffer_to_stage (tape->active_stage,tape->data_buffer); |
tape | 2861 | drivers/block/ide-tape.c | tape->active_stage=NULL; |
tape | 2862 | drivers/block/ide-tape.c | tape->active_data_request=NULL; |
tape | 2866 | drivers/block/ide-tape.c | tape->error_in_pipeline_stage=rq->errors; |
tape | 2870 | drivers/block/ide-tape.c | if (tape->next_stage == NULL) { |
tape | 2887 | drivers/block/ide-tape.c | (void) ide_do_drive_cmd (drive,tape->active_data_request,ide_end); |
tape | 2889 | drivers/block/ide-tape.c | (void) ide_do_drive_cmd (drive,tape->active_data_request,ide_next); |
tape | 2902 | drivers/block/ide-tape.c | idetape_tape_t *tape=&(drive->tape); |
tape | 2956 | drivers/block/ide-tape.c | if (tape->failed_pc != NULL && tape->pc->c[0] == IDETAPE_REQUEST_SENSE_CMD) { |
tape | 2957 | drivers/block/ide-tape.c | idetape_issue_packet_command (drive,tape->failed_pc,&idetape_pc_intr); |
tape | 2963 | drivers/block/ide-tape.c | if (tape->postponed_rq != NULL) { |
tape | 2965 | drivers/block/ide-tape.c | if (tape->postponed_rq->rq_status != RQ_ACTIVE || rq != tape->postponed_rq) { |
tape | 2975 | drivers/block/ide-tape.c | tape->postponed_rq = NULL; |
tape | 2986 | drivers/block/ide-tape.c | tape->postponed_rq = NULL; |
tape | 2997 | drivers/block/ide-tape.c | if (tape->reset_issued) { |
tape | 2999 | drivers/block/ide-tape.c | tape->reset_issued=0; |
tape | 3008 | drivers/block/ide-tape.c | tape->dsc_polling_frequency=tape->best_dsc_rw_frequency; |
tape | 3018 | drivers/block/ide-tape.c | pc->buffer_size=rq->current_nr_sectors*tape->tape_block_size; |
tape | 3020 | drivers/block/ide-tape.c | pc->request_transfer=rq->current_nr_sectors*tape->tape_block_size; |
tape | 3030 | drivers/block/ide-tape.c | tape->dsc_polling_frequency=tape->best_dsc_rw_frequency; |
tape | 3040 | drivers/block/ide-tape.c | pc->buffer_size=rq->current_nr_sectors*tape->tape_block_size; |
tape | 3042 | drivers/block/ide-tape.c | pc->request_transfer=rq->current_nr_sectors*tape->tape_block_size; |
tape | 3060 | drivers/block/ide-tape.c | tape->dsc_polling_frequency=IDETAPE_DSC_READ_WRITE_FALLBACK_FREQUENCY; |
tape | 3173 | drivers/block/ide-tape.c | idetape_tape_t *tape = &(drive->tape); |
tape | 3180 | drivers/block/ide-tape.c | if (tape->active_data_request != NULL) { |
tape | 3189 | drivers/block/ide-tape.c | rq.sector = tape->block_address; |
tape | 3193 | drivers/block/ide-tape.c | return (tape->tape_block_size*(blocks-rq.current_nr_sectors)); |
tape | 3204 | drivers/block/ide-tape.c | idetape_tape_t *tape = &(drive->tape); |
tape | 3216 | drivers/block/ide-tape.c | rq.sector = tape->block_address; |
tape | 3219 | drivers/block/ide-tape.c | if (tape->active_data_request != NULL || tape->current_number_of_stages <= 0.25*tape->max_number_of_stages) { |
tape | 3228 | drivers/block/ide-tape.c | if (tape->active_data_request == NULL) |
tape | 3232 | drivers/block/ide-tape.c | if (tape->first_stage == NULL) { |
tape | 3243 | drivers/block/ide-tape.c | if (tape->active_data_request == &(tape->first_stage->rq)) |
tape | 3244 | drivers/block/ide-tape.c | idetape_wait_for_request (tape->active_data_request); |
tape | 3247 | drivers/block/ide-tape.c | rq_ptr=&(tape->first_stage->rq); |
tape | 3248 | drivers/block/ide-tape.c | bytes_read=tape->tape_block_size*(rq_ptr->nr_sectors-rq_ptr->current_nr_sectors); |
tape | 3250 | drivers/block/ide-tape.c | idetape_copy_buffer_from_stage (tape->first_stage,buffer); |
tape | 3254 | drivers/block/ide-tape.c | if (bytes_read > blocks*tape->tape_block_size) { |
tape | 3256 | drivers/block/ide-tape.c | bytes_read=blocks*tape->tape_block_size; |
tape | 3277 | drivers/block/ide-tape.c | idetape_tape_t *tape = &(drive->tape); |
tape | 3298 | drivers/block/ide-tape.c | if (tape->active_data_request != NULL) { |
tape | 3299 | drivers/block/ide-tape.c | idetape_wait_for_request (tape->active_data_request); |
tape | 3318 | drivers/block/ide-tape.c | rq->sector = tape->block_address; /* Doesn't actually matter - We always assume sequential access */ |
tape | 3337 | drivers/block/ide-tape.c | if (tape->active_data_request == NULL && tape->current_number_of_stages >= 0.75*tape->max_number_of_stages) |
tape | 3340 | drivers/block/ide-tape.c | if (tape->error_in_pipeline_stage) { /* Return a deferred error */ |
tape | 3341 | drivers/block/ide-tape.c | tape->error_in_pipeline_stage=0; |
tape | 3351 | drivers/block/ide-tape.c | idetape_tape_t *tape = &(drive->tape); |
tape | 3355 | drivers/block/ide-tape.c | if (tape->chrdev_direction != idetape_direction_read) { |
tape | 3361 | drivers/block/ide-tape.c | tape->merge_buffer_size=tape->merge_buffer_offset=0; |
tape | 3362 | drivers/block/ide-tape.c | tape->chrdev_direction=idetape_direction_none; |
tape | 3364 | drivers/block/ide-tape.c | if (tape->first_stage == NULL) |
tape | 3368 | drivers/block/ide-tape.c | tape->next_stage=NULL; |
tape | 3369 | drivers/block/ide-tape.c | if (tape->active_data_request != NULL) |
tape | 3370 | drivers/block/ide-tape.c | idetape_wait_for_request (tape->active_data_request); |
tape | 3373 | drivers/block/ide-tape.c | while (tape->first_stage != NULL) |
tape | 3377 | drivers/block/ide-tape.c | tape->max_number_of_stages=IDETAPE_MIN_PIPELINE_STAGES; |
tape | 3379 | drivers/block/ide-tape.c | tape->max_number_of_stages=0; |
tape | 3391 | drivers/block/ide-tape.c | idetape_tape_t *tape = &(drive->tape); |
tape | 3394 | drivers/block/ide-tape.c | if (tape->active_data_request == NULL) |
tape | 3398 | drivers/block/ide-tape.c | if (tape->active_data_request == NULL) { |
tape | 3403 | drivers/block/ide-tape.c | if (tape->last_stage != NULL) |
tape | 3404 | drivers/block/ide-tape.c | idetape_wait_for_request (&(tape->last_stage->rq)); |
tape | 3406 | drivers/block/ide-tape.c | else if (tape->active_data_request != NULL) |
tape | 3407 | drivers/block/ide-tape.c | idetape_wait_for_request (tape->active_data_request); |
tape | 3414 | drivers/block/ide-tape.c | idetape_tape_t *tape = &(drive->tape); |
tape | 3418 | drivers/block/ide-tape.c | if (tape->chrdev_direction != idetape_direction_write) { |
tape | 3422 | drivers/block/ide-tape.c | if (tape->merge_buffer_size > tape->data_buffer_size) { |
tape | 3424 | drivers/block/ide-tape.c | tape->merge_buffer_size = tape->data_buffer_size; |
tape | 3428 | drivers/block/ide-tape.c | if (tape->merge_buffer_size) { |
tape | 3429 | drivers/block/ide-tape.c | blocks=tape->merge_buffer_size/tape->tape_block_size; |
tape | 3430 | drivers/block/ide-tape.c | if (tape->merge_buffer_size % tape->tape_block_size) { |
tape | 3432 | drivers/block/ide-tape.c | memset (tape->merge_buffer+tape->merge_buffer_size,0,tape->data_buffer_size-tape->merge_buffer_size); |
tape | 3434 | drivers/block/ide-tape.c | (void) idetape_add_chrdev_write_request (drive,blocks,tape->merge_buffer); |
tape | 3435 | drivers/block/ide-tape.c | tape->merge_buffer_size=0; |
tape | 3440 | drivers/block/ide-tape.c | tape->error_in_pipeline_stage=0; |
tape | 3441 | drivers/block/ide-tape.c | tape->chrdev_direction=idetape_direction_none; |
tape | 3451 | drivers/block/ide-tape.c | tape->max_number_of_stages=IDETAPE_MIN_PIPELINE_STAGES; |
tape | 3453 | drivers/block/ide-tape.c | tape->max_number_of_stages=0; |
tape | 3456 | drivers/block/ide-tape.c | if (tape->first_stage != NULL || tape->next_stage != NULL || tape->last_stage != NULL || tape->current_number_of_stages != 0) { |
tape | 3538 | drivers/block/ide-tape.c | idetape_tape_t *tape; |
tape | 3540 | drivers/block/ide-tape.c | tape=&(drive->tape); |
tape | 3542 | drivers/block/ide-tape.c | printk ("ide-tape: pc_stack_index=%d\n",tape->pc_stack_index); |
tape | 3544 | drivers/block/ide-tape.c | if (tape->pc_stack_index==IDETAPE_PC_STACK) |
tape | 3545 | drivers/block/ide-tape.c | tape->pc_stack_index=0; |
tape | 3546 | drivers/block/ide-tape.c | return (&(tape->pc_stack [tape->pc_stack_index++])); |
tape | 3565 | drivers/block/ide-tape.c | idetape_tape_t *tape; |
tape | 3567 | drivers/block/ide-tape.c | tape=&(drive->tape); |
tape | 3570 | drivers/block/ide-tape.c | printk ("ide-tape: rq_stack_index=%d\n",tape->rq_stack_index); |
tape | 3572 | drivers/block/ide-tape.c | if (tape->rq_stack_index==IDETAPE_PC_STACK) |
tape | 3573 | drivers/block/ide-tape.c | tape->rq_stack_index=0; |
tape | 3574 | drivers/block/ide-tape.c | return (&(tape->rq_stack [tape->rq_stack_index++])); |
tape | 3588 | drivers/block/ide-tape.c | idetape_tape_t *tape=&(drive->tape); |
tape | 3597 | drivers/block/ide-tape.c | if (tape->busy) { |
tape | 3602 | drivers/block/ide-tape.c | tape->busy=1; |
tape | 3611 | drivers/block/ide-tape.c | idetape_tape_t *tape=&(drive->tape); |
tape | 3619 | drivers/block/ide-tape.c | tape->busy=0; |
tape | 3653 | drivers/block/ide-tape.c | idetape_tape_t *tape=&(drive->tape); |
tape | 3661 | drivers/block/ide-tape.c | if (tape->chrdev_direction != idetape_direction_read) { /* Initialize read operation */ |
tape | 3662 | drivers/block/ide-tape.c | if (tape->chrdev_direction == idetape_direction_write) { |
tape | 3673 | drivers/block/ide-tape.c | bytes_read=idetape_queue_rw_tail (drive,IDETAPE_READ_REQUEST,0,tape->merge_buffer); |
tape | 3677 | drivers/block/ide-tape.c | tape->chrdev_direction=idetape_direction_read; |
tape | 3683 | drivers/block/ide-tape.c | if (tape->merge_buffer_size) { |
tape | 3685 | drivers/block/ide-tape.c | if (tape->merge_buffer_offset+tape->merge_buffer_size > tape->data_buffer_size) { |
tape | 3687 | drivers/block/ide-tape.c | tape->merge_buffer_offset=0;tape->merge_buffer_size=tape->data_buffer_size-1; |
tape | 3690 | drivers/block/ide-tape.c | actually_read=IDETAPE_MIN (tape->merge_buffer_size,count); |
tape | 3691 | drivers/block/ide-tape.c | memcpy_tofs (buf_ptr,tape->merge_buffer+tape->merge_buffer_offset,actually_read); |
tape | 3692 | drivers/block/ide-tape.c | buf_ptr+=actually_read;tape->merge_buffer_size-=actually_read; |
tape | 3693 | drivers/block/ide-tape.c | count-=actually_read;tape->merge_buffer_offset+=actually_read; |
tape | 3696 | drivers/block/ide-tape.c | while (count >= tape->data_buffer_size) { |
tape | 3697 | drivers/block/ide-tape.c | bytes_read=idetape_add_chrdev_read_request (drive,tape->capabilities.ctl,tape->merge_buffer); |
tape | 3700 | drivers/block/ide-tape.c | memcpy_tofs (buf_ptr,tape->merge_buffer,bytes_read); |
tape | 3705 | drivers/block/ide-tape.c | bytes_read=idetape_add_chrdev_read_request (drive,tape->capabilities.ctl,tape->merge_buffer); |
tape | 3709 | drivers/block/ide-tape.c | memcpy_tofs (buf_ptr,tape->merge_buffer,temp); |
tape | 3711 | drivers/block/ide-tape.c | tape->merge_buffer_offset=temp; |
tape | 3712 | drivers/block/ide-tape.c | tape->merge_buffer_size=bytes_read-temp; |
tape | 3721 | drivers/block/ide-tape.c | idetape_tape_t *tape=&(drive->tape); |
tape | 3729 | drivers/block/ide-tape.c | if (tape->chrdev_direction != idetape_direction_write) { /* Initialize write operation */ |
tape | 3730 | drivers/block/ide-tape.c | if (tape->chrdev_direction == idetape_direction_read) |
tape | 3739 | drivers/block/ide-tape.c | retval=idetape_queue_rw_tail (drive,IDETAPE_WRITE_REQUEST,0,tape->merge_buffer); |
tape | 3743 | drivers/block/ide-tape.c | tape->chrdev_direction=idetape_direction_write; |
tape | 3749 | drivers/block/ide-tape.c | if (tape->merge_buffer_size) { |
tape | 3751 | drivers/block/ide-tape.c | if (tape->merge_buffer_size >= tape->data_buffer_size) { |
tape | 3753 | drivers/block/ide-tape.c | tape->merge_buffer_size=0; |
tape | 3757 | drivers/block/ide-tape.c | actually_written=IDETAPE_MIN (tape->data_buffer_size-tape->merge_buffer_size,count); |
tape | 3758 | drivers/block/ide-tape.c | memcpy_fromfs (tape->merge_buffer+tape->merge_buffer_size,buf_ptr,actually_written); |
tape | 3759 | drivers/block/ide-tape.c | buf_ptr+=actually_written;tape->merge_buffer_size+=actually_written;count-=actually_written; |
tape | 3761 | drivers/block/ide-tape.c | if (tape->merge_buffer_size == tape->data_buffer_size) { |
tape | 3762 | drivers/block/ide-tape.c | tape->merge_buffer_size=0; |
tape | 3763 | drivers/block/ide-tape.c | retval=idetape_add_chrdev_write_request (drive,tape->capabilities.ctl,tape->merge_buffer); |
tape | 3769 | drivers/block/ide-tape.c | while (count >= tape->data_buffer_size) { |
tape | 3770 | drivers/block/ide-tape.c | memcpy_fromfs (tape->merge_buffer,buf_ptr,tape->data_buffer_size); |
tape | 3771 | drivers/block/ide-tape.c | buf_ptr+=tape->data_buffer_size;count-=tape->data_buffer_size; |
tape | 3772 | drivers/block/ide-tape.c | retval=idetape_add_chrdev_write_request (drive,tape->capabilities.ctl,tape->merge_buffer); |
tape | 3773 | drivers/block/ide-tape.c | actually_written+=tape->data_buffer_size; |
tape | 3780 | drivers/block/ide-tape.c | memcpy_fromfs (tape->merge_buffer,buf_ptr,count); |
tape | 3781 | drivers/block/ide-tape.c | tape->merge_buffer_size+=count; |
tape | 3821 | drivers/block/ide-tape.c | idetape_tape_t *tape=&(drive->tape); |
tape | 3832 | drivers/block/ide-tape.c | if (tape->chrdev_direction == idetape_direction_write) { |
tape | 3837 | drivers/block/ide-tape.c | if (tape->chrdev_direction == idetape_direction_read && cmd != MTIOCTOP) |
tape | 3851 | drivers/block/ide-tape.c | mtget.mt_dsreg=(tape->data_buffer_size << MT_ST_BLKSIZE_SHIFT) & MT_ST_BLKSIZE_MASK; |
tape | 3860 | drivers/block/ide-tape.c | mtpos.mt_blkno=tape->block_address; |
tape | 3926 | drivers/block/ide-tape.c | idetape_tape_t *tape=&(drive->tape); |
tape | 3958 | drivers/block/ide-tape.c | if (tape->chrdev_direction == idetape_direction_read) |
tape | 4008 | drivers/block/ide-tape.c | idetape_tape_t *tape=&(drive->tape); |
tape | 4013 | drivers/block/ide-tape.c | if (tape->chrdev_direction == idetape_direction_read) { |
tape | 4020 | drivers/block/ide-tape.c | tape->merge_buffer_size=tape->merge_buffer_offset=0; |
tape | 4021 | drivers/block/ide-tape.c | while (tape->first_stage != NULL) { |
tape | 4029 | drivers/block/ide-tape.c | if (tape->active_data_request == &(tape->first_stage->rq)) |
tape | 4030 | drivers/block/ide-tape.c | idetape_wait_for_request (tape->active_data_request); |
tape | 4033 | drivers/block/ide-tape.c | errors=tape->first_stage->rq.errors; |
tape | 4064 | drivers/block/ide-tape.c | if (!tape->capabilities.sprev) |
tape | 4070 | drivers/block/ide-tape.c | if (!tape->capabilities.sprev) |
tape | 4075 | drivers/block/ide-tape.c | if (!tape->capabilities.sprev) |
tape | 4094 | drivers/block/ide-tape.c | idetape_tape_t *tape=&(drive->tape); |
tape | 4109 | drivers/block/ide-tape.c | if (tape->busy) { |
tape | 4114 | drivers/block/ide-tape.c | tape->busy=1; |
tape | 4117 | drivers/block/ide-tape.c | allocation_length=tape->data_buffer_size; |
tape | 4118 | drivers/block/ide-tape.c | if (tape->data_buffer_size % IDETAPE_ALLOCATION_BLOCK) |
tape | 4122 | drivers/block/ide-tape.c | if (tape->data_buffer == NULL) |
tape | 4123 | drivers/block/ide-tape.c | tape->data_buffer=kmalloc (allocation_length,GFP_KERNEL); |
tape | 4124 | drivers/block/ide-tape.c | if (tape->data_buffer == NULL) |
tape | 4126 | drivers/block/ide-tape.c | if (tape->merge_buffer == NULL) |
tape | 4127 | drivers/block/ide-tape.c | tape->merge_buffer=kmalloc (allocation_length,GFP_KERNEL); |
tape | 4128 | drivers/block/ide-tape.c | if (tape->merge_buffer == NULL) { |
tape | 4129 | drivers/block/ide-tape.c | kfree (tape->data_buffer); |
tape | 4132 | drivers/block/ide-tape.c | tape->busy=0; |
tape | 4137 | drivers/block/ide-tape.c | if (!tape->block_address_valid) { |
tape | 4140 | drivers/block/ide-tape.c | tape->busy=0; |
tape | 4156 | drivers/block/ide-tape.c | idetape_tape_t *tape=&(drive->tape); |
tape | 4165 | drivers/block/ide-tape.c | if (tape->chrdev_direction == idetape_direction_write) { |
tape | 4172 | drivers/block/ide-tape.c | if (tape->chrdev_direction == idetape_direction_read) { |
tape | 4184 | drivers/block/ide-tape.c | kfree (tape->data_buffer); |
tape | 4185 | drivers/block/ide-tape.c | tape->data_buffer=NULL; |
tape | 4186 | drivers/block/ide-tape.c | if (!tape->merge_buffer_size) { |
tape | 4187 | drivers/block/ide-tape.c | kfree (tape->merge_buffer); |
tape | 4188 | drivers/block/ide-tape.c | tape->merge_buffer=NULL; |
tape | 4193 | drivers/block/ide-tape.c | tape->busy=0; |
tape | 4282 | drivers/block/ide-tape.c | idetape_tape_t *tape=&(drive->tape); |
tape | 4291 | drivers/block/ide-tape.c | if (tape->current_number_of_stages>=tape->max_number_of_stages) { |
tape | 4301 | drivers/block/ide-tape.c | buffers_num=tape->data_buffer_size / IDETAPE_ALLOCATION_BLOCK; |
tape | 4302 | drivers/block/ide-tape.c | if (tape->data_buffer_size % IDETAPE_ALLOCATION_BLOCK) |
tape | 4454 | drivers/block/ide-tape.c | idetape_tape_t *tape=&(drive->tape); |
tape | 4460 | drivers/block/ide-tape.c | tape->max_number_of_stages+=IDETAPE_INCREASE_STAGES_RATE* |
tape | 4463 | drivers/block/ide-tape.c | if (tape->max_number_of_stages >= IDETAPE_MAX_PIPELINE_STAGES) |
tape | 4464 | drivers/block/ide-tape.c | tape->max_number_of_stages = IDETAPE_MAX_PIPELINE_STAGES; |
tape | 4467 | drivers/block/ide-tape.c | printk ("Maximum number of stages: %d\n",tape->max_number_of_stages); |
tape | 4482 | drivers/block/ide-tape.c | idetape_tape_t *tape=&(drive->tape); |
tape | 4489 | drivers/block/ide-tape.c | stage->prev=tape->last_stage; |
tape | 4490 | drivers/block/ide-tape.c | if (tape->last_stage != NULL) |
tape | 4491 | drivers/block/ide-tape.c | tape->last_stage->next=stage; |
tape | 4493 | drivers/block/ide-tape.c | tape->first_stage=tape->next_stage=stage; |
tape | 4494 | drivers/block/ide-tape.c | tape->last_stage=stage; |
tape | 4495 | drivers/block/ide-tape.c | if (tape->next_stage == NULL) |
tape | 4496 | drivers/block/ide-tape.c | tape->next_stage=tape->last_stage; |
tape | 4497 | drivers/block/ide-tape.c | tape->current_number_of_stages++; |
tape | 4509 | drivers/block/ide-tape.c | idetape_tape_t *tape=&(drive->tape); |
tape | 4516 | drivers/block/ide-tape.c | if (tape->first_stage == NULL) { |
tape | 4520 | drivers/block/ide-tape.c | if (tape->active_stage == tape->first_stage) { |
tape | 4525 | drivers/block/ide-tape.c | stage=tape->first_stage; |
tape | 4526 | drivers/block/ide-tape.c | tape->first_stage=stage->next; |
tape | 4528 | drivers/block/ide-tape.c | tape->current_number_of_stages--; |
tape | 4529 | drivers/block/ide-tape.c | if (tape->first_stage == NULL) { |
tape | 4530 | drivers/block/ide-tape.c | tape->last_stage=NULL; |
tape | 4532 | drivers/block/ide-tape.c | if (tape->next_stage != NULL) |
tape | 4534 | drivers/block/ide-tape.c | if (tape->current_number_of_stages) |
tape | 4548 | drivers/block/ide-tape.c | idetape_tape_t *tape=&(drive->tape); |
tape | 4550 | drivers/block/ide-tape.c | if (tape->next_stage == NULL) |
tape | 4553 | drivers/block/ide-tape.c | if (tape->active_data_request == NULL) { |
tape | 4555 | drivers/block/ide-tape.c | (void) (ide_do_drive_cmd (drive,tape->active_data_request,ide_end)); |
tape | 4567 | drivers/block/ide-tape.c | idetape_tape_t *tape=&(drive->tape); |
tape | 4568 | drivers/block/ide-tape.c | idetape_pipeline_stage_t *stage=tape->next_stage; |
tape | 4581 | drivers/block/ide-tape.c | idetape_copy_buffer_from_stage (stage,tape->data_buffer); |
tape | 4583 | drivers/block/ide-tape.c | rq->buffer=tape->data_buffer; |
tape | 4584 | drivers/block/ide-tape.c | tape->active_data_request=rq; |
tape | 4585 | drivers/block/ide-tape.c | tape->active_stage=stage; |
tape | 4586 | drivers/block/ide-tape.c | tape->next_stage=stage->next; |
tape | 513 | drivers/block/ide-tape.h | if (hwif->tape_drive->tape.request_status) { \ |
tape | 515 | drivers/block/ide-tape.h | hwif->tape_drive->tape.last_status=GET_STAT(); \ |
tape | 516 | drivers/block/ide-tape.h | hwif->tape_drive->tape.request_status=0; \ |
tape | 767 | drivers/block/ide.c | drive->tape.reset_issued=1; |
tape | 346 | drivers/block/ide.h | idetape_tape_t tape; /* for ide-tape.c */ |
tape | 198 | drivers/block/triton.c | size = drive->tape.pc->request_transfer; |