From e79790783b6826af94196b1ecb74358a675460ed Mon Sep 17 00:00:00 2001 From: Stelian Pop Date: Fri, 20 Jul 2001 09:01:44 +0000 Subject: [PATCH] Fixed the compressed multi-volume dump + restore. --- CHANGES | 4 +++- dump/tape.c | 12 ++++++------ restore/tape.c | 3 ++- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/CHANGES b/CHANGES index c2280dd..002456f 100644 --- a/CHANGES +++ b/CHANGES @@ -1,4 +1,4 @@ -$Id: CHANGES,v 1.125 2001/07/19 09:03:44 stelian Exp $ +$Id: CHANGES,v 1.126 2001/07/20 09:01:44 stelian Exp $ Changes between versions 0.4b22 and 0.4b23 (released ????????????) ================================================================== @@ -49,6 +49,8 @@ Changes between versions 0.4b22 and 0.4b23 (released ????????????) 12. Added the -E option to dump which specify a file containing inode numbers to exclude from the dump. +13. Fixed the compressed multi-volume dump + restore. + Changes between versions 0.4b21 and 0.4b22 (released May 12, 2001) ================================================================== diff --git a/dump/tape.c b/dump/tape.c index a0910f4..f048a78 100644 --- a/dump/tape.c +++ b/dump/tape.c @@ -41,7 +41,7 @@ #ifndef lint static const char rcsid[] = - "$Id: tape.c,v 1.51 2001/07/18 13:12:33 stelian Exp $"; + "$Id: tape.c,v 1.52 2001/07/20 09:01:46 stelian Exp $"; #endif /* not lint */ #include @@ -112,7 +112,7 @@ long long tapea_bytes = 0; /* bytes_written at start of current volume */ static ssize_t atomic_read __P((int, void *, size_t)); static ssize_t atomic_write __P((int, const void *, size_t)); -static void doslave __P((int, int)); +static void doslave __P((int, int, int)); static void enslave __P((void)); static void flushtape __P((void)); static void killall __P((void)); @@ -448,7 +448,7 @@ flushtape(void) blocksthisvol += ntrec; if (!pipeout && !unlimited) { if (blocksperfile) { - if ( compressed ? csize >= blocksperfile * 1024 + if ( compressed ? csize + writesize >= blocksperfile * 1024 : blocksthisvol >= blocksperfile ) { close_rewind(); startnewtape(0); @@ -968,7 +968,7 @@ enslave(void) != sizeof i) quit("master/slave protocol botched 3\n"); #endif - doslave(cmd[0], i); + doslave(cmd[0], i, (slaves[i].pid == slp->pid)); Exit(X_FINOK); } else @@ -1014,7 +1014,7 @@ killall(void) * slaves. */ static void -doslave(int cmd, int slave_number) +doslave(int cmd, int slave_number, int first) { register int nread; int nextslave, size, eot_count, bufsize; @@ -1022,7 +1022,7 @@ doslave(int cmd, int slave_number) char *buffer; #ifdef HAVE_ZLIB struct tapebuf *comp_buf = NULL; - int compresult, do_compress = slave_number > 0; + int compresult, do_compress = !first; unsigned long worklen; #endif /* HAVE_ZLIB */ struct slave_results returns; diff --git a/restore/tape.c b/restore/tape.c index 08bb375..8864e2a 100644 --- a/restore/tape.c +++ b/restore/tape.c @@ -46,7 +46,7 @@ #ifndef lint static const char rcsid[] = - "$Id: tape.c,v 1.44 2001/07/18 14:57:46 stelian Exp $"; + "$Id: tape.c,v 1.45 2001/07/20 09:01:46 stelian Exp $"; #endif /* not lint */ #include @@ -496,6 +496,7 @@ gethdr: volno = newvol; setdumpnum(); FLUSHTAPEBUF(); + findtapeblksize(); if (gethead(&tmpbuf) == FAIL) { Dprintf(stdout, "header read failed at %ld blocks\n", (long)blksread); fprintf(stderr, "tape is not dump tape\n"); -- 2.39.5