Subject: Re: Odd cpio/network behaviour
To: None <netbsd-users@netbsd.org>
From: Giles Lean <giles@nemeton.com.au>
List: tech-userlevel
Date: 11/19/2001 06:21:57
Lucio De Re <lucio@proxima.alt.za> wrote:

> I'm not sure which of these is the right forum.

netbsd-users would be my recommendation.  This message is sent there
and BCC'd to the original lists.

> Now, the above eventually resolves to the following, where everything
> bar the rcmd is executed as superuser, courtesy of setuid "backend":
> 
> 	find {something} | cpio -i {opts} | rcmd remote cpio -o {opts}

From habit and paranoia I would use an instance of dd(1) with an
appropriate obs=... option to make sure that short reads from the
network don't confuse cpio.  This may be unnecessary; I don't know how
NetBSD's cpio handles short reads.

> What's going wrong?  Well, the target cpio (on the 1.5.2 host)
> doesn't seem to understand that the operation is complete, after
> we've transferred some 7.7GBytes of data, and proceeds to consume
> 99.8% of the available CPU time once the other end of the rcmd link
> has dropped the link.  Doesn't seem to do anything with the consumed
> time, either.

Three suggestions to collect more information:

1. run ktrace on the cpio process once it is consuming CPU time in
   this way to find out what system calls it is making

2. attach a debugger and get a backtrace of the cpio process

   This will be more informative if you build a debug version of
   cpio first:

   $ cd /usr/src/gnu/usr.bin/cpio
   $ make CFLAGS=-g

3. take a network trace of the rcmd/rsh connection once cpio is
   consuming CPU time
   
> The only recommendation I'll have trouble with is to replace cpio
> with tar or pax.  Tar may be OK, but I'm not thrilled about it,

pax handles cpio format so trying pax instead of cpio on the NetBSD
side is definitely a good idea.  It is what I would try first, since
it is easiest.

Regards,

Giles