[Gluster-devel] RPC help
Kaushal M
kshlmster at gmail.com
Sat Jul 25 12:52:19 UTC 2015
The sunrpc RFCs might be of help, as gluster's rpc is an implementation of it.
On Sat, Jul 25, 2015 at 5:12 AM, chris holcombe
<chris.holcombe at canonical.com> wrote:
> Hey Everyone!
>
> I'm having trouble figuring out how the RPC mechanism works in Gluster. Any
> help would be hugely appreciated!
> When a client makes a request from the glusterd service an xdr encoded rpc
> is sent to it. From what I'm gathering by looking at the source and GDB the
> main struct to be concerned with is:
>
> struct rpc_transport_req {
> rpc_transport_msg_t msg;
> rpc_transport_rsp_t rsp;
> struct rpc_req *rpc_req;
> };
>
> From tracing it down to writev I see that the data looks as follows before
> being written out:
>
> (gdb) p req
> $4 = {msg = {rpchdr = 0x7ffff36c7c00, rpchdrcount = 1, proghdr =
> 0x7ffff36c7d20,
> proghdrcount = 1, progpayload = 0x0, progpayloadcount = 0, iobref =
> 0x7fffe4000920}, rsp = {
> rsphdr = 0x0, rsphdr_count = 0, rsp_payload = 0x0, rsp_payload_count =
> 0, rsp_iobref = 0x0},
> rpc_req = 0x555555802dac}
>
> I'm having trouble figuring out if this req variable is actually what is
> being written out to the wire.
>
> Now on the reply side the first header is the length of the reply. That
> makes sense. What I'm not getting is if the rpc_transport_req is actually
> being serialized with xdr or are parts of it being serialized? It's hard to
> tell. I need to read the __socket_proto_state_machine over again and
> understand it better. I searched around for notes or anything online and
> there's really almost zero written about this.
>
> So my questions are:
> 1. Is the rpc_transport_req being xdr encoded onto the wire?
> 2. Are there any good materials out there that explain the protocol?
> Figuring it out by reading the source and break pointing the code is slow
> going. Esp with the epoll threads making tracking things down hard.
>
> Thanks for the help!
> -Chris
> _______________________________________________
> Gluster-devel mailing list
> Gluster-devel at gluster.org
> http://www.gluster.org/mailman/listinfo/gluster-devel
More information about the Gluster-devel
mailing list