int ftape_abort_operation(void) { int result = 0; int status; TRACE_FUN(ft_t_flow); if (ft_runner_status == running) { TRACE(ft_t_noise, "aborting runner, waiting"); ft_runner_status = do_abort; /* set timeout so that the tape will run to logical EOT * if we missed the last sector and there are no queue pulses. */ result = ftape_dumb_stop(); } if (ft_runner_status != idle) { if (ft_runner_status == do_abort) { TRACE(ft_t_noise, "forcing runner abort"); } TRACE(ft_t_noise, "stopping tape"); result = ftape_stop_tape(&status); ft_location.known = 0; ft_runner_status = idle; } ftape_reset_buffer(); ftape_zap_read_buffers(); ftape_set_state(idle); TRACE_EXIT result; }
void ftape_zap_write_buffers(void) { int i; for (i = 0; i < ft_nr_buffers; ++i) { ft_buffer[i]->status = done; } ftape_reset_buffer(); }