Ultrix dump to TK50 not using entire tape?

Eric Goldman goldman at ucsfcca.UUCP
Fri Mar 28 12:00:43 AEST 1986


[]
In article <257 at cirl.UUCP> das at cirl.UUCP (Dave Steffens) writes:
>We are running Ultrix version 1.1 on a uVAX II with TK50 cartridge tape drive.
>When dumping our main filesystem to TK50 tape, we noticed that each cartridge
>appears to hold only about 40Mb instead of its rated capacity of 95Mb.
>What's going on here?
>
>P.S. The TK50 is **very** slow -- it takes almost 3 hours to put 40Mb of dump
>on the TK50 whereas it takes only about 45 minutes to put 40Mb of dump
>on our ancient PDP11/34 magtape (Digidata 800bpi 45ips).
>-- 
>{harvard,mit-eddie,think}!eplunix!earvax!das	David Allan Steffens
>243 Charles St., Boston, MA 02114		Eaton-Peabody Laboratory
>(617) 523-7900 x2748				Mass. Eye & Ear Infirmary

Your problem is that your are dumping tapes using the default blocking factor
(10) , and the default tape size (2300).  An undocumented "feature" of dump is
that you can specify another blocking factor.  We have a uVAX II running
Ultrix 1.1, and we dump and restore using the maximum blocking factor, 126,
and a "large" tape length of 4800.  We have crammed > 80 MB onto a TK50, as
follows:

	dump 0ubs 126 4800 /usr

There is one major "gotcha," however:  restore, as provided in standard 4.2bsd
and Ultrix, does not know how to read these 126-blocking-factor tapes!  It has
a blocking factor of 10 hardwired into the code.  Sun has fixed this in their
distribution, but we VAX users have to modify the restore source and create a
version of restore which can work with these tapes.  I took the quick-and-
dirty approach and created restore126, which has two lines added to the file,
tape.c, (renamed tape126.c), as follows:

*** tape.c      Wed Oct 16 10:38:24 1985
--- tape126.c   Wed Oct 16 10:38:24 1985
***************
*** 12,17
  #include <setjmp.h>
  #include <sys/stat.h>

  static long   fssize;
  static int    mt = -1;
  static int    pipein = 0;

--- 12,20 -----
  #include <setjmp.h>
  #include <sys/stat.h>

+ #undef NTREC
+ #define NTREC 126
+
  static long   fssize;
  static int    mt = -1;
  static int    pipein = 0;

As you can see, I simply changed the hardwired blocking factor, NTREC, from 10
(as defined in the include file, /usr/include/dumprestor.h) to 126.  A more
elegant solution would read the command line for the b flag, as does dump, and
allocate memory appropriately for the blocking factor.  Since my quick fix has
worked perfectly for several months now (dumps go > 3 times faster, and
restores have been quick and error-free), I have not been inclined to do a
nicer fix.

If you do not have source, I will mail you a uuencoded version of the
restore126 binary.  Dump, as mentioned, needs no modification, since the b flag
is there, albeit undocumented.

BTW, you should also use the 126 blocking factor for tar, and you'll really
see the TK50 stream:

	tar cb 126 whatever
	tar xpb 126 whatever

--Eric S. Goldman, M.D.
  UCSF School of Medicine
  ARPA: cope.ucsf!goldman at ucsf-cgl.ARPA
  UUCP: ucbvax!ucsfcgl!cope.ucsf!goldman



More information about the Comp.unix.wizards mailing list