dump to "standard" (ie 1K file system) dump tapes
authorKirk McKusick <mckusic@ucbvax.Berkeley.EDU>
Sun, 8 Nov 1981 06:56:16 +0000 (22:56 -0800)
committerKirk McKusick <mckusic@ucbvax.Berkeley.EDU>
Sun, 8 Nov 1981 06:56:16 +0000 (22:56 -0800)
SCCS-vsn: sbin/dump/dump.h 1.3
SCCS-vsn: sbin/dump/itime.c 1.3
SCCS-vsn: sbin/dump/main.c 1.4
SCCS-vsn: sbin/dump/tape.c 1.4
SCCS-vsn: sbin/dump/traverse.c 1.3
SCCS-vsn: sbin/dump/traverse.c 1.3
SCCS-vsn: include/protocols/dumprestore.h 1.2

usr/src/include/protocols/dumprestore.h
usr/src/sbin/dump/dump.h
usr/src/sbin/dump/itime.c
usr/src/sbin/dump/main.c
usr/src/sbin/dump/tape.c
usr/src/sbin/dump/traverse.c

index 100be0d..3c2b711 100644 (file)
@@ -1,10 +1,13 @@
 /* Copyright (c) 1981 Regents of the University of California */
 
 /* Copyright (c) 1981 Regents of the University of California */
 
-/* "@(#)dumprestore.h 1.1 %G%" */
+/* "@(#)dumprestore.h 1.2 %G%" */
 
 
+#define TP_BSIZE       1024
 #define NTREC          10
 #define MLEN           16
 #define MSIZ           4096
 #define NTREC          10
 #define MLEN           16
 #define MSIZ           4096
+#define BLKING         (FSIZE/TP_BSIZE)
+#define TP_NINDIR      (TP_BSIZE/2)
 
 #define TS_TAPE        1
 #define TS_INODE       2
 
 #define TS_TAPE        1
 #define TS_INODE       2
 #define MAGIC          (int)60011
 #define CHECKSUM       (int)84446
 
 #define MAGIC          (int)60011
 #define CHECKSUM       (int)84446
 
-struct spcl {
-       int     c_type;
-       time_t  c_date;
-       time_t  c_ddate;
-       int     c_volume;
-       daddr_t c_tapea;
-       ino_t   c_inumber;
-       int     c_magic;
-       int     c_checksum;
-       struct  dinode  c_dinode;
-       int     c_count;
-       char    c_addr[BSIZE];
-} spcl;
+union u_spcl {
+       char dummy[TP_BSIZE];
+       struct  s_spcl {
+               int     c_type;
+               time_t  c_date;
+               time_t  c_ddate;
+               int     c_volume;
+               daddr_t c_tapea;
+               ino_t   c_inumber;
+               int     c_magic;
+               int     c_checksum;
+               struct  dinode  c_dinode;
+               int     c_count;
+               char    c_addr[TP_NINDIR];
+       } s_spcl;
+} u_spcl;
+
+#define spcl u_spcl.s_spcl
 
 struct idates {
        char    id_name[16];
 
 struct idates {
        char    id_name[16];
index 2f57115..9f38755 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "@(#)dump.h 1.2 (Berkeley) %G%"
+ * "@(#)dump.h 1.3 (Berkeley) %G%"
  */
 #define        NI      16
 #define        DIRPB   (BSIZE/sizeof(struct direct))
  */
 #define        NI      16
 #define        DIRPB   (BSIZE/sizeof(struct direct))
 #include "../../h/fs.h"
 #include "../../h/inode.h"
 #include "../../h/dir.h"
 #include "../../h/fs.h"
 #include "../../h/inode.h"
 #include "../../h/dir.h"
+#include "../../h/dumprestor.h"
 #include <utmp.h>
 #include <time.h>
 #include <signal.h>
 int (*signal())();
 #include <utmp.h>
 #include <time.h>
 #include <signal.h>
 int (*signal())();
-#include <dumprestor.h>
 #include <fstab.h>
 
 #define        MWORD(m,i)      (m[(unsigned)(i-1)/MLEN])
 #include <fstab.h>
 
 #define        MWORD(m,i)      (m[(unsigned)(i-1)/MLEN])
index 28e889e..bc4bd9d 100644 (file)
@@ -1,4 +1,4 @@
-static char *sccsid = "@(#)itime.c     1.2 (Berkeley) %G%";
+static char *sccsid = "@(#)itime.c     1.3 (Berkeley) %G%";
 #include "dump.h"
 
 char *prdate(d)
 #include "dump.h"
 
 char *prdate(d)
@@ -220,14 +220,15 @@ est(ip)
        long s;
 
        esize++;
        long s;
 
        esize++;
-       s = (ip->di_size + BSIZE-1) / BSIZE;
+       s = (ip->di_size + FSIZE-1) / FSIZE;
        esize += s;
        esize += s;
+       s /= FRAG;
        if (s > NDADDR) {
                s -= NDADDR;
                if (s > BSIZE / sizeof(daddr_t))
                        esize++;
                s = (s + (BSIZE/sizeof(daddr_t)) - 1) / (BSIZE/sizeof(daddr_t));
        if (s > NDADDR) {
                s -= NDADDR;
                if (s > BSIZE / sizeof(daddr_t))
                        esize++;
                s = (s + (BSIZE/sizeof(daddr_t)) - 1) / (BSIZE/sizeof(daddr_t));
-               esize += s;
+               esize += s * FRAG;
        }
 }
 
        }
 }
 
@@ -243,5 +244,5 @@ short *map;
        if(n < 0)
                return;
        esize++;
        if(n < 0)
                return;
        esize++;
-       esize += (n + (BSIZE/sizeof(short))-1) / (BSIZE/sizeof(short));
+       esize += (n + (BSIZE/sizeof(short))-1) / (BSIZE/sizeof(short)) * FRAG;
 }
 }
index fdcb51d..69c2bd1 100644 (file)
@@ -1,4 +1,4 @@
-static char *sccsid = "@(#)main.c      1.3 (Berkeley) %G%";
+static char *sccsid = "@(#)main.c      1.4 (Berkeley) %G%";
 #include "dump.h"
 
 int    notify = 0;     /* notify operator flag */
 #include "dump.h"
 
 int    notify = 0;     /* notify operator flag */
@@ -165,7 +165,7 @@ main(argc, argv)
 
        fetapes =
                (        esize          /* blocks */
 
        fetapes =
                (        esize          /* blocks */
-                       *BSIZE          /* bytes / block */
+                       *FSIZE          /* bytes / block */
                        *(1.0/density)  /* 0.1" / byte */
                  +
                         esize          /* blocks */
                        *(1.0/density)  /* 0.1" / byte */
                  +
                         esize          /* blocks */
index 6042d61..dd5565f 100644 (file)
@@ -1,33 +1,43 @@
-static char *sccsid = "@(#)tape.c      1.3 (Berkeley) %G%";
+static char *sccsid = "@(#)tape.c      1.4 (Berkeley) %G%";
 #include "dump.h"
 
 #include "dump.h"
 
-char   tblock[NTREC][BSIZE];
-daddr_t        tdaddr[NTREC];
-int    trecno;
+char   tblock[NTREC][TP_BSIZE];
+int    trecno = 0;
 
 taprec(dp)
 char *dp;
 {
        register i;
 
 
 taprec(dp)
 char *dp;
 {
        register i;
 
-       for(i=0; i<BSIZE; i++)
+       for(i=0; i<TP_BSIZE; i++)
                tblock[trecno][i] = *dp++;
                tblock[trecno][i] = *dp++;
-       tdaddr[trecno] = 0;
        trecno++;
        spcl.c_tapea++;
        if(trecno >= NTREC)
                flusht();
 }
 
        trecno++;
        spcl.c_tapea++;
        if(trecno >= NTREC)
                flusht();
 }
 
-tapsrec(d)
-daddr_t d;
+dmpblk(blkno, size)
+       daddr_t blkno;
+       int size;
 {
 {
+       int avail, blks;
 
 
-       if(d == 0)
-               return;
-       tdaddr[trecno] = d;
-       trecno++;
-       spcl.c_tapea++;
+       if (size % FRAG != 0)
+               msg("bad size to dmpblk: %d\n", size);
+       avail = NTREC - trecno;
+       for (blks = size / TP_BSIZE; blks > avail; ) {
+               bread(blkno, tblock[trecno], TP_BSIZE * avail);
+               trecno += avail;
+               spcl.c_tapea += avail;
+               flusht();
+               blkno += avail;
+               blks -= avail;
+               avail = NTREC - trecno;
+       }
+       bread(blkno, tblock[trecno], TP_BSIZE * blks);
+       trecno += blks;
+       spcl.c_tapea += blks;
        if(trecno >= NTREC)
                flusht();
 }
        if(trecno >= NTREC)
                flusht();
 }
@@ -39,22 +49,6 @@ flusht()
        register i, si;
        daddr_t d;
 
        register i, si;
        daddr_t d;
 
-       while(trecno < NTREC)
-               tdaddr[trecno++] = 1;
-
-loop:
-       d = 0;
-       for(i=0; i<NTREC; i++)
-               if(tdaddr[i] != 0)
-               if(d == 0 || tdaddr[i] < d) {
-                       si = i;
-                       d = tdaddr[i];
-               }
-       if(d != 0) {
-               bread(d, tblock[si], BSIZE);
-               tdaddr[si] = 0;
-               goto loop;
-       }
        trecno = 0;
        if (write(to, tblock[0], sizeof(tblock)) != sizeof(tblock) ){
                msg("Tape write error on tape %d\n", tapeno);
        trecno = 0;
        if (write(to, tblock[0], sizeof(tblock)) != sizeof(tblock) ){
                msg("Tape write error on tape %d\n", tapeno);
index 9468713..4dea6b8 100644 (file)
@@ -1,4 +1,4 @@
-static char *sccsid = "@(#)traverse.c  1.2 (Berkeley) %G%";
+static char *sccsid = "@(#)traverse.c  1.3 (Berkeley) %G%";
 #include "dump.h"
 
 struct fs      sblock;
 #include "dump.h"
 
 struct fs      sblock;