diff options
| author | Amar Tumballi <amar@gluster.com> | 2011-08-29 17:53:24 +0530 | 
|---|---|---|
| committer | Anand Avati <avati@gluster.com> | 2011-09-07 10:48:52 -0700 | 
| commit | f0f3b040dfa062021d3a193e5a19c380eb5e908d (patch) | |
| tree | 5e78d2dc05a2aa143b68b0980e21f09511c9120b /xlators/mgmt/glusterd/src/glusterd-utils.c | |
| parent | f78c8253d7fb75762effcf64683cbce10783a55b (diff) | |
modify to the way we used XDR definitions files (.x files)
Earlier:
step 1: copy the existing <xdr>.x files to /tmp
step 2: generate '.[ch]' files using 'rpcgen <xdr>.x'
step 3: check diff with the to the existing files, add only your part
        of changes back to the original file. (ignore other changes).
step 4: there is another file to write wrapper functions to convert
        structures to/from XDR buffers, update it with your new structure.
step 5: use these wrapper functions in the newly written procedures.
step 6: commit :-|
Now:
step 1: update (mostly adding only) the <xdr>.x file
step 2: run '<path-to-src>/extras/generate-xdr-files.sh <xdr>.x' command
step 3: implement rpc procedure to handle the request/response.
step 4: commit :-)
Change-Id: I219f9159fc980438c86e847c6b030be96e595ea2
BUG: 3488
Reviewed-on: http://review.gluster.com/341
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@gluster.com>
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-utils.c')
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 51 | 
1 files changed, 25 insertions, 26 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index 589bbbe2001..eaae6b7fb1c 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -46,6 +46,8 @@  #include "glusterd-volgen.h"  #include "glusterd-pmap.h" +#include "xdr-generic.h" +  #include <sys/resource.h>  #include <inttypes.h>  #include <signal.h> @@ -306,8 +308,7 @@ int  glusterd_submit_request (struct rpc_clnt *rpc, void *req,                           call_frame_t *frame, rpc_clnt_prog_t *prog,                           int procnum, struct iobref *iobref, -                         gd_serialize_t sfunc, xlator_t *this, -                         fop_cbk_fn_t cbkfn, xdrproc_t xdrproc) +                         xlator_t *this, fop_cbk_fn_t cbkfn, xdrproc_t xdrproc)  {          int                     ret         = -1;          struct iobuf            *iobuf      = NULL; @@ -319,35 +320,36 @@ glusterd_submit_request (struct rpc_clnt *rpc, void *req,          GF_ASSERT (rpc);          GF_ASSERT (this); -        req_size = xdr_sizeof (xdrproc, req); -        iobuf = iobuf_get2 (this->ctx->iobuf_pool, req_size); -        if (!iobuf) { -                goto out; -        }; +        if (req) { +                req_size = xdr_sizeof (xdrproc, req); +                iobuf = iobuf_get2 (this->ctx->iobuf_pool, req_size); +                if (!iobuf) { +                        goto out; +                }; -        if (!iobref) { -                iobref = iobref_new ();                  if (!iobref) { -                        goto out; -                } +                        iobref = iobref_new (); +                        if (!iobref) { +                                goto out; +                        } -                new_iobref = 1; -        } +                        new_iobref = 1; +                } -        iobref_add (iobref, iobuf); +                iobref_add (iobref, iobuf); -        iov.iov_base = iobuf->ptr; -        iov.iov_len  = iobuf_pagesize (iobuf); +                iov.iov_base = iobuf->ptr; +                iov.iov_len  = iobuf_pagesize (iobuf); -        /* Create the xdr payload */ -        if (req && sfunc) { -                ret = sfunc (iov, req); +                /* Create the xdr payload */ +                ret = xdr_serialize_generic (iov, req, xdrproc);                  if (ret == -1) {                          goto out;                  }                  iov.iov_len = ret;                  count = 1;          } +          /* Send the msg */          ret = rpc_clnt_submit (rpc, prog, procnum, cbkfn,                                 &iov, count, @@ -379,8 +381,7 @@ out:  struct iobuf *  glusterd_serialize_reply (rpcsvc_request_t *req, void *arg, -                          gd_serialize_t sfunc, struct iovec *outmsg, -                          xdrproc_t xdrproc) +                          struct iovec *outmsg, xdrproc_t xdrproc)  {          struct iobuf            *iob = NULL;          ssize_t                  retlen = -1; @@ -403,7 +404,7 @@ glusterd_serialize_reply (rpcsvc_request_t *req, void *arg,          /* retlen is used to received the error since size_t is unsigned and we           * need -1 for error notification during encoding.           */ -        retlen = sfunc (*outmsg, arg); +        retlen = xdr_serialize_generic (*outmsg, arg, xdrproc);          if (retlen == -1) {                  gf_log ("", GF_LOG_ERROR, "Failed to encode message");                  goto ret; @@ -422,8 +423,7 @@ ret:  int  glusterd_submit_reply (rpcsvc_request_t *req, void *arg,                         struct iovec *payload, int payloadcount, -                       struct iobref *iobref, gd_serialize_t sfunc, -                       xdrproc_t xdrproc) +                       struct iobref *iobref, xdrproc_t xdrproc)  {          struct iobuf           *iob        = NULL;          int                     ret        = -1; @@ -435,7 +435,6 @@ glusterd_submit_reply (rpcsvc_request_t *req, void *arg,                  goto out;          } -          if (!iobref) {                  iobref = iobref_new ();                  if (!iobref) { @@ -446,7 +445,7 @@ glusterd_submit_reply (rpcsvc_request_t *req, void *arg,                  new_iobref = 1;          } -        iob = glusterd_serialize_reply (req, arg, sfunc, &rsp, xdrproc); +        iob = glusterd_serialize_reply (req, arg, &rsp, xdrproc);          if (!iob) {                  gf_log ("", GF_LOG_ERROR, "Failed to serialize reply");          } else {  | 
