Subject: DLT Tape drive issues (was dump is slow...)
To: Aaron J. Grier <agrier@poofygoof.com>
From: Louis Guillaume <lguillaume@berklee.edu>
List: netbsd-users
Date: 11/29/2006 23:47:28
Aaron J. Grier wrote:
> On Tue, Nov 28, 2006 at 09:34:51AM -0800, Chuck Swiger wrote:
>> On Nov 27, 2006, at 6:03 PM, Aaron J. Grier wrote:
>>> the whole dump -> rmt -> tape write interaction ends up going in fits
>>> and starts.
>> Agreed.  Note that you can use dd to rebuffer the output of dump,
>> which will speed things up considerably, assuming that your version
>> of dump does not support configuring the blocksize it uses.
> 
> NetBSD's dump is limited to writing 64K blocks (128 512-byte "tape
> blocks").
> 
> I get roughly 600kB/s to my DLT8000 through ssh/rmt with the following
> invocation:
> 
> 	/sbin/dump -1u -a -b 128 -h 0 -k 64 -r 128 $FILESYSTEM
> 
> dumping the root filesystem from my alpha to an i386 box (/dev/null)
> with dump vs star I get the following:
> 
> dump to /dev/null: 4203 KB/s
> star to /dev/null: 4116.75 KB/s
> dump with BSD rmt: 960 KB/s
> dump with star rmt: 989 KB/s
> star with star rmt: ~1300 KB/s
> star with bsd rmt server: 1388.26 KB/s
> 
> both with 64kB write blocks.  I'll have to try reblocking with dump to
> see how much difference that makes; thanks for the suggestion.  I know
> the DLTs can handle very large blocks, up to 16MB I think.
> 

I'd like to test some of this stuff too; but I'm starting to realize
that I need to learn more about rmt and these DLT devices. Perhaps you
can help me get past a couple things...

. What do you use for the density code? I used `85', which
  is supposed to be 70G compressed according to the manual.
  But that's supposed to be in hex. And I have no idea what
  "mt setdensity xx" is supposed to use; 85 or 133. Both
  are accepted.

  Anyway, I did an "mt erase" and all hell broke loose. The
  drive had some bad-looking errors (see below) and it
  caused the system to hang.

  How do you configure your DLT8000??

. What about the tape device? How come we use the raw device
  /dev/nrst0 rather than the block device /dev/nst0???

... If I can figure this stuff out and get reliable backups going, I'd
be happy to help with documentation specific for NetBSD.


Louis



st0: 65536-byte tape record too big for 32768-byte user buffer
st0(ahc1:0:5:0):  Check Condition on CDB: 0x08 00 00 80 00 00
    SENSE KEY:  No Additional Sense
                Incorrect Length Indicator Set
   INFO FIELD:  -32768
 COMMAND INFO:  11700 (0x2db4)
     ASC/ASCQ:  No Additional Sense Information

st0: 65536-byte tape record too big for 32768-byte user buffer
st0(ahc1:0:5:0):  Check Condition on CDB: 0x08 00 00 80 00 00
    SENSE KEY:  No Additional Sense
                Incorrect Length Indicator Set
   INFO FIELD:  -32768
 COMMAND INFO:  11700 (0x2db4)
     ASC/ASCQ:  No Additional Sense Information

ahc1:SCB 0x6 - timed out
>>>>>>>>>>>>>>>>>> Dump Card State Begins <<<<<<<<<<<<<<<<<
ahc1: Dumping Card State while idle, at SEQADDR 0x8
Card was paused
ACCUM = 0x99, SINDEX = 0x57, DINDEX = 0x26, ARG_2 = 0x1
HCNT = 0x0 SCBPTR = 0xf
SCSISIGI[0x0] ERROR[0x0] SCSIBUSL[0x0] LASTPHASE[0x1]
SCSISEQ[0x12] SBLKCTL[0x2] SCSIRATE[0x0] SEQCTL[0x10]
SEQ_FLAGS[0xc0] SSTAT0[0x5] SSTAT1[0xa] SSTAT2[0x0]
SSTAT3[0x0] SIMODE0[0x0] SIMODE1[0xa4] SXFRCTL0[0x80]
DFCNTRL[0x0] DFSTATUS[0x2d]
STACK: 0x0 0x16c 0x19c 0x3
SCB count = 32
Kernel NEXTQSCB = 2
Card NEXTQSCB = 2
QINFIFO entries:
Waiting Queue entries:
Disconnected Queue entries: 15:6
QOUTFIFO entries:
Sequencer Free SCB List: 13 0 11 8 7 2 5 6 12 10 9 4 14 1 3
Sequencer SCB Info:
  0 SCB_CONTROL[0xe8] SCB_SCSIID[0x67]
SCB_LUN[0x0] SCB_TAG[0xff]
  1 SCB_CONTROL[0xe8] SCB_SCSIID[0x67]
SCB_LUN[0x0] SCB_TAG[0xff]
  2 SCB_CONTROL[0xe8] SCB_SCSIID[0x67]
SCB_LUN[0x0] SCB_TAG[0xff]
  3 SCB_CONTROL[0xe8] SCB_SCSIID[0x67]
SCB_LUN[0x0] SCB_TAG[0xff]
  4 SCB_CONTROL[0xe8] SCB_SCSIID[0x67]
SCB_LUN[0x0] SCB_TAG[0xff]
  5 SCB_CONTROL[0xe8] SCB_SCSIID[0x67]
SCB_LUN[0x0] SCB_TAG[0xff]
  6 SCB_CONTROL[0xe8] SCB_SCSIID[0x67]
SCB_LUN[0x0] SCB_TAG[0xff]
  7 SCB_CONTROL[0xe8] SCB_SCSIID[0x67]
SCB_LUN[0x0] SCB_TAG[0xff]
  8 SCB_CONTROL[0xe8] SCB_SCSIID[0x67]
SCB_LUN[0x0] SCB_TAG[0xff]
  9 SCB_CONTROL[0xe8] SCB_SCSIID[0x67]
SCB_LUN[0x0] SCB_TAG[0xff]
 10 SCB_CONTROL[0xe8] SCB_SCSIID[0x67]
SCB_LUN[0x0] SCB_TAG[0xff]
 11 SCB_CONTROL[0xe8] SCB_SCSIID[0x67]
SCB_LUN[0x0] SCB_TAG[0xff]
 12 SCB_CONTROL[0xe8] SCB_SCSIID[0x67]
SCB_LUN[0x0] SCB_TAG[0xff]
 13 SCB_CONTROL[0xe8] SCB_SCSIID[0x67]
SCB_LUN[0x0] SCB_TAG[0xff]
 14 SCB_CONTROL[0xe8] SCB_SCSIID[0x67]
SCB_LUN[0x0] SCB_TAG[0xff]
 15 SCB_CONTROL[0x44] SCB_SCSIID[0x57]
SCB_LUN[0x0] SCB_TAG[0x6]
Pending list:
  6 SCB_CONTROL[0x40] SCB_SCSIID[0x57]
SCB_LUN[0x0]
Kernel Free SCB list: 4 5 0 8 31 7 15 30 9 10 3 14 1 12 13 11 29 28 27
26 25 24 23 22 21 20 19 18 17
 16
Untagged Q(5): 6

>>>>>>>>>>>>>>>>>
ahc1:Queuing a BDR SCB
ahc1:Bus Device Reset Message Sent
st0(ahc1:0:5:0): ahc1: no longer in timeout, status = 0
ahc1: Bus Device Reset on A:5. 1 SCBs aborted