From 54f8ee45a5152bea73009accb569c90994f16f08 Mon Sep 17 00:00:00 2001 From: Kaushal M Date: Wed, 6 May 2015 13:10:15 +0530 Subject: glusterd: Use generation number to find peerinfo in RPC notifications The generation number for each peerinfo object is unique. It can be used to find the exact peerinfo object, which is required for peer RPC notifications. Using hostname and uuid matching to find peerinfos can return incorrect peerinfos to be returned in certain cases like multi network peer probe. This could cause updates to happen to incorrect peerinfos. Change-Id: Ia0aada8214fd6d43381e5afd282e08d53a277251 BUG: 1215018 Signed-off-by: Kaushal M Reviewed-on: http://review.gluster.org/10495 Tested-by: Gluster Build System Tested-by: NetBSD Build System Reviewed-by: Atin Mukherjee (cherry picked from commit 02583099a219ce327aac62af22b486c7b9fcb531) Reviewed-on: http://review.gluster.org/10623 Reviewed-by: Krishnan Parthasarathi Tested-by: Krishnan Parthasarathi --- xlators/mgmt/glusterd/src/glusterd-handshake.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'xlators/mgmt/glusterd/src/glusterd-handshake.c') diff --git a/xlators/mgmt/glusterd/src/glusterd-handshake.c b/xlators/mgmt/glusterd/src/glusterd-handshake.c index bc00e99b62f..f1712685dcb 100644 --- a/xlators/mgmt/glusterd/src/glusterd-handshake.c +++ b/xlators/mgmt/glusterd/src/glusterd-handshake.c @@ -1527,7 +1527,7 @@ glusterd_event_connected_inject (glusterd_peerctx_t *peerctx) rcu_read_lock (); - peerinfo = glusterd_peerinfo_find (peerctx->peerid, peerctx->peername); + peerinfo = glusterd_peerinfo_find_by_generation (peerctx->peerinfo_gen); if (!peerinfo) { ret = -1; gf_log (THIS->name, GF_LOG_ERROR, "Could not find peer %s(%s)", @@ -1621,7 +1621,7 @@ __glusterd_mgmt_hndsk_version_ack_cbk (struct rpc_req *req, struct iovec *iov, peerctx = frame->local; rcu_read_lock (); - peerinfo = glusterd_peerinfo_find (peerctx->peerid, peerctx->peername); + peerinfo = glusterd_peerinfo_find_by_generation (peerctx->peerinfo_gen); if (!peerinfo) { gf_log (this->name, GF_LOG_DEBUG, "Could not find peer %s(%s)", peerctx->peername, uuid_utoa (peerctx->peerid)); @@ -1725,7 +1725,7 @@ __glusterd_mgmt_hndsk_version_cbk (struct rpc_req *req, struct iovec *iov, rcu_read_lock (); - peerinfo = glusterd_peerinfo_find (peerctx->peerid, peerctx->peername); + peerinfo = glusterd_peerinfo_find_by_generation (peerctx->peerinfo_gen); if (!peerinfo) { ret = -1; gf_log (this->name, GF_LOG_DEBUG, "Could not find peer %s(%s)", @@ -1859,7 +1859,7 @@ glusterd_mgmt_handshake (xlator_t *this, glusterd_peerctx_t *peerctx) rcu_read_lock (); - peerinfo = glusterd_peerinfo_find (peerctx->peerid, peerctx->peername); + peerinfo = glusterd_peerinfo_find_by_generation (peerctx->peerinfo_gen); if (!peerinfo) { gf_log (THIS->name, GF_LOG_DEBUG, "Could not find peer %s(%s)", peerctx->peername, uuid_utoa (peerctx->peerid)); @@ -1988,7 +1988,7 @@ __glusterd_peer_dump_version_cbk (struct rpc_req *req, struct iovec *iov, rcu_read_lock (); - peerinfo = glusterd_peerinfo_find (peerctx->peerid, peerctx->peername); + peerinfo = glusterd_peerinfo_find_by_generation (peerctx->peerinfo_gen); if (!peerinfo) { gf_log (this->name, GF_LOG_DEBUG, "Couldn't find peer %s(%s)", peerctx->peername, uuid_utoa (peerctx->peerid)); @@ -2109,7 +2109,7 @@ glusterd_peer_dump_version (xlator_t *this, struct rpc_clnt *rpc, rcu_read_lock (); - peerinfo = glusterd_peerinfo_find (peerctx->peerid, peerctx->peername); + peerinfo = glusterd_peerinfo_find_by_generation (peerctx->peerinfo_gen); if (!peerinfo) { gf_log (this->name, GF_LOG_DEBUG, "Couldn't find peer %s(%s)", peerctx->peername, uuid_utoa (peerctx->peerid)); -- cgit