Subject: Re: SYS_INST errors
To: Nathan Gelbard <gelbard@engr.orst.edu>
From: Jason Thorpe <thorpej@nas.nasa.gov>
List: port-hp300
Date: 04/07/1997 11:19:51
On Mon, 07 Apr 1997 00:04:42 -0700 
 Nathan Gelbard <gelbard@ENGR.ORST.EDU> wrote:

 > Jason,
 >         I've been installing base systems on a number of disks 
 > (rd7958) in the past couple hours. While installing the miniroot 
 > via NFS (NFS client for NT), I will ALWAYS get:
            ^^^^^^^^^^^^^^^^^
	    I guess you mean "server"?

 > le_put: xmit error, buf 1
 > or
 > le_put: xmit error, buf 0
 > 
 > or combinations of both.
 > 
 > Is this bad?

Well, it means one or more of the following is happening:

	- transmitter timeout error
	- missed a packet
	- memory error

(those are the comments next to the bits in sys/dev/ic/am7990reg.h)

This could indicate a failing card, or general lossage on the network
wire.  I have a machine on my network at home that occasionally boots
NT, and when NT is running, I notice all of my sane systems (the ones
that run NetBSD :-) report an awful lot of network errors.

You may want to try another NFS server and see if things are any
better.  (Yah, I know, kind of a crappy solution, but...)

 > Sometimes I get lots, sometimes very few. I've also varied network
 > distance: from ftp.wustl.edu, across our LAN, or 10' through a hub:
 > no difference.

...hmm.  Okay, now I'm a little confused.  You say this happens no
matter what the NFS server is?  Is this a built-in LAN interface
or a DIO card?

 > Also, why is the miniroot copy so SLOW? It takes like 15min to copy
 > the whole thing; being 10240 blocks (512 byte blocks?) a normal
 > copy would take far less time, even over a network.

I can explain this, for certain :-)  Basically, the copy loop is
simple/stupid.  The comment above it says:

	/*
	 * Copy loop...
	 * This is fairly slow... if someone wants to speed it
	 * up, they'll get no complaints from me.
	 */

The reason it's slow is that it reads a disk block from the source,
writes disk block to the disk, lather, rinse, repeat.  A disk block
is 512 bytes.

To speed it up, you could do something like:

	while (source) {
		read min(residual, 64k) from source into buf
		while (buf) {
			write disk block
		}
	}

...or something.  Anyhow, the next release of NetBSD/hp300 will have
a SYS_INST that can read gzip'd miniroot images.  This cuts the time
to copy tremendously.

Jason R. Thorpe                                       thorpej@nas.nasa.gov
NASA Ames Research Center                               Home: 408.866.1912
NAS: M/S 258-6                                          Work: 415.604.0935
Moffett Field, CA 94035                                Pager: 415.428.6939