X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=dump%2Ftape.c;h=2390c860bbdd8b0f14905dd78c69aa150e770581;hb=7422942fcabc3e5735e850fce8113e9751ddd399;hp=8cf9ce18b9aab89ed0a95c0db2edbfafe604e83e;hpb=43ef843b59f89bb96ebec8647aa23ad43ae6789c;p=dump.git diff --git a/dump/tape.c b/dump/tape.c index 8cf9ce1..2390c86 100644 --- a/dump/tape.c +++ b/dump/tape.c @@ -41,7 +41,7 @@ #ifndef lint static const char rcsid[] = - "$Id: tape.c,v 1.35 2001/03/20 09:14:58 stelian Exp $"; + "$Id: tape.c,v 1.39 2001/03/23 14:40:12 stelian Exp $"; #endif /* not lint */ #include @@ -253,7 +253,8 @@ tperror(int errnum) quit("Cannot recover\n"); /* NOTREACHED */ } - msg("write error %d blocks into volume %d: %s\n", blocksthisvol, tapeno, strerror(errnum)); + msg("write error %d blocks into volume %d: %s\n", + blocksthisvol, tapeno, strerror(errnum)); broadcast("DUMP WRITE ERROR!\n"); if (query("Do you want to rewrite this volume?")) { msg("Closing this volume. Prepare to restart with new media;\n"); @@ -297,13 +298,13 @@ do_stats(void) long txfrate = volkb / ttaken; msg("Volume %d took %d:%02d:%02d\n", tapeno, ttaken / 3600, (ttaken % 3600) / 60, ttaken % 60); - msg("Volume %d transfer rate: %ld KB/s\n", tapeno, + msg("Volume %d transfer rate: %ld kB/s\n", tapeno, txfrate); xferrate += txfrate; if (compressed) { double rate = .0005 + (double) blocks / (double) volkb; - msg("Volume %d %ldKB uncompressed, %ldKB compressed," - " compression ratio %1.3f\n", + msg("Volume %d %ldKB uncompressed, %ldkB compressed," + " %1.3f:1\n", tapeno, blocks, volkb, rate); } } @@ -884,7 +885,7 @@ restore_check_point: spcl.c_flags |= DR_NEWHEADER; if (compressed) spcl.c_flags |= DR_COMPRESSED; - writeheader((ino_t)slp->inode); + writeheader((dump_ino_t)slp->inode); spcl.c_flags &=~ DR_NEWHEADER; msg("Volume %d started with block %ld at: %s", tapeno, spcl.c_tapea, ctime(&tstart_volume)); @@ -1038,7 +1039,7 @@ doslave(int cmd, int slave_number) char *buffer; #ifdef HAVE_ZLIB struct tapebuf *comp_buf = NULL; - int compresult, complevel = 6, do_compress = 0; + int compresult, do_compress = 0; unsigned long worklen; #endif /* HAVE_ZLIB */ struct slave_results returns; @@ -1095,13 +1096,6 @@ doslave(int cmd, int slave_number) quit("master/slave protocol botched.\n"); } } - if (sigsetjmp(jmpbuf, 1) == 0) { - ready = 1; - if (!caught) - (void) pause(); - } - ready = 0; - caught = 0; /* Try to write the data... */ wrote = 0; @@ -1113,7 +1107,6 @@ doslave(int cmd, int slave_number) #ifdef HAVE_ZLIB /* - * The first NR_SLAVE blocks are not compressed. * When writing a compressed dump, each block is * written from struct tapebuf with an 4 byte prefix * followed by the data. This can be less than @@ -1121,6 +1114,7 @@ doslave(int cmd, int slave_number) * length read to the compressed length in the header * to verify that the read was good. Blocks which don't * compress well are written uncompressed. + * The first block written by each slave is not compressed. */ if (compressed) { @@ -1128,7 +1122,7 @@ doslave(int cmd, int slave_number) worklen = TP_BSIZE + writesize; if (do_compress) compresult = compress2(comp_buf->buf, &worklen, - (char *)slp->tblock[0], writesize, complevel); + (char *)slp->tblock[0], writesize, compressed); if (compresult == Z_OK && worklen <= writesize-32) { /* write the compressed buffer */ comp_buf->length = worklen; @@ -1150,6 +1144,14 @@ doslave(int cmd, int slave_number) do_compress = compressed; #endif /* HAVE_ZLIB */ + if (sigsetjmp(jmpbuf, 1) == 0) { + ready = 1; + if (!caught) + (void) pause(); + } + ready = 0; + caught = 0; + while (eot_count < 10 && size < bufsize) { #ifdef RDUMP if (host)