On 24 Jun 2020, at 18:51, Anthony Martin <ality(a)pbrane.org> wrote:
Paul Ruizendaal <pnr(a)planet.nl> once said:
When googling for File System Switch or Virtual
File System most sources
mention Sun NFS and SysVr3 as the earliest implementations. Some sources
mention 8th Edition.
I did a (short) search on FSS/VFS in earlier, non-Unix OS’s (Tenex,
Multics, CTSS, etc.), but none of those seem to have had a comparable
concept.
Does anybody recall prior art (prior to 1984) in this area?
The concept of the "remote inode" was introduced in:
Luderer, G. W., Che, H., Haggerty, J. P., Kirslis, P. A., & Marshall,
W. T. (1981). A distributed UNIX system based on a virtual circuit
switch. ACM SIGOPS Operating Systems Review, 15(5), 160-168.
The only other prior art I know of is
Toda, I. W. A. O. (1980). DCNA higher level protocols. IEEE
Transactions on Communications, 28(4), 575-584.
wherein they state the following:
A virtual file system, from the viewpoint of application programs on a
computer, models the file system functions of other computers. This is
done in the same way as with virtual terminals, a virtual file system
consists of a UPP having virtual files (VF), and a UCP which executes
virtual file system protocols.
Thanks for those pointers: I had not thought to include distributed systems in my initial
search. Clem also pointed out LOCUS in this area. It would seem that S/F-Unix (the Luderer
paper) and LOCUS happened at about the same time and both have the concept of a remote
inode.
The Luderer paper has only a few details about implementation and besides describing the
remote inode concept they mention:
“Of 27 system call types related to files, 18 result in message traffic if remote files
are involved. Of these, 10 contain a path name as an argument, and the remaining 8 refer
to already opened files. Path names or the data read or written can be up to 64K bytes
long. The structure of each message is a type code followed by type-dependent data.”
In a way, the approach resembles the system call forwarding that Heinz Lycklama did for
his 'satellite systems' work.
I asked Bill Marshall (one of the S/F co-authors) about it a few months ago and he recalls
that they ran into problems with corner case semantics in their implementation, and that
Peter Weinberger later approached the issue afresh 'thinking about the hard cases
first.' Bill does not have S/F-Unix source code, and I have not been able to contact
Gottfried Luderer yet.
I have not yet been able to look at the DCNA paper yet.
I'd be interested if you find anything earlier.
I came across this 1979 paper by P.M. Lu from Bell Labs Naperville
https://ieeexplore.ieee.org/document/762533
The abstract says:
"RIDE (Resource-Sharing in a Distributed Environment) has been designed and
implemented for the UNIX operating system to provide sharing of remote files, remote
process invocation and interprocess communication in a distributed computing environment.
The system is designed to support a uniform interface for both local and remote access in
a network. The user programs can be executed in a single or multiple machine environment
without any program modification.”
I do not know what RIDE was and if its approach qualifies as a FSS precursor. Maybe it is
like 'Unix United / Newcastle Connection' in its approach.
It does seem an interesting paper in any case, as its front page includes: 'This
system was designed to replace the network interface programs that previously operated on
the SPIDER system.'