diff options
-rw-r--r-- | glusterfsd/src/glusterfsd-mgmt.c | 28 | ||||
-rw-r--r-- | rpc/rpc-transport/rdma/src/rdma.c | 2 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-replace-brick.c | 27 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 6 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-volume-ops.c | 22 | ||||
-rw-r--r-- | xlators/protocol/client/src/client-handshake.c | 19 | ||||
-rw-r--r-- | xlators/protocol/client/src/client.h | 4 |
7 files changed, 65 insertions, 43 deletions
diff --git a/glusterfsd/src/glusterfsd-mgmt.c b/glusterfsd/src/glusterfsd-mgmt.c index 9addd77cb26..3ff3337c01d 100644 --- a/glusterfsd/src/glusterfsd-mgmt.c +++ b/glusterfsd/src/glusterfsd-mgmt.c @@ -2160,10 +2160,11 @@ out: int glusterfs_mgmt_pmap_signin (glusterfs_ctx_t *ctx) { - call_frame_t *frame = NULL; - pmap_signin_req req = {0, }; - int ret = -1; - cmd_args_t *cmd_args = NULL; + call_frame_t *frame = NULL; + pmap_signin_req req = {0, }; + int ret = -1; + cmd_args_t *cmd_args = NULL; + char brick_name[PATH_MAX] = {0,}; frame = create_frame (THIS, ctx->pool); cmd_args = &ctx->cmd_args; @@ -2174,8 +2175,15 @@ glusterfs_mgmt_pmap_signin (glusterfs_ctx_t *ctx) goto out; } + if (cmd_args->volfile_server_transport && + !strcmp(cmd_args->volfile_server_transport, "rdma")) { + snprintf (brick_name, sizeof(brick_name), "%s.rdma", + cmd_args->brick_name); + req.brick = brick_name; + } else + req.brick = cmd_args->brick_name; + req.port = cmd_args->brick_port; - req.brick = cmd_args->brick_name; ret = mgmt_submit_request (&req, frame, ctx, &clnt_pmap_prog, GF_PMAP_SIGNIN, mgmt_pmap_signin_cbk, @@ -2226,6 +2234,7 @@ glusterfs_mgmt_pmap_signout (glusterfs_ctx_t *ctx) pmap_signout_req req = {0, }; call_frame_t *frame = NULL; cmd_args_t *cmd_args = NULL; + char brick_name[PATH_MAX] = {0,}; frame = create_frame (THIS, ctx->pool); cmd_args = &ctx->cmd_args; @@ -2236,8 +2245,15 @@ glusterfs_mgmt_pmap_signout (glusterfs_ctx_t *ctx) goto out; } + if (cmd_args->volfile_server_transport && + !strcmp(cmd_args->volfile_server_transport, "rdma")) { + snprintf (brick_name, sizeof(brick_name), "%s.rdma", + cmd_args->brick_name); + req.brick = brick_name; + } else + req.brick = cmd_args->brick_name; + req.port = cmd_args->brick_port; - req.brick = cmd_args->brick_name; req.rdma_port = cmd_args->brick_port2; ret = mgmt_submit_request (&req, frame, ctx, &clnt_pmap_prog, GF_PMAP_SIGNOUT, mgmt_pmap_signout_cbk, diff --git a/rpc/rpc-transport/rdma/src/rdma.c b/rpc/rpc-transport/rdma/src/rdma.c index 89ed4558d72..1e0cce54b7a 100644 --- a/rpc/rpc-transport/rdma/src/rdma.c +++ b/rpc/rpc-transport/rdma/src/rdma.c @@ -4274,7 +4274,7 @@ gf_rdma_disconnect (rpc_transport_t *this) int32_t ret = 0; priv = this->private; - gf_log_callingfn (this->name, GF_LOG_WARNING, + gf_log_callingfn (this->name, GF_LOG_DEBUG, "disconnect called (peer:%s)", this->peerinfo.identifier); diff --git a/xlators/mgmt/glusterd/src/glusterd-replace-brick.c b/xlators/mgmt/glusterd/src/glusterd-replace-brick.c index 8bfa2d4bdd6..5a98d497137 100644 --- a/xlators/mgmt/glusterd/src/glusterd-replace-brick.c +++ b/xlators/mgmt/glusterd/src/glusterd-replace-brick.c @@ -1390,14 +1390,16 @@ umount: * after all commit acks are received. */ static int -rb_update_srcbrick_port (glusterd_brickinfo_t *src_brickinfo, dict_t *rsp_dict, - dict_t *req_dict, int32_t replace_op) +rb_update_srcbrick_port (glusterd_volinfo_t *volinfo, + glusterd_brickinfo_t *src_brickinfo, + dict_t *rsp_dict, dict_t *req_dict, int32_t replace_op) { - xlator_t *this = NULL; - dict_t *ctx = NULL; - int ret = 0; - int dict_ret = 0; - int src_port = 0; + xlator_t *this = NULL; + dict_t *ctx = NULL; + int ret = 0; + int dict_ret = 0; + int src_port = 0; + char brickname[PATH_MAX] = {0,}; this = THIS; @@ -1409,8 +1411,15 @@ rb_update_srcbrick_port (glusterd_brickinfo_t *src_brickinfo, dict_t *rsp_dict, gf_log ("", GF_LOG_INFO, "adding src-brick port no"); + if (volinfo->transport_type == GF_TRANSPORT_RDMA) { + snprintf (brickname, sizeof(brickname), "%s.rdma", + src_brickinfo->path); + } else + snprintf (brickname, sizeof(brickname), "%s", + src_brickinfo->path); + src_brickinfo->port = pmap_registry_search (this, - src_brickinfo->path, GF_PMAP_PORT_BRICKSERVER); + brickname, GF_PMAP_PORT_BRICKSERVER); if (!src_brickinfo->port && replace_op != GF_REPLACE_OP_COMMIT_FORCE ) { gf_log ("", GF_LOG_ERROR, @@ -1645,7 +1654,7 @@ glusterd_op_replace_brick (dict_t *dict, dict_t *rsp_dict) goto out; } - ret = rb_update_srcbrick_port (src_brickinfo, rsp_dict, + ret = rb_update_srcbrick_port (volinfo, src_brickinfo, rsp_dict, dict, replace_op); if (ret) goto out; diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index bb9fa45d24a..ad824be73f3 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -1968,6 +1968,12 @@ glusterd_volume_start_glusterfs (glusterd_volinfo_t *volinfo, bind_address); } + if (volinfo->transport_type == GF_TRANSPORT_RDMA) + runner_argprintf (&runner, "--volfile-server-transport=rdma"); + else if (volinfo->transport_type == GF_TRANSPORT_BOTH_TCP_RDMA) + runner_argprintf (&runner, + "--volfile-server-transport=socket,rdma"); + if (volinfo->memory_accounting) runner_add_arg (&runner, "--mem-accounting"); diff --git a/xlators/mgmt/glusterd/src/glusterd-volume-ops.c b/xlators/mgmt/glusterd/src/glusterd-volume-ops.c index 4685fa6a8e4..dd3308c40d2 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volume-ops.c +++ b/xlators/mgmt/glusterd/src/glusterd-volume-ops.c @@ -2583,12 +2583,13 @@ int glusterd_clearlocks_get_local_client_ports (glusterd_volinfo_t *volinfo, char **xl_opts) { - glusterd_brickinfo_t *brickinfo = NULL; - glusterd_conf_t *priv = NULL; - int index = 0; - int ret = -1; - int i = 0; - int port = 0; + glusterd_brickinfo_t *brickinfo = NULL; + glusterd_conf_t *priv = NULL; + char brickname[PATH_MAX] = {0,}; + int index = 0; + int ret = -1; + int i = 0; + int port = 0; GF_ASSERT (xl_opts); if (!xl_opts) { @@ -2605,7 +2606,14 @@ glusterd_clearlocks_get_local_client_ports (glusterd_volinfo_t *volinfo, if (uuid_compare (brickinfo->uuid, MY_UUID)) continue; - port = pmap_registry_search (THIS, brickinfo->path, + if (volinfo->transport_type == GF_TRANSPORT_RDMA) { + snprintf (brickname, sizeof(brickname), "%s.rdma", + brickinfo->path); + } else + snprintf (brickname, sizeof(brickname), "%s", + brickinfo->path); + + port = pmap_registry_search (THIS, brickname, GF_PMAP_PORT_BRICKSERVER); if (!port) { ret = -1; diff --git a/xlators/protocol/client/src/client-handshake.c b/xlators/protocol/client/src/client-handshake.c index 8bd3d6a3d09..42b7ac0745e 100644 --- a/xlators/protocol/client/src/client-handshake.c +++ b/xlators/protocol/client/src/client-handshake.c @@ -1205,8 +1205,6 @@ client_setvolume_cbk (struct rpc_req *req, struct iovec *iov, int count, void *m conf->connecting = 0; conf->connected = 1; - conf->need_different_port = 0; - if (lk_ver != client_get_lk_ver (conf)) { gf_log (this->name, GF_LOG_INFO, "Server and Client " "lk-version numbers are not same, reopening the fds"); @@ -1546,22 +1544,11 @@ client_query_portmap (xlator_t *this, struct rpc_clnt *rpc) req.brick = remote_subvol; - /* FIXME: Dirty work around */ if (!dict_get_str (options, "transport-type", &xprt)) { - /* This logic is required only in case of 'rdma' client - transport-type and the volume is of 'tcp,rdma' - transport type. */ if (!strcmp (xprt, "rdma")) { - if (!conf->need_different_port) { - snprintf (brick_name, PATH_MAX, "%s.rdma", - remote_subvol); - req.brick = brick_name; - conf->need_different_port = 1; - conf->skip_notify = 1; - } else { - conf->need_different_port = 0; - conf->skip_notify = 0; - } + snprintf (brick_name, sizeof(brick_name), "%s.rdma", + remote_subvol); + req.brick = brick_name; } } diff --git a/xlators/protocol/client/src/client.h b/xlators/protocol/client/src/client.h index 7f7d511910e..69f77570cd0 100644 --- a/xlators/protocol/client/src/client.h +++ b/xlators/protocol/client/src/client.h @@ -96,10 +96,6 @@ typedef struct clnt_conf { char disconnect_err_logged; /* flag used to prevent excessive disconnect logging */ - - char need_different_port; /* flag used to change the - portmap path in case of - 'tcp,rdma' on server */ gf_boolean_t lk_heal; uint16_t lk_version; /* this variable is used to distinguish client-server transaction while |