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
/* 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 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];
- * "@(#)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 <fstab.h>
#define MWORD(m,i) (m[(unsigned)(i-1)/MLEN])
#include <fstab.h>
#define MWORD(m,i) (m[(unsigned)(i-1)/MLEN])
-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)
- s = (ip->di_size + BSIZE-1) / BSIZE;
+ s = (ip->di_size + FSIZE-1) / FSIZE;
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));
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;
-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 */
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 */
-static char *sccsid = "@(#)tape.c 1.3 (Berkeley) %G%";
+static char *sccsid = "@(#)tape.c 1.4 (Berkeley) %G%";
-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<TP_BSIZE; i++)
tblock[trecno][i] = *dp++;
tblock[trecno][i] = *dp++;
trecno++;
spcl.c_tapea++;
if(trecno >= NTREC)
flusht();
}
trecno++;
spcl.c_tapea++;
if(trecno >= NTREC)
flusht();
}
+dmpblk(blkno, size)
+ daddr_t blkno;
+ int size;
- 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();
}
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);
-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;