Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 23 Sep 1999 11:40:53 -0400 (EDT)
From:      Zhihui Zhang <zzhang@cs.binghamton.edu>
To:        freebsd-hackers@freebsd.org
Subject:   NFS and RPC
Message-ID:  <Pine.GSO.3.96.990923101148.17856B-100000@sol.cs.binghamton.edu>

next in thread | raw e-mail | index | archive | help

NFS is said to be built on RPC.  However, NFS daemons seldom uses RPC
library calls before they enter into the kernel forever (The nfsd daemon
only calls pmap_set(). The nfsiod daemon invokes no RPC call at all! The
mountd daemon uses a lot of RPC calls, but it does not enter the kernel
forever and it is not used during normal reads/writes).  

Once inside the kernel, the NFS daemons can not use RPC library any more,
they must create/interprete RPC format messages themselves.  My guess this
is for performance reason and because there is no kernel-to-kernel RPC. 

Since the kernel part of NFS code does not use RPC library routines, why
FreeBSD still conforms to the RPC format for NFS requests/replies? Is
this for compatibily with other NFS servers/clients that are implemented
entirely as user-level code and with RPC library routines?

One more question is about how to assembly a RPC request from several
mbufs? I notice that there is a check for 0x80000000 in the routine
nfsrv_getstream() for the last fragment.  But I assume that all mbufs
linked together via their m_next field should consist of one RPC request. 
I also assume that the protocol layer has ripped off any TCP/IP headers
from the mbufs before it pass the mbufs up to the socket layer. 

Any help is appreciated.

--------------------------------------------------
Zhihui Zhang.  Please visit http://www.freebsd.org
--------------------------------------------------




To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.3.96.990923101148.17856B-100000>