summaryrefslogtreecommitdiffstats
path: root/rpc
diff options
context:
space:
mode:
Diffstat (limited to 'rpc')
-rw-r--r--rpc/rpc-lib/src/rpc-clnt.h16
-rw-r--r--rpc/rpc-lib/src/rpc-transport.h16
-rw-r--r--rpc/rpc-lib/src/rpcsvc-common.h4
-rw-r--r--rpc/rpc-lib/src/rpcsvc.c12
-rw-r--r--rpc/rpc-lib/src/rpcsvc.h43
5 files changed, 46 insertions, 45 deletions
diff --git a/rpc/rpc-lib/src/rpc-clnt.h b/rpc/rpc-lib/src/rpc-clnt.h
index 1d3274bbddd..0d0b115578c 100644
--- a/rpc/rpc-lib/src/rpc-clnt.h
+++ b/rpc/rpc-lib/src/rpc-clnt.h
@@ -85,8 +85,8 @@ typedef int (*rpcclnt_cb_fn)(struct rpc_clnt *rpc, void *mydata, void *data);
*/
typedef struct rpcclnt_actor_desc {
char procname[32];
- int procnum;
rpcclnt_cb_fn actor;
+ int procnum;
} rpcclnt_cb_actor_t;
/* Describes a program and its version along with the function pointers
@@ -98,8 +98,6 @@ typedef struct rpcclnt_cb_program {
int prognum;
int progver;
rpcclnt_cb_actor_t *actors; /* All procedure handlers */
- int numactors; /* Num actors in actor array */
-
/* Program specific state handed to actors */
void *private;
@@ -108,6 +106,8 @@ typedef struct rpcclnt_cb_program {
/* Needed for passing back in cb_actor */
void *mydata;
+ int numactors; /* Num actors in actor array */
+
} rpcclnt_cb_program_t;
typedef struct rpc_auth_data {
@@ -151,17 +151,17 @@ typedef struct rpc_clnt_connection rpc_clnt_connection_t;
struct rpc_req {
rpc_clnt_connection_t *conn;
struct iovec req[2];
- int reqcnt;
struct iobref *req_iobref;
struct iovec rsp[2];
int rspcnt;
+ int reqcnt;
struct iobref *rsp_iobref;
- int rpc_status;
- rpc_auth_data_t verf;
rpc_clnt_prog_t *prog;
- int procnum;
+ rpc_auth_data_t verf;
fop_cbk_fn_t cbkfn;
void *conn_private;
+ int procnum;
+ int rpc_status;
uint32_t xid;
};
@@ -182,8 +182,8 @@ typedef struct rpc_clnt {
glusterfs_ctx_t *ctx;
gf_atomic_t refcount;
- int auth_value;
xlator_t *owner;
+ int auth_value;
char disabled;
} rpc_clnt_t;
diff --git a/rpc/rpc-lib/src/rpc-transport.h b/rpc/rpc-lib/src/rpc-transport.h
index 5b88be5a3de..6ca42a77c44 100644
--- a/rpc/rpc-lib/src/rpc-transport.h
+++ b/rpc/rpc-lib/src/rpc-transport.h
@@ -103,19 +103,19 @@ typedef enum {
struct rpc_transport_msg {
struct iovec *rpchdr;
- int rpchdrcount;
struct iovec *proghdr;
+ int rpchdrcount;
int proghdrcount;
struct iovec *progpayload;
- int progpayloadcount;
struct iobref *iobref;
+ int progpayloadcount;
};
typedef struct rpc_transport_msg rpc_transport_msg_t;
struct rpc_transport_rsp {
struct iovec *rsphdr;
- int rsphdr_count;
struct iovec *rsp_payload;
+ int rsphdr_count;
int rsp_payload_count;
struct iobref *rsp_iobref;
};
@@ -149,9 +149,9 @@ typedef struct rpc_transport_data rpc_transport_data_t;
struct rpc_request_info {
int prognum;
int progver;
- int procnum;
void *rpc_req; /* struct rpc_req */
rpc_transport_rsp_t rsp;
+ int procnum;
uint32_t xid;
};
typedef struct rpc_request_info rpc_request_info_t;
@@ -193,11 +193,12 @@ struct rpc_transport {
int32_t outstanding_rpc_count;
struct list_head list;
- int bind_insecure;
void *dl_handle; /* handle of dlopen() */
char *ssl_name;
dict_t *clnt_options; /* store options received from
* client */
+ gf_atomic_t disconnect_progress;
+ int bind_insecure;
/* connect_failed: saves the connect() syscall status as socket_t
* member holding connect() status can't be accessed by higher gfapi
* layer or in client management notification handler functions
@@ -205,18 +206,17 @@ struct rpc_transport {
gf_boolean_t connect_failed;
char notify_poller_death;
char poller_death_accept;
- gf_atomic_t disconnect_progress;
};
struct rpc_transport_pollin {
struct rpc_transport *trans;
- int count;
void *private;
struct iobref *iobref;
struct iovec vector[MAX_IOVEC];
+ gf_async_t async;
+ int count;
char is_reply;
char vectored;
- gf_async_t async;
};
typedef struct rpc_transport_pollin rpc_transport_pollin_t;
diff --git a/rpc/rpc-lib/src/rpcsvc-common.h b/rpc/rpc-lib/src/rpcsvc-common.h
index 734601eef0b..6c4ec49a6ef 100644
--- a/rpc/rpc-lib/src/rpcsvc-common.h
+++ b/rpc/rpc-lib/src/rpcsvc-common.h
@@ -39,8 +39,6 @@ typedef struct rpcsvc_state {
pthread_rwlock_t rpclock;
- unsigned int memfactor;
-
/* List of the authentication schemes available. */
struct list_head authschemes;
@@ -61,6 +59,8 @@ typedef struct rpcsvc_state {
struct list_head notify;
int notify_count;
+ unsigned int memfactor;
+
xlator_t *xl; /* xlator */
void *mydata;
rpcsvc_notify_t notifyfn;
diff --git a/rpc/rpc-lib/src/rpcsvc.c b/rpc/rpc-lib/src/rpcsvc.c
index 5639abbb204..2818f62e619 100644
--- a/rpc/rpc-lib/src/rpcsvc.c
+++ b/rpc/rpc-lib/src/rpcsvc.c
@@ -41,7 +41,7 @@
#include "xdr-rpcclnt.h"
#include <glusterfs/glusterfs-acl.h>
-struct rpcsvc_program gluster_dump_prog;
+static struct rpcsvc_program gluster_dump_prog;
#define rpcsvc_alloc_request(svc, request) \
do { \
@@ -3227,13 +3227,13 @@ out:
return ret;
}
-rpcsvc_actor_t gluster_dump_actors[GF_DUMP_MAXVALUE] = {
- [GF_DUMP_NULL] = {"NULL", GF_DUMP_NULL, NULL, NULL, 0, DRC_NA},
- [GF_DUMP_DUMP] = {"DUMP", GF_DUMP_DUMP, rpcsvc_dump, NULL, 0, DRC_NA},
- [GF_DUMP_PING] = {"PING", GF_DUMP_PING, rpcsvc_ping, NULL, 0, DRC_NA},
+static rpcsvc_actor_t gluster_dump_actors[GF_DUMP_MAXVALUE] = {
+ [GF_DUMP_NULL] = {"NULL", NULL, NULL, GF_DUMP_NULL, DRC_NA, 0},
+ [GF_DUMP_DUMP] = {"DUMP", rpcsvc_dump, NULL, GF_DUMP_DUMP, DRC_NA, 0},
+ [GF_DUMP_PING] = {"PING", rpcsvc_ping, NULL, GF_DUMP_PING, DRC_NA, 0},
};
-struct rpcsvc_program gluster_dump_prog = {
+static struct rpcsvc_program gluster_dump_prog = {
.progname = "GF-DUMP",
.prognum = GLUSTER_DUMP_PROGRAM,
.progver = GLUSTER_DUMP_VERSION,
diff --git a/rpc/rpc-lib/src/rpcsvc.h b/rpc/rpc-lib/src/rpcsvc.h
index f6a02d6759f..a88fc841b60 100644
--- a/rpc/rpc-lib/src/rpcsvc.h
+++ b/rpc/rpc-lib/src/rpcsvc.h
@@ -190,24 +190,11 @@ struct rpcsvc_request {
* by the program actors. This is the buffer that will need to
* be de-xdred by the actor.
*/
- struct iovec msg[MAX_IOVEC];
int count;
+ struct iovec msg[MAX_IOVEC];
struct iobref *iobref;
- /* Status of the RPC call, whether it was accepted or denied. */
- int rpc_status;
-
- /* In case, the call was denied, the RPC error is stored here
- * till the reply is sent.
- */
- int rpc_err;
-
- /* In case the failure happened because of an authentication problem
- * , this value needs to be assigned the correct auth error number.
- */
- int auth_err;
-
/* There can be cases of RPC requests where the reply needs to
* be built from multiple sources. E.g. where even the NFS reply
* can contain a payload, as in the NFSv3 read reply. Here the RPC header
@@ -245,6 +232,19 @@ struct rpcsvc_request {
/* request queue in rpcsvc */
struct list_head request_list;
+ /* Status of the RPC call, whether it was accepted or denied. */
+ int rpc_status;
+
+ /* In case, the call was denied, the RPC error is stored here
+ * till the reply is sent.
+ */
+ int rpc_err;
+
+ /* In case the failure happened because of an authentication problem
+ * , this value needs to be assigned the correct auth error number.
+ */
+ int auth_err;
+
/* Things passed to rpc layer from client */
/* @flags: Can be used for binary data passed in xdata to be
@@ -357,7 +357,6 @@ typedef void (*rpcsvc_deallocate_reply)(void *msg);
*/
typedef struct rpcsvc_actor_desc {
char procname[RPCSVC_NAME_MAX];
- int procnum;
rpcsvc_actor actor;
/* Handler for cases where the RPC requests fragments are large enough
@@ -370,18 +369,20 @@ typedef struct rpcsvc_actor_desc {
*/
rpcsvc_vector_sizer vector_sizer;
+ int procnum;
+
/* Can actor be ran on behalf an unprivileged requestor? */
- gf_boolean_t unprivileged;
drc_op_type_t op_type;
+ gf_boolean_t unprivileged;
} rpcsvc_actor_t;
typedef struct rpcsvc_request_queue {
- int gen;
struct list_head request_queue;
pthread_mutex_t queue_lock;
pthread_cond_t queue_cond;
pthread_t thread;
struct rpcsvc_program *program;
+ int gen;
gf_boolean_t waiting;
} rpcsvc_request_queue_t;
@@ -416,8 +417,6 @@ struct rpcsvc_program {
int numactors; /* Num actors in actor array */
int proghighvers; /* Highest ver for program
supported by the system. */
- int proglowvers; /* Lowest ver */
-
/* Program specific state handed to actors */
void *private;
@@ -429,6 +428,8 @@ struct rpcsvc_program {
*/
rpcsvc_notify_t notify;
+ int proglowvers; /* Lowest ver */
+
/* An integer that identifies the min auth strength that is required
* by this protocol, for eg. MOUNT3 needs AUTH_UNIX at least.
* See RFC 1813, Section 5.2.1.
@@ -438,7 +439,6 @@ struct rpcsvc_program {
/* list member to link to list of registered services with rpcsvc */
struct list_head program;
rpcsvc_request_queue_t request_queue[EVENT_MAX_THREADS];
- char request_queue_status[EVENT_MAX_THREADS / 8 + 1];
pthread_mutex_t thr_lock;
pthread_cond_t thr_cond;
int threadcount;
@@ -457,6 +457,7 @@ struct rpcsvc_program {
gf_boolean_t alive;
gf_boolean_t synctask;
+ char request_queue_status[EVENT_MAX_THREADS / 8 + 1];
};
typedef struct rpcsvc_cbk_program {
@@ -588,9 +589,9 @@ typedef struct rpcsvc_auth_ops {
typedef struct rpcsvc_auth_flavour_desc {
char authname[RPCSVC_NAME_MAX];
- int authnum;
rpcsvc_auth_ops_t *authops;
void *authprivate;
+ int authnum;
} rpcsvc_auth_t;
typedef void *(*rpcsvc_auth_initer_t)(rpcsvc_t *svc, dict_t *options);