2008-04-17 21:37:32

by Trond Myklebust

[permalink] [raw]
Subject: Re: RPC Question

On Thu, 2008-04-17 at 13:57 -0700, Usman S. Ansari wrote:
> Hello, I am modifying Linux sunrpc code to work with TOE (TCP offload engine). I have a question about tcp_data_recv function.
> What does flags XPRT_COPY_RECM, XPRT_COPY_XID & XPRT_COPY_DATA mean ? and where can I get description of tcp_read_fraghdr, tcp_read_xid and tcp_read_request.
> If there is any sort of documentaion or flow please let me know.

You've got the original source code right there; why would you need
extra documentation?

Anyhow, the flags XPRT_COPY_* all label different states when reading an
RPC reply from the server:

* XPRT_COPY_RECM means that we're looking for the record marking
word in order to figure out how long the datagram is.

* XPRT_COPY_XID, means we're looking for the request's XID, which
will allow us to find the original RPC call for which this is
the reply.

* Finally, when in the XPRT_COPY_DATA state, the rest of the
datagram can be copied into the reply xdr_buf.