[TUHS] PDP-7 UNIX filesystem

Larry McVoy lm at mcvoy.com
Wed Oct 23 12:19:30 AEST 2019


On Tue, Oct 22, 2019 at 07:02:03PM -0700, Kurt H Maier wrote:
> On Tue, Oct 22, 2019 at 05:07:33PM -0700, Mary Ann Horton wrote:
> > dd is deprecated?? I'm surprised. I use it all the time. 
> 
> dd is not deprecated.  The maintainer of the jargon file is not a
> reliable narrator.  dd(1) is even specified in IEEE Std 1003.1-2017,
> which mentions the JCL history and explains that it takes 'operands' and
> not 'options' to retain compatibility with the original syntax.
> 
> dd(1) on Plan 9 changes to regular option flags, such as -if= and -of=,
> and some folks get disproportionately annoyed by the change.  Can't
> please everyone, I guess.

I really need to move this into the distros, it's dd on steriods and the
docs don't list the latest options, I made it go backwards, I made it
use the crc/xor stuff that bk has, I made it use the compression stuff
that bk has:

LMDD(8)                             LMBENCH                            LMDD(8)



NAME
       lmdd - move io for performance and debugging tests

SYNOPSIS
       lmdd [ option=value ] ...

DESCRIPTION
       lmdd  copies a specified input file to a specified output with possible
       conversions.  This program is primarily useful for timing I/O since  it
       prints out the timing statistics after completing.

OPTIONS
       if=name        Input  file is taken from name; internal is the default.
                      internal  is  a  special  file  that  acts  like   Sun's
                      /dev/zero,  i.e.,  it provides a buffer of zeros without
                      doing a system call to get them.
                      The following file names are taken to mean the  standard
                      input: -, 0, or stdin.

       of=name        Output file is taken from name; internal is the default.
                      internal is a special file  that  acts  like  /dev/null,
                      without doing a system call to get rid of the data.
                      The  following file names are taken to mean the standard
                      output: -, 1, or stdout.
                      The following file names are taken to mean the  standard
                      error: 2, or stderr.

       bs=n           Input  and  output  block  size  n bytes (default 8192).
                      Note that this is different from dd(1),  it  has  a  512
                      byte  default.    Also  note  that the block size can be
                      followed by 'k' or 'm' to indicate kilo bytes (*1024) or
                      megabytes (*1024*1024), respectively.

       ipat=n         If  n  is  non  zero, expect a known pattern in the file
                      (see opat).  Mismatches will  be  displayed  as  "ERROR:
                      off=%d  want=%x got=%x".  The pattern is a sequence of 4
                      byte integers with the first 0, second  1,  and  so  on.
                      The default is not to check for the pattern.

       opat=n         If n is non zero, generate a known pattern on the output
                      stream.  Used for  debugging  file  system  correctness.
                      The default is not to generate the pattern.

       mismatch=n     If  n  is  non zero, stop at the first mismatched value.
                      Used with ipat.

       skip=n         Skip n input blocks before starting copy.

       fsync=n        If n is non-zero,  call  fsync(2)  on  the  output  file
                      before exiting or printing timing statistics.

       sync=n         If  n is non-zero, call sync(2) before exiting or print-
                      ing timing statistics.

       rand=n         This argument, by default off, turns on random behavior.
                      The  argument  is not a flag, it is a size, that size is
                      used as the upper bound for the seeks.  Also  note  that
                      the block size can be followed by 'k' or 'm' to indicate
                      kilo bytes (*1024) or megabytes (*1024*1024),

       flush=n        If n is non-zero and mmap(2) is available, call msync(2)
                      to invalidate the output file.  This flushes the file to
                      disk so that you don't have unmount/mount.  It is not as
                      good as mount/unmount because it just flushes file pages
                      - it misses the indirect blocks which are still  cached.
                      Not supported on all systems, compile time option.

       rusage=n       If  n  is  non-zero,  print rusage statistics as well as
                      timing statistics.  Not supported on all  systems,  com-
                      pile time option.

       count=n        Copy only n input records.

EXAMPLES
       This  is  the  most common usage, the intent is to measure disk perfor-
       mance.  The disk is a spare partition mounted on /spare.

           # mount /spare
           # lmdd if=internal of=/spare/XXX count=1000 fsync=1
           7.81 MB in 3.78 seconds (2.0676 MB/sec)

           : Flush cache
           # umount /spare
           # mount /spare

           # lmdd if=/spare/XXX of=internal
           7.81 MB in 2.83 seconds (2.7611 MB/sec)


AUTHOR
       Larry McVoy, lm at sun.com



(c)1994 Larry McVoy                 $Date$                             LMDD(8)



More information about the TUHS mailing list