[comp.sys.sun] Output blocksize on Fujitsu 9-track

sid@ucbvax.berkeley.edu (S. Cowles) (12/08/90)

I've had trouble with the following operation:

    dd if=gigo of=/dev/rmt8 obs=XXk conv=sync

the computer running this is a Sun 3/280 with 4.0.3, the tape drive is a
Fujitsu 244X set at 6250bpi. For XX, the largest number I've had success
with is 63K. I'd like to use 256k but dd complains that there is an
invalid write parameter. When XX is 63 and smaller, the operation works
fine, no surprises.  64 and larger blocksizes cause the error. Anyone have
any ideas?  Thanks.

scowles@ccc.nersc.gov

henry@zoo.toronto.edu (Henry Spencer) (12/09/90)

In article <638@brchh104.bnr.ca> mtxinu!sybase!sid@ucbvax.berkeley.edu (S. Cowles) writes:
>...When XX is 63 and smaller, the operation works
>fine, no surprises.  64 and larger blocksizes cause the error...

You don't specify what controller your magtape drive is on.  For a guess,
it's a Xylogics 472.  The byte-count field on that controller is 16 bits.
It is incapable of writing a block bigger than 64K-1 bytes.

"The average pointer, statistically,    |Henry Spencer at U of Toronto Zoology
points somewhere in X." -Hugh Redelmeier| henry@zoo.toronto.edu   utzoo!henry

wolfgang@uunet.uu.net (Wolfgang S. Rupprecht) (12/11/90)

henry@zoo.toronto.edu (Henry Spencer) writes:
>In article <638@brchh104.bnr.ca> mtxinu!sybase!sid@ucbvax.berkeley.edu (S. Cowles) writes:
>>...When XX is 63 and smaller, the operation works
>>fine, no surprises.  64 and larger blocksizes cause the error...
>You don't specify what controller your magtape drive is on.  For a guess,
>it's a Xylogics 472.  The byte-count field on that controller is 16 bits.
>It is incapable of writing a block bigger than 64K-1 bytes.

SCSI itself has a similar limit.  Thats why one can't get more than 126
blocks of 512 bytes in one tape read or write.

Wolfgang Rupprecht    wolfgang@wsrcc.com (or) uunet!wsrcc!wolfgang
Snail Mail Address:   Box 6524, Alexandria, VA 22306-0524

hue@island.uu.net (Colonel Panic) (12/19/90)

In article <747@brchh104.bnr.ca>, wsrcc!wolfgang@uunet.uu.net (Wolfgang S. Rupprecht) writes:
> henry@zoo.toronto.edu (Henry Spencer) writes:
> >You don't specify what controller your magtape drive is on.  For a guess,
> >it's a Xylogics 472.  The byte-count field on that controller is 16 bits.
> >It is incapable of writing a block bigger than 64K-1 bytes.
> 
> SCSI itself has a similar limit.  Thats why one can't get more than 126
> blocks of 512 bytes in one tape read or write.

Wrong.  The obvious reason why there is a 63K limit is that most device
drivers don't supply their own minphys(), but just hand physio() the
default minphys(), which (historically) limits the size of raw I/O to 63K.
I believe this dates back to limitations of the UNIBUS mapping registers
on the PDP-11.  (I'm not that old, I just heard this and it made sense)

This means you'll probably not be able to write a tape block > 63K even if
the tape controller supports it.

[41]island:hue: adb /vmunix
minphys?6i
_minphys:
_minphys:		linkw	a6,#0
			movl	a6@(8),a0
			cmpl	#0xfc00,a0@(0x14)
			bles	_minphys+0x1a
			movl	#0xfc00,a0@(0x14)
			unlk	a6

Hmm, looks like a brave (or foolish) soul could kick this number up if
they had only a binary of the device driver and really wanted to see if
they could get xfers > 63K.  I bet there are drivers out there that depend
on their strategy routine never being passed a buffer with b_bcount >=64K.

Jonathan Hue	Island Graphics Corp.	uunet!island!hue   hue@island.com