[comp.unix.xenix] dd error?

barton@holston.UUCP (barton) (02/10/89)

When attempting to pipe tar output to dd for a
larger blocking factor with the line:
tar cf - . | dd obs=512k > /dev/rct0
I get an error from dd saying: arguement 512k out of range.

This in on SCO 2.2.1 286 Xenix.

Suggestion appreciated.


Barton A. Fisk                Voice: 318-439-5984
Barton A. Fisk & Co.
PO Box 1781 
Lake Charles, La.  70602-1781
 
UUCP: { texbell, uunet, killer }!warble!holston!barton

----------------------------------------------
+++++++ "Hal, open the pod-bay doors" - Dave
----------------------------------------------

cdold@starfish.Convergent.COM (Clarence Dold) (02/11/89)

From article <6@holston.UUCP>, by barton@holston.UUCP (barton):
> When attempting to pipe tar output to dd for a
> larger blocking factor with the line:
> tar cf - . | dd obs=512k > /dev/rct0
> I get an error from dd saying: arguement 512k out of range.
Two possibilities:
1) You're maximum process size precludes allocating a buffer of that 
	size.  ( You can probably find the max proc size at boot time )
2) The DMA hardware for the tape drive can't handle a transfer of that
	size.  Some DMA controllers have a transfer count register of
	16 bits, good for 64k worth of transfers, which might correspond
	to 128k bytes to tape, and 33MB to disk.

-- 
Clarence A Dold - cdold@starfish.Convergent.COM         (408) 434-2083
                ...pyramid!ctnews!professo!dold         MailStop 18-011
                P.O.Box 6685, San Jose, CA 95150-6685

edwin@ruuinf.UUCP (Edwin Kremer) (02/13/89)

   In article <6@holston.UUCP>, barton@holston.UUCP (barton) writes:
   > When attempting to pipe tar output to dd for a
   > larger blocking factor with the line:
   > tar cf - . | dd obs=512k > /dev/rct0
   > I get an error from dd saying: arguement 512k out of range.

I checked the source code on our Harris HCX-9, see a part of
the comments below:

   /* The BIG parameter is machine dependent.  It should be a long integer  */
   /* constant that can be used by the number parser to check the validity  */
   /* of numeric parameters.  On 16-bit machines, it should probably be     */
   /* the maximum unsigned integer, 0177777L.  On 32-bit machines where     */
   /* longs are the same size as ints, the maximum signed integer is more   */
   /* appropriate.  This value is 017777777777L.                            */
   #define BIG	017777777777L

The value 512k is checked against BIG to see if you're using a reasonable
output buffer size. Well, dd concludes you're not :-)
I guess you're on a 16-bit machine, sorry...

						--[ Edwin ]--

-- 
Edwin Kremer, Department of Computer Science, University of Utrecht
Padualaan 14,  P.O. Box 80.089,  3508 TB  Utrecht,  The Netherlands
Phone: +31 - 30 - 534104        |  UUCP    : ...!hp4nl!ruuinf!edwin
    "I speak for myself ..."    |  INTERNET: edwin@cs.ruu.nl