X-Git-Url: https://git.gag.com/?a=blobdiff_plain;ds=sidebyside;f=ndmp-src%2Fndma_tape.c;h=c3271acb3b2598bc29da03c18c33f8128c716739;hb=cd0b924f27312d57bd42f6c4fae2b795139e2d0b;hp=b27c1cb05e10c8b5ef37eefa580d045ee8d84b36;hpb=011a59f5a54864108a16af570a6b287410597cc2;p=debian%2Famanda diff --git a/ndmp-src/ndma_tape.c b/ndmp-src/ndma_tape.c index b27c1cb..c3271ac 100644 --- a/ndmp-src/ndma_tape.c +++ b/ndmp-src/ndma_tape.c @@ -468,8 +468,8 @@ ndmta_write_quantum (struct ndm_session *sess) ndmp9_error error; again: - n_read = n_avail = ndmchan_n_avail (ch); - if (n_avail == 0) { + n_read = n_avail = ndmchan_n_avail_record (ch, count); + if (n_avail < count) { /* allow to drain */ return did_something; } @@ -487,7 +487,7 @@ ndmta_write_quantum (struct ndm_session *sess) if (n_read > ta->mover_state.bytes_left_to_read) n_read = ta->mover_state.bytes_left_to_read; - if (n_read == 0) { + if (n_read < count) { /* Active, but paused awaiting MOVER_READ request */ return did_something; /* mover blocked */ } @@ -587,6 +587,10 @@ ndmta_write_quantum (struct ndm_session *sess) n_avail = ta->mover_state.record_size - record_off; if (n_read > n_avail) n_read = n_avail; + if (n_read != done_count) { + dbprintf("lost %lu bytes %lu %u\n", done_count - n_read, done_count, n_read); + n_read = done_count; + } data = &ta->tape_buffer[record_off];