As was suggested on the list, I’ve reached out to Peter Weinberger to better understand
the time line of the File System Switch and the 8th edition network file system. He has
been very helpful, but the one line summary is that it is unfortunately too long ago to
remember specific details with any certainty. In general Peter remembers that he was
concerned that the project was too big for one person to do, and hence always looked for
design choices that would leave the work scope manageable.
Time line.
Since my last post on this subject I have found that the ACM conference talk of March 1985
was also held 9 months earlier at a Usenix conference - leaving a time slot between end of
1981 and summer 1984. Peter vaguely remembers that the essential ideas were done
"before 1983”. It would stand to reason that 1983 was spent on getting corner cases
of the network file system right, but all this is no more than plausible conjecture.
File system switch (FSS).
The guiding thought for the FSS was to extend the philosophy of ‘everything is a file’ to
new areas, also other than network files. Early implementations already included a simple,
read-only ‘/proc’ file system for example. I asked if any experiments had been done with
virtualising ‘/dev', but Peter could not recall any such work.
I personally find that the FSS has an elegance that fits with other parts of Research Unix
and asked Peter about its origins. He does not recall any special "a-ha” moments, but
does recall that the way it was done just felt natural to him. Other options would have
included to do the switch at the sys call level (which felt too complicated) or at the
block device level (which felt too limited).
I also asked about how his reworking of ’namei’ and centralising all namespace operations
in that function came about (in my view it is key to a concise switch). Here, too, it is
too long ago to remember any specifics, but Peter comments that he never liked to write
much code and that spending time on finding ways to make the amount of coding as small and
straightforward as possible would have been in character.
Eighth edition network file system
Once the FSS exists, a simplistic network file system is not hard - just do RPC to a
remote server. Peter chose to do a user level file server in order to keep the work scope
and complexity down to manageable levels. As highlighted in the ACM paper, the devil is in
the detail of replicating all the semantics of normal local disk files. Cases like a file
being kept alive if a process still has it open, the complexities of cross-mounted network
files (let alone recursively mounted), handling failed connections, etc. were hard to sort
out and get right.
On 29 Mar 2020, at 20:12, Paul Ruizendaal
<pnr(a)planet.nl> wrote:
On 29 Mar 2020, at 16:04, arnold(a)skeeve.com wrote:
Paul Ruizendaal <pnr(a)planet.nl> wrote:
Related is the question when the "file
system switch" was added. It must
have been later than 1981 and before 1985, but I have not been able to
pinpoint it further.
IIRC there was a "paper" (only an abstract) on the file system
switch published in a USENIX conference proceedings. That woud help
trace it down.
I have that paper (“The Unix 8th Edition Network File System”), it was presented at a
March 1985 ACM conference. However, there are indications that the roots of the file
system switch existed earlier, possibly much earlier.
I think Doug McIlroy once described 1973 as a pivotal year for Unix, with many concepts
devised that would blossom in the following 3-5 years. I’m increasingly tempted to think
that Summer ’81 - Summer ’82 was a similarly pivotal year.
Peter Weinberger, who did it, is at Google; you
could ask him
directly, as well.
That is a good idea. If someone has the email address I’d appreciate an off list
message.
Paul