In a nutshell, the devpair system does for tapes what NFS does for disks. It creates local pseudo-devices that appear to be tape drives, but which are really mapped to a remote system which has the real drive.

Here's an overview of the various pieces that make up the system:
tar -f/dev/udev        tclient   <--tcp socket-->  tclientd 
      \                   /                            \
       \                 /                              \
    /dev/udev       /dev/sdev                        /dev/rmt0
         \             /                                  \
          \           /                                    \
          device driver                                real device
                                                       and driver



Let's trace an i/o request through the system:
1)The user's application issues a system call - read(), write(), open(), close(), or ioctl(). Let's assume it's a read() call. The read is to a pseudo device, named /dev/udev in this example.

2)The kernel intercepts the request, and calls the udevread() entry point in the device driver. The udevread entry point causes a select() condition to be raised on /dev/sdev.

3)The tclient daemon's select() call returns, and tclient issues a read() to /dev/sdev. The information (that a read of so many bytes is requested) is uploaded by the device driver (entry point sdevread()).

4)Tclient sends the request over the network to the tclientd daemon on the remote system. Tclientd issues the read to the read device. Whatever results tclientd gets - data and errno - are returned to tclient.

5)Tclient writes the data and errno to /dev/sdev (entry point sdevwrite()).

6)The sdevwrite routine downloads the data, and wakes up the sleeping call to udevread.

7)The udevread routine uploads the data and errno to the user program.

Further information is available on the device driver, tclient and tclientd, trouble shooting, and cross platform issues.

As a final note, here at the UW this software is used as one component of our tape mount and management system. There are some issues to be addressed if you intend to use it standalone.

Devpair is available via anonymous ftp to ftp.u.washington.edu. The current version is in /pub/udev-4.0.tar.Z. The 4.0 may change as new versions come out - look for the most recent version.