diff options
-rw-r--r-- | glusterfsd/src/glusterfsd-mgmt.c | 2 | ||||
-rw-r--r-- | rpc/rpc-lib/src/rpcsvc.c | 10 | ||||
-rw-r--r-- | rpc/rpc-lib/src/rpcsvc.h | 3 | ||||
-rw-r--r-- | xlators/features/changelog/src/changelog-rpc-common.c | 2 | ||||
-rw-r--r-- | xlators/features/quota/src/quotad-aggregator.c | 3 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd.c | 2 | ||||
-rw-r--r-- | xlators/nfs/server/src/nfs.c | 4 | ||||
-rw-r--r-- | xlators/protocol/server/src/server.c | 9 |
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 = "ad_aggregator_prog; quotad_aggregator_prog.options = this->options; - ret = rpcsvc_program_register (priv->rpcsvc, "ad_aggregator_prog); + ret = rpcsvc_program_register (priv->rpcsvc, "ad_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, " |