summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--glusterfsd/src/glusterfsd-mgmt.c2
-rw-r--r--rpc/rpc-transport/rdma/src/rdma.c7
-rw-r--r--rpc/xdr/src/portmap-xdr.x1
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-pmap.c20
-rw-r--r--xlators/protocol/client/src/client-handshake.c1
5 files changed, 18 insertions, 13 deletions
diff --git a/glusterfsd/src/glusterfsd-mgmt.c b/glusterfsd/src/glusterfsd-mgmt.c
index e72483509be..9addd77cb26 100644
--- a/glusterfsd/src/glusterfsd-mgmt.c
+++ b/glusterfsd/src/glusterfsd-mgmt.c
@@ -2238,7 +2238,7 @@ glusterfs_mgmt_pmap_signout (glusterfs_ctx_t *ctx)
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,
(xdrproc_t)xdr_pmap_signout_req);
diff --git a/rpc/rpc-transport/rdma/src/rdma.c b/rpc/rpc-transport/rdma/src/rdma.c
index 3ceb197f2a3..89ed4558d72 100644
--- a/rpc/rpc-transport/rdma/src/rdma.c
+++ b/rpc/rpc-transport/rdma/src/rdma.c
@@ -938,7 +938,7 @@ static void
gf_rdma_cm_handle_disconnect (rpc_transport_t *this)
{
gf_rdma_private_t *priv = NULL;
- char need_unref = 0, connected = 0;
+ char need_unref = 0;
priv = this->private;
gf_log (this->name, GF_LOG_DEBUG,
@@ -948,7 +948,6 @@ gf_rdma_cm_handle_disconnect (rpc_transport_t *this)
{
if (priv->peer.cm_id != NULL) {
need_unref = 1;
- connected = priv->connected;
priv->connected = 0;
}
@@ -956,9 +955,7 @@ gf_rdma_cm_handle_disconnect (rpc_transport_t *this)
}
pthread_mutex_unlock (&priv->write_mutex);
- if (connected) {
- rpc_transport_notify (this, RPC_TRANSPORT_DISCONNECT, this);
- }
+ rpc_transport_notify (this, RPC_TRANSPORT_DISCONNECT, this);
if (need_unref)
rpc_transport_unref (this);
diff --git a/rpc/xdr/src/portmap-xdr.x b/rpc/xdr/src/portmap-xdr.x
index f60dcc76c8e..7380de5e9ca 100644
--- a/rpc/xdr/src/portmap-xdr.x
+++ b/rpc/xdr/src/portmap-xdr.x
@@ -47,6 +47,7 @@ struct pmap_signin_rsp {
struct pmap_signout_req {
string brick<>;
int port;
+ int rdma_port;
};
struct pmap_signout_rsp {
diff --git a/xlators/mgmt/glusterd/src/glusterd-pmap.c b/xlators/mgmt/glusterd/src/glusterd-pmap.c
index a54a87b1d33..e4dacb80c4a 100644
--- a/xlators/mgmt/glusterd/src/glusterd-pmap.c
+++ b/xlators/mgmt/glusterd/src/glusterd-pmap.c
@@ -438,9 +438,10 @@ gluster_pmap_signin (rpcsvc_request_t *req)
int
__gluster_pmap_signout (rpcsvc_request_t *req)
{
- pmap_signout_req args = {0,};
- pmap_signout_rsp rsp = {0,};
- int ret = -1;
+ pmap_signout_req args = {0,};
+ pmap_signout_rsp rsp = {0,};
+ int ret = -1;
+ char brick_path[PATH_MAX] = {0,};
glusterd_brickinfo_t *brickinfo = NULL;
ret = xdr_to_generic (req->msg[0], &args,
@@ -456,14 +457,21 @@ __gluster_pmap_signout (rpcsvc_request_t *req)
ret = glusterd_get_brickinfo (THIS, args.brick, args.port, _gf_true,
&brickinfo);
+ if (args.rdma_port) {
+ snprintf(brick_path, PATH_MAX, "%s.rdma", args.brick);
+ rsp.op_ret = pmap_registry_remove (THIS, args.rdma_port,
+ brick_path, GF_PMAP_PORT_BRICKSERVER,
+ req->trans);
+ }
+
+ if (!ret)
+ glusterd_brick_update_signin (brickinfo, _gf_false);
+
fail:
glusterd_submit_reply (req, &rsp, NULL, 0, NULL,
(xdrproc_t)xdr_pmap_signout_rsp);
free (args.brick);//malloced by xdr
- if (!ret)
- glusterd_brick_update_signin (brickinfo, _gf_false);
-
return 0;
}
diff --git a/xlators/protocol/client/src/client-handshake.c b/xlators/protocol/client/src/client-handshake.c
index cf91c3b723c..8bd3d6a3d09 100644
--- a/xlators/protocol/client/src/client-handshake.c
+++ b/xlators/protocol/client/src/client-handshake.c
@@ -1502,7 +1502,6 @@ client_query_portmap_cbk (struct rpc_req *req, struct iovec *iov, int count, voi
conf->portmap_err_logged = 0;
conf->disconnect_err_logged = 0;
-
config.remote_port = rsp.port;
rpc_clnt_reconfig (conf->rpc, &config);