+ t_size = sched(taper1->disk)->act_size;
+ }
+ data_to_go = t_size - taper1->written;
+ if (data_to_go > taper1->left) {
+ data_next_tape += data_to_go - taper1->left;
+ data_lost += taper1->written + taper1->left;
+ if (taper1->state & TAPER_STATE_TAPE_STARTED) {
+ dle_free -= (conf_max_dle_by_volume - taper1->nb_dle) + 1;
+ } else {
+ dle_free -= 2;
+ new_data += t_size;
+ }
+ } else {
+ if (!(taper1->state & TAPER_STATE_TAPE_STARTED)) {
+ dle_free--;
+ new_data += t_size;
+ }
+ data_free += taper1->left - data_to_go;
+ }
+ tapeq_size += data_to_go;
+ }
+ }
+
+ new_dle = queue_length(tapeq) - dle_free;
+ driver_debug(2, _("dle_free: %d\n"), dle_free);
+ driver_debug(2, _("new_dle: %d\n"), new_dle);
+ if (new_dle > 0) {
+ if (taperflush == 0 &&
+ flush_threshold_dumped == 0 &&
+ flush_threshold_scheduled == 0) {
+ /* shortcut, will trigger taperflush_criteria and/or flush_criteria */
+ new_data += 1;
+ } else {
+ /* sum the size of the first new-dle in tapeq */
+ /* they should be the reverse taperalgo */
+ for (dp = tapeq.head;
+ dp != NULL && new_dle > 0;
+ dp = dp->next, new_dle--) {
+ new_data += sched(dp)->act_size;