Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!cmcl2!phri!roy From: roy@phri.UUCP (Roy Smith) Newsgroups: net.unix-wizards Subject: Re: NFS on System V Message-ID: <2438@phri.UUCP> Date: Tue, 16-Sep-86 13:40:55 EDT Article-I.D.: phri.2438 Posted: Tue Sep 16 13:40:55 1986 Date-Received: Fri, 19-Sep-86 22:21:35 EDT References: <161@wang7.UUCP> Reply-To: roy@phri.UUCP (Roy Smith) Distribution: net Organization: Public Health Research Inst. (NY, NY) Lines: 30 In article <161@wang7.UUCP> brezak@wang7.UUCP (John Brezak) asks about doing an NFS implementation in Xenix V without modifying the kernel. I asked essentially this same question at the NFS tutorial in Atlanta. I don't know anything about Xenix V in particular, but I think the answer is the same for any system. Some of this is based on the answer I got at Atlanta, some of it is my own expounding on that. It would be fairly easy (well, at least straight-forward) to do an NSF *server* in user code. It may be counter-intuitive, but doing a client is actually harder than doing a server. All a server has to do is respond to service requests on a synchronous basis. A client has to be all over your program, getting involved every time you mention a path name. I don't see any easy way to do an NFS server all in user code. I suppose you could write a whole system call library which recognized when pathnames crossed NFS mount points (and symbolic links on 4.N systems), but it would be a real mess. We're not just talking read and write here, but chdir and exec and mount as well. Since you can execute binaries from remote file systems, things like demand paging have to go through NFS; I don't see any way to do that in user code. In fact, when you consider the mount system call, you have a situation where one process can effect another process that isn't even related to the first one by a common ancestor -- how are you going to keep that state information in user code and make it work right? -- Roy Smith, {allegra,philabs}!phri!roy System Administrator, Public Health Research Institute 455 First Avenue, New York, NY 10016