(was slashes, now NFS devices)

Larry McVoy lm at slovax.Berkeley.EDU
Mon Mar 4 11:40:58 AEST 1991


Back to babble some more....

In article <1991Mar3.225844.8814 at panix.uucp>, zink at panix.uucp (David Zink) writes:
|> So lm at slovax.Eng.Sun.COM (Larry McVoy) babbles:
|> >In article <14367 at ulysses.att.com> ekrell at ulysses.att.com
|> 	(Eduardo Krell) writes:
|> >>
|> >>I don't see how this implies that the client should interpret the
|> >>special file. What if the client is a PC running DOS?
|> >I think that you've missed the point.  Special files are merely entry points
|> >into devices.  It is much more likely that the file makes sense to the client
|> >than the server.  It has nothing to do with DOS.
|> 
|> No, McVoy, YOU'VE missed the point. The DOS machine should not be told
|> "Here is a major and minor number, now interpret them locally." Major and minor
|> numbers CAN ONLY MAKE SENSE to the machine that creates them. Unless you are
|> running a bunch of clones with identical operating systems. NFS is the EXACT
|> opposite of a good distributed system for unlike machines.

Two points you've misunderstood:

(1) The devices will be created by the local machine (the client) and then
    interpreted by the local machine.  You assumed that NFS is mounting up a
    the servers /dev.  This assumption is false.  If that is what you are
    flaming about, you are simply misinformed.

(2) The reason that NFS does not try and implement remote devices are exactly
    those to which you allude.  Remote devices don't make sense to local OS's.

Let me try and explain, one last time, why remote devices are hard (not
impossible, mind you, but hard enough that noone has ever done them right).
Suppose we have #define TIOCFOO 0x1234 on the client and I try and send that
to a remote device on a system with different byte order. What should happen?
Obviously, (you will say), the server or the client should rewack it into the
appropriate byte order.  OK, what if the server has #define TIOCFOO 0x12, in
other words, a short.  Now what should happen?  Obviously, (you say) there
should be a lookup table that translates from one machine to another machine,
using the string "TIOCFOO".  Now, maybe, you begin to understand the problem.
I'll believe that you have solved the problem when you produce a scheme that
works no matter what the shapes and sizes of the ioctl's are, no matter what 
the byte order is, no matter what the argument counts, shapes, etc. are, no
matter what version of Unix is running (good luck, I believe this to be 
impossible).

These sorts of problems are why we have programs like rdump/rrestore.  They
use a generalized interface that will work across different OS releases, 
different byte orders, etc.  I would welcome a proposal, accepted by all the
vendors, that generalized remote device access.  I think this would be a good
thing, if it was done right.  It's a hard thing to get right.  Go to it.
---
Larry McVoy, Sun Microsystems     (415) 336-7627       ...!sun!lm or lm at sun.com



More information about the Comp.unix.internals mailing list