summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--glusterfsd/src/glusterfsd-mgmt.c2
-rw-r--r--rpc/rpc-lib/src/rpcsvc.c10
-rw-r--r--rpc/rpc-lib/src/rpcsvc.h3
-rw-r--r--xlators/features/changelog/src/changelog-rpc-common.c2
-rw-r--r--xlators/features/quota/src/quotad-aggregator.c3
-rw-r--r--xlators/mgmt/glusterd/src/glusterd.c2
-rw-r--r--xlators/nfs/server/src/nfs.c4
-rw-r--r--xlators/protocol/server/src/server.c9
8 files changed, 23 insertions, 12 deletions
diff --git a/glusterfsd/src/glusterfsd-mgmt.c b/glusterfsd/src/glusterfsd-mgmt.c
index 46d4e918bc6..415c26d68d0 100644
--- a/glusterfsd/src/glusterfsd-mgmt.c
+++ b/glusterfsd/src/glusterfsd-mgmt.c
@@ -2344,7 +2344,7 @@ glusterfs_listener_init (glusterfs_ctx_t *ctx)
goto out;
}
- ret = rpcsvc_program_register (rpc, &glusterfs_mop_prog);
+ ret = rpcsvc_program_register (rpc, &glusterfs_mop_prog, _gf_false);
if (ret) {
goto out;
}
diff --git a/rpc/rpc-lib/src/rpcsvc.c b/rpc/rpc-lib/src/rpcsvc.c
index d62abde47c5..ffc6b763590 100644
--- a/rpc/rpc-lib/src/rpcsvc.c
+++ b/rpc/rpc-lib/src/rpcsvc.c
@@ -1995,7 +1995,8 @@ rpcsvc_request_handler (void *arg)
}
int
-rpcsvc_program_register (rpcsvc_t *svc, rpcsvc_program_t *program)
+rpcsvc_program_register (rpcsvc_t *svc, rpcsvc_program_t *program,
+ gf_boolean_t add_to_head)
{
int ret = -1;
rpcsvc_program_t *newprog = NULL;
@@ -2052,7 +2053,10 @@ rpcsvc_program_register (rpcsvc_t *svc, rpcsvc_program_t *program)
pthread_rwlock_wrlock (&svc->rpclock);
{
- list_add_tail (&newprog->program, &svc->programs);
+ if (add_to_head)
+ list_add (&newprog->program, &svc->programs);
+ else
+ list_add_tail (&newprog->program, &svc->programs);
}
pthread_rwlock_unlock (&svc->rpclock);
@@ -2513,7 +2517,7 @@ rpcsvc_init (xlator_t *xl, glusterfs_ctx_t *ctx, dict_t *options,
gluster_dump_prog.options = options;
- ret = rpcsvc_program_register (svc, &gluster_dump_prog);
+ ret = rpcsvc_program_register (svc, &gluster_dump_prog, _gf_false);
if (ret) {
gf_log (GF_RPCSVC, GF_LOG_ERROR,
"failed to register DUMP program");
diff --git a/rpc/rpc-lib/src/rpcsvc.h b/rpc/rpc-lib/src/rpcsvc.h
index 37244be5361..1fdbc69c7ad 100644
--- a/rpc/rpc-lib/src/rpcsvc.h
+++ b/rpc/rpc-lib/src/rpcsvc.h
@@ -423,7 +423,8 @@ typedef struct rpcsvc_cbk_program {
* procedure handlers.
*/
extern int
-rpcsvc_program_register (rpcsvc_t *svc, rpcsvc_program_t *program);
+rpcsvc_program_register (rpcsvc_t *svc, rpcsvc_program_t *program,
+ gf_boolean_t add_to_head);
extern int
rpcsvc_program_unregister (rpcsvc_t *svc, rpcsvc_program_t *program);
diff --git a/xlators/features/changelog/src/changelog-rpc-common.c b/xlators/features/changelog/src/changelog-rpc-common.c
index 08cd41e4f17..7bd5b688fa5 100644
--- a/xlators/features/changelog/src/changelog-rpc-common.c
+++ b/xlators/features/changelog/src/changelog-rpc-common.c
@@ -324,7 +324,7 @@ changelog_rpc_server_init (xlator_t *this, char *sockfile, void *cbkdata,
while (*progs) {
prog = *progs;
- ret = rpcsvc_program_register (rpc, prog);
+ ret = rpcsvc_program_register (rpc, prog, _gf_false);
if (ret) {
gf_msg (this->name, GF_LOG_ERROR, 0,
CHANGELOG_MSG_PROGRAM_NAME_REG_FAILED,
diff --git a/xlators/features/quota/src/quotad-aggregator.c b/xlators/features/quota/src/quotad-aggregator.c
index 428153fa2bd..c27b67136a3 100644
--- a/xlators/features/quota/src/quotad-aggregator.c
+++ b/xlators/features/quota/src/quotad-aggregator.c
@@ -416,7 +416,8 @@ quotad_aggregator_init (xlator_t *this)
priv->quotad_aggregator = &quotad_aggregator_prog;
quotad_aggregator_prog.options = this->options;
- ret = rpcsvc_program_register (priv->rpcsvc, &quotad_aggregator_prog);
+ ret = rpcsvc_program_register (priv->rpcsvc, &quotad_aggregator_prog,
+ _gf_false);
if (ret) {
gf_msg (this->name, GF_LOG_WARNING, 0,
Q_MSG_RPCSVC_REGISTER_FAILED,
diff --git a/xlators/mgmt/glusterd/src/glusterd.c b/xlators/mgmt/glusterd/src/glusterd.c
index 85ae51ba9fc..f380583701c 100644
--- a/xlators/mgmt/glusterd/src/glusterd.c
+++ b/xlators/mgmt/glusterd/src/glusterd.c
@@ -444,7 +444,7 @@ glusterd_program_register (xlator_t *this, rpcsvc_t *svc,
{
int32_t ret = -1;
- ret = rpcsvc_program_register (svc, prog);
+ ret = rpcsvc_program_register (svc, prog, _gf_false);
if (ret) {
gf_msg_debug (this->name, 0,
"cannot register program (name: %s, prognum:%d, "
diff --git a/xlators/nfs/server/src/nfs.c b/xlators/nfs/server/src/nfs.c
index daa8366f19a..1f637fd6091 100644
--- a/xlators/nfs/server/src/nfs.c
+++ b/xlators/nfs/server/src/nfs.c
@@ -98,7 +98,7 @@ nfs_init_version (xlator_t *this, nfs_version_initer_t init,
gf_msg_debug (GF_NFS, 0, "Starting program: %s", prog->progname);
- ret = rpcsvc_program_register (nfs->rpcsvc, prog);
+ ret = rpcsvc_program_register (nfs->rpcsvc, prog, _gf_false);
if (ret == -1) {
gf_msg (GF_NFS, GF_LOG_ERROR, 0, NFS_MSG_PGM_INIT_FAIL,
"Program: %s init failed", prog->progname);
@@ -321,7 +321,7 @@ nfs_init_versions (struct nfs_state *nfs, xlator_t *this)
gf_msg_debug (GF_NFS, 0, "Starting program: %s",
prog->progname);
- ret = rpcsvc_program_register (nfs->rpcsvc, prog);
+ ret = rpcsvc_program_register (nfs->rpcsvc, prog, _gf_false);
if (ret == -1) {
gf_msg (GF_NFS, GF_LOG_ERROR, 0,
NFS_MSG_PGM_INIT_FAIL,
diff --git a/xlators/protocol/server/src/server.c b/xlators/protocol/server/src/server.c
index 344046aabec..b408c10b0a0 100644
--- a/xlators/protocol/server/src/server.c
+++ b/xlators/protocol/server/src/server.c
@@ -1187,7 +1187,11 @@ init (xlator_t *this)
}
glusterfs3_3_fop_prog.options = this->options;
- ret = rpcsvc_program_register (conf->rpc, &glusterfs3_3_fop_prog);
+ /* make sure we register the fop prgram at the head to optimize
+ * lookup
+ */
+ ret = rpcsvc_program_register (conf->rpc, &glusterfs3_3_fop_prog,
+ _gf_true);
if (ret) {
gf_msg (this->name, GF_LOG_WARNING, 0, PS_MSG_PGM_REG_FAILED,
"registration of program (name:%s, prognum:%d, "
@@ -1198,7 +1202,8 @@ init (xlator_t *this)
}
gluster_handshake_prog.options = this->options;
- ret = rpcsvc_program_register (conf->rpc, &gluster_handshake_prog);
+ ret = rpcsvc_program_register (conf->rpc, &gluster_handshake_prog,
+ _gf_false);
if (ret) {
gf_msg (this->name, GF_LOG_WARNING, 0, PS_MSG_PGM_REG_FAILED,
"registration of program (name:%s, prognum:%d, "