From owner-freebsd-hackers Sun Oct 29 05:22:01 1995 Return-Path: owner-hackers Received: (from root@localhost) by freefall.freebsd.org (8.6.12/8.6.6) id FAA21832 for hackers-outgoing; Sun, 29 Oct 1995 05:22:01 -0800 Received: from nanolon.gun.de (nanolon.gun.de [192.109.159.5]) by freefall.freebsd.org (8.6.12/8.6.6) with ESMTP id FAA21806 ; Sun, 29 Oct 1995 05:21:45 -0800 Received: (from uucp@localhost) by nanolon.gun.de (8.6.8.1/8.6.6) id NAA27361; Sun, 29 Oct 1995 13:42:30 +0100 Received: from knobel.gun.de (localhost [127.0.0.1]) by knobel.gun.de (8.6.12/8.6.12) with SMTP id VAA03343; Sat, 28 Oct 1995 21:06:00 +0100 Date: Sat, 28 Oct 1995 21:06:00 +0100 (MET) From: Andreas Klemm To: hackers@freebsd.org, current@freebsd.org cc: jkh@freebsd.org, rb@gtn.com, mg@gtn.com, mlc@wup.de Subject: several diffs for dump(8) to display write throughput and such...c Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-hackers@freebsd.org Precedence: bulk Hi ! The dump utility in Solaris 2.4 has the nice feature, to show the write throughput, when dumping to tape. I missed this one in FreeBSD's dump utility. Therefore I added this feature and am really satisfied with the result ;-) Look this dump using a 5GB Sun DAT (Archive Python with data compression): DUMP: Date of this level 0 dump: Sat Oct 28 20:28:29 1995 DUMP: Date of last level 0 dump: the epoch DUMP: Dumping /dev/rsd0s3d (/local) to /dev/nrst0 DUMP: mapping (Pass I) [regular files] DUMP: mapping (Pass II) [directories] DUMP: estimated 687051 tape blocks on 0.14 tape(s). DUMP: dumping (Pass III) [directories] DUMP: dumping (Pass IV) [regular files] DUMP: 18.62% done, finished in 0:21 DUMP: 40.41% done, finished in 0:14 DUMP: 63.04% done, finished in 0:08 DUMP: 83.35% done, finished in 0:03 DUMP: DUMP: 688558 tape blocks on 1 volumes(s) >>DUMP: DUMP: finished in 1451 seconds, throughput 474 KBytes/sec DUMP: level 0 dump on Sat Oct 28 20:28:29 1995 DUMP: Closing /dev/nrst0 DUMP: DUMP IS DONE I hope you like this feature, too. Please, could someone apply these diffs to FreeBSD-current and FreeBSD-stable (2.1) if you should agree with me, that it's worth to add these changes ?! Some other things that I changed in the hope, it's useful to everybody: o changed the default tape from /dev/rmt8 to /dev/nrst0 Since rmt8 doesn't exist anymore and /dev/nrst0 is the first tape device. I choosed the no rewind device, since it's the default in nowadays, to write multiple volumes to one large DAT or Tape or whatelse. And updated the manpage o changed the example in the manpage. Choosed /dev/nrst0 instead of /dev/nrst1. Not important, but why not use the first SCSI tape drive ? I think most people only have one main backup device... o added a note in the manpage, that the blocksize has to be equal or less 32 Kbyte (b option). Using values over 32 is ok, too. dump runs without problems, BUT YOU ARE UNABLE TO RESTORE THAT BACKUP, since when using restore, the scsi tape subsystem (st(4)) reports to you the following message, if you try to read a dump with blocksizes over 32K: "st0: 33792-byte record too big" Perhaps dump should report an error directly ?!?! What do you think of this ?! I could add this feature, if you like. BTW, who can tell me the reason for that limitation concerning st(4) ?! I don't understand it. When using Suns dump/restore and ufsdump/ufsrestore commands, then I can use blocksizes up to 96 (recommended from Sun for DAT's) and 128 for Exabytes (if I remember right)... Why only 32K in FreeBSD ??? It's a message from the st(4) driver.... Best regards Andreas /// *** main.c.orig Sat Oct 28 18:53:47 1995 --- main.c Sat Oct 28 20:08:38 1995 *************** *** 440,445 **** --- 440,446 ---- (void)dumpino(dp, ino); } + (void)time((time_t *)&(tend_writing)); /* AKL end time */ spcl.c_type = TS_END; for (i = 0; i < ntrec; i++) writeheader(maxino - 1); *************** *** 448,453 **** --- 449,457 ---- else msg("DUMP: %ld tape blocks on %d volumes(s)\n", spcl.c_tapea, spcl.c_volume); + msg("DUMP: finished in %d seconds, throughput %d KBytes/sec\n", + tend_writing-tstart_writing, + spcl.c_tapea/(tend_writing-tstart_writing)); /* AKL */ putdumptime(); trewind(); broadcast("DUMP IS DONE!\7\7\n"); *** pathnames.h.orig Thu May 26 08:34:04 1994 --- pathnames.h Sat Oct 28 20:08:54 1995 *************** *** 35,41 **** #include ! #define _PATH_DEFTAPE "/dev/rmt8" #define _PATH_DTMP "/etc/dtmp" #define _PATH_DUMPDATES "/etc/dumpdates" #define _PATH_LOCK "/tmp/dumplockXXXXXX" --- 35,41 ---- #include ! #define _PATH_DEFTAPE "/dev/nrst0" /* AKL */ #define _PATH_DTMP "/etc/dtmp" #define _PATH_DUMPDATES "/etc/dumpdates" #define _PATH_LOCK "/tmp/dumplockXXXXXX" *** dump.h.orig Tue May 30 08:08:52 1995 --- dump.h Sat Oct 28 18:57:58 1995 *************** *** 79,84 **** --- 79,85 ---- int blockswritten; /* number of blocks written on current tape */ int tapeno; /* current tape number */ time_t tstart_writing; /* when started writing the first tape block */ + time_t tend_writing; /* after writing the last tape block AKL */ struct fs *sblock; /* the file system super block */ char sblock_buf[MAXBSIZE]; long dev_bsize; /* block size of underlying disk device */ *** dump.8.orig Sat Jul 15 16:46:33 1995 --- dump.8 Sat Oct 28 20:22:30 1995 *************** *** 85,91 **** This option overrides the calculation of tape size based on length and density. .It Cm b Ar blocksize ! The number of kilobytes per dump record. .It Cm h Ar level Honor the user .Dq nodump --- 85,92 ---- This option overrides the calculation of tape size based on length and density. .It Cm b Ar blocksize ! The number of kilobytes per dump record. The maximum value ! is 32. .It Cm h Ar level Honor the user .Dq nodump *************** *** 102,108 **** .Ar file may be a special device file like ! .Pa /dev/rmt12 (a tape drive), .Pa /dev/rsd1c (a disk drive), --- 103,109 ---- .Ar file may be a special device file like ! .Pa /dev/rst0 (a tape drive), .Pa /dev/rsd1c (a disk drive), *************** *** 256,262 **** .It Always start with a level 0 backup, for example: .Bd -literal -offset indent ! /sbin/dump 0uf /dev/nrst1 /usr/src .Ed .Pp This should be done at set intervals, say once a month or once every two months, --- 257,263 ---- .It Always start with a level 0 backup, for example: .Bd -literal -offset indent ! /sbin/dump 0uf /dev/nrst0 /usr/src .Ed .Pp This should be done at set intervals, say once a month or once every two months, *************** *** 282,288 **** rotated out of the dump cycle and fresh tapes brought in. .Sh FILES .Bl -tag -width /etc/dumpdates -compact ! .It Pa /dev/rmt8 default tape unit to dump to .It Pa /etc/dumpdates dump date records --- 283,289 ---- rotated out of the dump cycle and fresh tapes brought in. .Sh FILES .Bl -tag -width /etc/dumpdates -compact ! .It Pa /dev/nrst0 default tape unit to dump to .It Pa /etc/dumpdates dump date records *************** *** 334,336 **** --- 335,346 ---- A .Nm dump command appeared in Version 6 AT&T UNIX. + .Pp + Additional dump message (similar to Solaris 2) + by Andreas Klemm reporting + .Nm backup time + in seconds and + .Nm write performance + in Kbytes per second. Changed default dump device from + the old fashioned rmt8 device to /dev/nrst0. + Appeared first in FreeBSD 2.2. -- $$ apsfilter - magic print filter 4lpd @home : andreas@knobel.gun.de $$ ftp://sunsite.unc.edu @work : andreas@sunny.wup.de $$ /pub/Linux/system/Printing/aps-491.tgz knobel: >>> powered by FreeBSD <<<