From: olson@anchor.esd.sgi.com (Dave Olson)
Newsgroups: comp.sys.sgi
Subject: Re: Problem reading a tar file on exabyte
Date: 14 Aug 92 02:05:42 GMT
Organization: Silicon Graphics, Inc.  Mountain View, CA

In <1992Aug13.181143.3629@morgan.ucs.mun.ca> agouldng@morgan.ucs.mun.ca (Allan Goulding) writes:
| I am having a problem reading a tar file on an exabyte tape. 
| Specifically, the error is:
|    tar: tape read error: Not enough space

Tar encountered a FM without finding its internal end-of-archive
record.  Most likely the tape was created with one blocking
factor, and read with another that wasn't an even divisor of
the original.

| There seems to be no mention of it in the tar man page. The message is

See 'man tps'.  tar can be used with dozens of devices, files, etc.,
and couldn't possibly document them all.

| not intuitively obvious to me. Does tar look to see that I only have
| 150MB free on disk and refuse to even extract one file? Why would a read
| operation complain about lack of space (disk, buffers)?

It isn't DISK free space.  This seemed the best overall errno
for the condition.

| The exabyte is an 8200 (252T) on an SGI 4D/360S running Irix 4.0.1.
| We have received other tapes from the same source before and have never 
| had a problem reading them. (but we were also running 3.3.3 at the time)
| 
| tar tvf seems to have no problem reading the tape. ie:
| % mt -t /dev/exabnrnsv rewind
| % tar tvf /dev/exabnrnsv
| rw-r--r-- 2965/100 46719012 Jul 20 13:22 1992 taux2.cdf
| rw-r--r-- 2965/100 46719016 Jul 20 16:21 1992 tauy2.cdf
| rw-r--r-- 2965/100 46718996 Jul 13 17:30 1992 slp.cdf
| rw-rw-rw- 2965/100 46718996 Jul 10 13:52 1992 sst.cdf
| rw-r--r-- 2965/100 46719000 Jul  9 21:32 1992 sat.cdf
| rw-r--r-- 2965/100 46719000 Jul 24 12:59 1992 sst-sat.cdf
| rw-r--r-- 2965/100 46719004 Jul  9 16:11 1992 qs-qa.cdf
| 
| But when I try to extract using "tar xovf /dev/exabnrnsv", (/dev/exabnrnsv is
| linked to /dev/mt/tps0d6nrnsv.) I get an error in syslog saying a blocksize
|  mismatch:
| NOTICE: SCSI tape #6 blocksize mismatch; blocksize on tape is 10240 bytes
| and the "not enough space" message on the screen.

Ahh; this is somewhat different than above.  It is interesting that
it happens though, as by default on SGI, tar uses a tape driver
ioctl to determine the block size, and since you didn't specify
the 'b' option (unless  you have an alias?), it should have gotten
it correctly.  When using the variable block device, you have to
specify a blocking factor (or let tar figure it out) that matches
the one used when creating the tape.  It would be interesting to
know what 'mt -t /dev/exabnrnsv blksiz' reports for that tape.

| So I naturally rewind the tape and try again with more arguments:
| % tar xovbf 10240 /dev/exabnrnsv
| The "not enough space" message is repeated on the screen but this time 
| no blocksize error message appears in syslog.
| 
| Turning on some debugging (after rewinding again) yields:
| % tar xovqqbf 10240 /dev/exabnrnsv
| myio(read): wanted 5242880 bytes, got -1
|         errno is 12: Not enough spacetar: tape read error: Not enough space
| exiting myio, firsttape 1
| exiting from done, n 2
| 
| I can read the tape with dd as a workaround but I would still like to know
| why tar will not access the tape directly. Any help in this matter will
| be most appreciated.

Since for some reason tar doesn't seem to be figuring out
the block size correctly, try specifying it explictly (10240
is wrong, that is 10240*512, you want 20).
--
Let no one tell me that silence gives consent,  |   Dave Olson
because whoever is silent dissents.             |   Silicon Graphics, Inc.
    Maria Isabel Barreno                        |   olson@sgi.com
Newsgroups: comp.sys.sgi