From e16868dede6455cab644805af6fe1ac312775e13 Mon Sep 17 00:00:00 2001 From: Gluster Ant Date: Wed, 12 Sep 2018 17:52:45 +0530 Subject: Land part 2 of clang-format changes Change-Id: Ia84cc24c8924e6d22d02ac15f611c10e26db99b4 Signed-off-by: Nigel Babu --- xlators/mgmt/glusterd/src/glusterd-peer-utils.c | 1488 +++++++++++------------ 1 file changed, 742 insertions(+), 746 deletions(-) (limited to 'xlators/mgmt/glusterd/src/glusterd-peer-utils.c') diff --git a/xlators/mgmt/glusterd/src/glusterd-peer-utils.c b/xlators/mgmt/glusterd/src/glusterd-peer-utils.c index bd15633cdc2..7d2d28520fc 100644 --- a/xlators/mgmt/glusterd/src/glusterd-peer-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-peer-utils.c @@ -16,73 +16,73 @@ #include "glusterd-utils.h" void -glusterd_peerinfo_destroy (struct rcu_head *head) +glusterd_peerinfo_destroy(struct rcu_head *head) { - int32_t ret = -1; - glusterd_peerinfo_t *peerinfo = NULL; - glusterd_peer_hostname_t *hostname = NULL; - glusterd_peer_hostname_t *tmp = NULL; + int32_t ret = -1; + glusterd_peerinfo_t *peerinfo = NULL; + glusterd_peer_hostname_t *hostname = NULL; + glusterd_peer_hostname_t *tmp = NULL; - /* This works as rcu_head is the first member of gd_rcu_head */ - peerinfo = caa_container_of ((gd_rcu_head *)head, glusterd_peerinfo_t, - rcu_head); + /* This works as rcu_head is the first member of gd_rcu_head */ + peerinfo = caa_container_of((gd_rcu_head *)head, glusterd_peerinfo_t, + rcu_head); - /* Set THIS to the saved this. Needed by some functions below */ - THIS = peerinfo->rcu_head.this; + /* Set THIS to the saved this. Needed by some functions below */ + THIS = peerinfo->rcu_head.this; - CDS_INIT_LIST_HEAD (&peerinfo->uuid_list); + CDS_INIT_LIST_HEAD(&peerinfo->uuid_list); - ret = glusterd_store_delete_peerinfo (peerinfo); - if (ret) { - gf_msg ("glusterd", GF_LOG_ERROR, errno, - GD_MSG_PEERINFO_DELETE_FAIL, - "Deleting peer info failed"); - } + ret = glusterd_store_delete_peerinfo(peerinfo); + if (ret) { + gf_msg("glusterd", GF_LOG_ERROR, errno, GD_MSG_PEERINFO_DELETE_FAIL, + "Deleting peer info failed"); + } - GF_FREE (peerinfo->hostname); - peerinfo->hostname = NULL; + GF_FREE(peerinfo->hostname); + peerinfo->hostname = NULL; - cds_list_for_each_entry_safe (hostname, tmp, &peerinfo->hostnames, - hostname_list) { - glusterd_peer_hostname_free (hostname); - } + cds_list_for_each_entry_safe(hostname, tmp, &peerinfo->hostnames, + hostname_list) + { + glusterd_peer_hostname_free(hostname); + } - glusterd_sm_tr_log_delete (&peerinfo->sm_log); - pthread_mutex_destroy (&peerinfo->delete_lock); - GF_FREE (peerinfo); + glusterd_sm_tr_log_delete(&peerinfo->sm_log); + pthread_mutex_destroy(&peerinfo->delete_lock); + GF_FREE(peerinfo); - peerinfo = NULL; + peerinfo = NULL; - return; + return; } int32_t -glusterd_peerinfo_cleanup (glusterd_peerinfo_t *peerinfo) +glusterd_peerinfo_cleanup(glusterd_peerinfo_t *peerinfo) { - GF_ASSERT (peerinfo); - gf_boolean_t quorum_action = _gf_false; - glusterd_conf_t *priv = THIS->private; - - if (pthread_mutex_trylock (&peerinfo->delete_lock)) { - /* Someone else is already deleting the peer, so give up */ - return 0; - } - - if (peerinfo->quorum_contrib != QUORUM_NONE) - quorum_action = _gf_true; - if (peerinfo->rpc) { - peerinfo->rpc = glusterd_rpc_clnt_unref (priv, peerinfo->rpc); - peerinfo->rpc = NULL; - } + GF_ASSERT(peerinfo); + gf_boolean_t quorum_action = _gf_false; + glusterd_conf_t *priv = THIS->private; - cds_list_del_rcu (&peerinfo->uuid_list); - /* Saving THIS, as it is needed by the callback function */ - peerinfo->rcu_head.this = THIS; - call_rcu (&peerinfo->rcu_head.head, glusterd_peerinfo_destroy); - - if (quorum_action) - glusterd_do_quorum_action (); + if (pthread_mutex_trylock(&peerinfo->delete_lock)) { + /* Someone else is already deleting the peer, so give up */ return 0; + } + + if (peerinfo->quorum_contrib != QUORUM_NONE) + quorum_action = _gf_true; + if (peerinfo->rpc) { + peerinfo->rpc = glusterd_rpc_clnt_unref(priv, peerinfo->rpc); + peerinfo->rpc = NULL; + } + + cds_list_del_rcu(&peerinfo->uuid_list); + /* Saving THIS, as it is needed by the callback function */ + peerinfo->rcu_head.this = THIS; + call_rcu(&peerinfo->rcu_head.head, glusterd_peerinfo_destroy); + + if (quorum_action) + glusterd_do_quorum_action(); + return 0; } /* glusterd_peerinfo_find_by_hostname searches for a peer which matches the @@ -94,79 +94,76 @@ glusterd_peerinfo_cleanup (glusterd_peerinfo_t *peerinfo) * the resolved addrinfos. */ glusterd_peerinfo_t * -glusterd_peerinfo_find_by_hostname (const char *hoststr) +glusterd_peerinfo_find_by_hostname(const char *hoststr) { - int ret = -1; - struct addrinfo *addr = NULL; - struct addrinfo *p = NULL; - xlator_t *this = NULL; - glusterd_peerinfo_t *peerinfo = NULL; - - - this = THIS; - GF_ASSERT (hoststr); - - peerinfo = NULL; - - peerinfo = gd_peerinfo_find_from_hostname (hoststr); - if (peerinfo) - return peerinfo; - - ret = getaddrinfo (hoststr, NULL, NULL, &addr); - if (ret != 0) { - gf_msg (this->name, GF_LOG_ERROR, ret, - GD_MSG_GETADDRINFO_FAIL, - "error in getaddrinfo: %s\n", - gai_strerror(ret)); - goto out; - } - - for (p = addr; p != NULL; p = p->ai_next) { - peerinfo = gd_peerinfo_find_from_addrinfo (p); - if (peerinfo) { - freeaddrinfo (addr); - return peerinfo; - } + int ret = -1; + struct addrinfo *addr = NULL; + struct addrinfo *p = NULL; + xlator_t *this = NULL; + glusterd_peerinfo_t *peerinfo = NULL; + + this = THIS; + GF_ASSERT(hoststr); + + peerinfo = NULL; + + peerinfo = gd_peerinfo_find_from_hostname(hoststr); + if (peerinfo) + return peerinfo; + + ret = getaddrinfo(hoststr, NULL, NULL, &addr); + if (ret != 0) { + gf_msg(this->name, GF_LOG_ERROR, ret, GD_MSG_GETADDRINFO_FAIL, + "error in getaddrinfo: %s\n", gai_strerror(ret)); + goto out; + } + + for (p = addr; p != NULL; p = p->ai_next) { + peerinfo = gd_peerinfo_find_from_addrinfo(p); + if (peerinfo) { + freeaddrinfo(addr); + return peerinfo; } + } out: - gf_msg_debug (this->name, 0, "Unable to find friend: %s", hoststr); - if (addr) - freeaddrinfo (addr); - return NULL; + gf_msg_debug(this->name, 0, "Unable to find friend: %s", hoststr); + if (addr) + freeaddrinfo(addr); + return NULL; } int -glusterd_hostname_to_uuid (char *hostname, uuid_t uuid) +glusterd_hostname_to_uuid(char *hostname, uuid_t uuid) { - GF_ASSERT (hostname); - GF_ASSERT (uuid); + GF_ASSERT(hostname); + GF_ASSERT(uuid); - glusterd_peerinfo_t *peerinfo = NULL; - glusterd_conf_t *priv = NULL; - int ret = -1; - xlator_t *this = NULL; + glusterd_peerinfo_t *peerinfo = NULL; + glusterd_conf_t *priv = NULL; + int ret = -1; + xlator_t *this = NULL; - this = THIS; - GF_ASSERT (this); - priv = this->private; - GF_ASSERT (priv); + this = THIS; + GF_ASSERT(this); + priv = this->private; + GF_ASSERT(priv); - peerinfo = glusterd_peerinfo_find_by_hostname (hostname); - if (peerinfo) { - ret = 0; - gf_uuid_copy (uuid, peerinfo->uuid); + peerinfo = glusterd_peerinfo_find_by_hostname(hostname); + if (peerinfo) { + ret = 0; + gf_uuid_copy(uuid, peerinfo->uuid); + } else { + if (gf_is_local_addr(hostname)) { + gf_uuid_copy(uuid, MY_UUID); + ret = 0; } else { - if (gf_is_local_addr (hostname)) { - gf_uuid_copy (uuid, MY_UUID); - ret = 0; - } else { - ret = -1; - } + ret = -1; } + } - gf_msg_debug (this->name, 0, "returning %d", ret); - return ret; + gf_msg_debug(this->name, 0, "returning %d", ret); + return ret; } /* glusterd_peerinfo_find_by_uuid searches for a peer which matches the @@ -174,40 +171,39 @@ glusterd_hostname_to_uuid (char *hostname, uuid_t uuid) * Returns NULL otherwise. */ glusterd_peerinfo_t * -glusterd_peerinfo_find_by_uuid (uuid_t uuid) +glusterd_peerinfo_find_by_uuid(uuid_t uuid) { - glusterd_conf_t *priv = NULL; - glusterd_peerinfo_t *entry = NULL; - glusterd_peerinfo_t *found = NULL; - xlator_t *this = NULL; - - this = THIS; - GF_ASSERT (this); + glusterd_conf_t *priv = NULL; + glusterd_peerinfo_t *entry = NULL; + glusterd_peerinfo_t *found = NULL; + xlator_t *this = NULL; - priv = this->private; + this = THIS; + GF_ASSERT(this); - GF_ASSERT (priv); + priv = this->private; - if (gf_uuid_is_null (uuid)) - return NULL; + GF_ASSERT(priv); - rcu_read_lock (); - cds_list_for_each_entry_rcu (entry, &priv->peers, uuid_list) { - if (!gf_uuid_compare (entry->uuid, uuid)) { + if (gf_uuid_is_null(uuid)) + return NULL; - gf_msg_debug (this->name, 0, - "Friend found... state: %s", - glusterd_friend_sm_state_name_get (entry->state.state)); - found = entry; /* Probably should be rcu_dereferenced */ - break; - } + rcu_read_lock(); + cds_list_for_each_entry_rcu(entry, &priv->peers, uuid_list) + { + if (!gf_uuid_compare(entry->uuid, uuid)) { + gf_msg_debug(this->name, 0, "Friend found... state: %s", + glusterd_friend_sm_state_name_get(entry->state.state)); + found = entry; /* Probably should be rcu_dereferenced */ + break; } - rcu_read_unlock (); + } + rcu_read_unlock(); - if (!found) - gf_msg_debug (this->name, 0, - "Friend with uuid: %s, not found", uuid_utoa (uuid)); - return found; + if (!found) + gf_msg_debug(this->name, 0, "Friend with uuid: %s, not found", + uuid_utoa(uuid)); + return found; } /* glusterd_peerinfo_find will search for a peer matching either @uuid or @@ -215,39 +211,36 @@ glusterd_peerinfo_find_by_uuid (uuid_t uuid) * Returns NULL otherwise. */ glusterd_peerinfo_t * -glusterd_peerinfo_find (uuid_t uuid, const char *hostname) +glusterd_peerinfo_find(uuid_t uuid, const char *hostname) { - glusterd_peerinfo_t *peerinfo = NULL; - xlator_t *this = NULL; - - this = THIS; - GF_ASSERT (this); + glusterd_peerinfo_t *peerinfo = NULL; + xlator_t *this = NULL; + this = THIS; + GF_ASSERT(this); - if (uuid) { - peerinfo = glusterd_peerinfo_find_by_uuid (uuid); - - if (peerinfo) { - return peerinfo; - } else { - gf_msg_debug (this->name, 0, - "Unable to find peer by uuid: %s", - uuid_utoa (uuid)); - } + if (uuid) { + peerinfo = glusterd_peerinfo_find_by_uuid(uuid); + if (peerinfo) { + return peerinfo; + } else { + gf_msg_debug(this->name, 0, "Unable to find peer by uuid: %s", + uuid_utoa(uuid)); } + } - if (hostname) { - peerinfo = glusterd_peerinfo_find_by_hostname (hostname); + if (hostname) { + peerinfo = glusterd_peerinfo_find_by_hostname(hostname); - if (peerinfo) { - return peerinfo; - } else { - gf_msg_debug (this->name, 0, - "Unable to find hostname: %s", hostname); - } + if (peerinfo) { + return peerinfo; + } else { + gf_msg_debug(this->name, 0, "Unable to find hostname: %s", + hostname); } - return NULL; + } + return NULL; } /* glusterd_peerinfo_new will create a new peerinfo object and set it's members @@ -259,296 +252,295 @@ glusterd_peerinfo_find (uuid_t uuid, const char *hostname) * object. */ glusterd_peerinfo_t * -glusterd_peerinfo_new (glusterd_friend_sm_state_t state, uuid_t *uuid, - const char *hostname, int port) +glusterd_peerinfo_new(glusterd_friend_sm_state_t state, uuid_t *uuid, + const char *hostname, int port) { - glusterd_peerinfo_t *new_peer = NULL; - int ret = -1; - xlator_t *this = NULL; - glusterd_conf_t *conf = NULL; - - this = THIS; - GF_ASSERT (this); - conf = this->private; - GF_ASSERT (conf); - - new_peer = GF_CALLOC (1, sizeof (*new_peer), gf_gld_mt_peerinfo_t); - if (!new_peer) - goto out; + glusterd_peerinfo_t *new_peer = NULL; + int ret = -1; + xlator_t *this = NULL; + glusterd_conf_t *conf = NULL; - CDS_INIT_LIST_HEAD (&new_peer->uuid_list); + this = THIS; + GF_ASSERT(this); + conf = this->private; + GF_ASSERT(conf); - new_peer->state.state = state; + new_peer = GF_CALLOC(1, sizeof(*new_peer), gf_gld_mt_peerinfo_t); + if (!new_peer) + goto out; - CDS_INIT_LIST_HEAD (&new_peer->hostnames); - if (hostname) { - ret = gd_add_address_to_peer (new_peer, hostname); - if (ret) - goto out; - /* Also set it to peerinfo->hostname. Doing this as we use - * peerinfo->hostname in a lot of places and is really hard to - * get everything right - */ - new_peer->hostname = gf_strdup (hostname); - } + CDS_INIT_LIST_HEAD(&new_peer->uuid_list); - if (uuid) { - gf_uuid_copy (new_peer->uuid, *uuid); - } + new_peer->state.state = state; - ret = glusterd_sm_tr_log_init (&new_peer->sm_log, - glusterd_friend_sm_state_name_get, - glusterd_friend_sm_event_name_get, - GLUSTERD_TR_LOG_SIZE); + CDS_INIT_LIST_HEAD(&new_peer->hostnames); + if (hostname) { + ret = gd_add_address_to_peer(new_peer, hostname); if (ret) - goto out; + goto out; + /* Also set it to peerinfo->hostname. Doing this as we use + * peerinfo->hostname in a lot of places and is really hard to + * get everything right + */ + new_peer->hostname = gf_strdup(hostname); + } + + if (uuid) { + gf_uuid_copy(new_peer->uuid, *uuid); + } - if (new_peer->state.state == GD_FRIEND_STATE_BEFRIENDED) - new_peer->quorum_contrib = QUORUM_WAITING; - new_peer->port = port; + ret = glusterd_sm_tr_log_init( + &new_peer->sm_log, glusterd_friend_sm_state_name_get, + glusterd_friend_sm_event_name_get, GLUSTERD_TR_LOG_SIZE); + if (ret) + goto out; - pthread_mutex_init (&new_peer->delete_lock, NULL); + if (new_peer->state.state == GD_FRIEND_STATE_BEFRIENDED) + new_peer->quorum_contrib = QUORUM_WAITING; + new_peer->port = port; - new_peer->generation = uatomic_add_return (&conf->generation, 1); + pthread_mutex_init(&new_peer->delete_lock, NULL); + + new_peer->generation = uatomic_add_return(&conf->generation, 1); out: - if (ret && new_peer) { - glusterd_peerinfo_cleanup (new_peer); - new_peer = NULL; - } - return new_peer; + if (ret && new_peer) { + glusterd_peerinfo_cleanup(new_peer); + new_peer = NULL; + } + return new_peer; } /* Check if the all peers are connected and befriended, except the peer * specified (the peer being detached) */ gf_boolean_t -glusterd_chk_peers_connected_befriended (uuid_t skip_uuid) +glusterd_chk_peers_connected_befriended(uuid_t skip_uuid) { - gf_boolean_t ret = _gf_true; - glusterd_peerinfo_t *peerinfo = NULL; - glusterd_conf_t *priv = NULL; - - priv= THIS->private; - GF_ASSERT (priv); - - rcu_read_lock (); - cds_list_for_each_entry_rcu (peerinfo, &priv->peers, uuid_list) { - - if (!gf_uuid_is_null (skip_uuid) && !gf_uuid_compare (skip_uuid, - peerinfo->uuid)) - continue; - - if ((GD_FRIEND_STATE_BEFRIENDED != peerinfo->state.state) - || !(peerinfo->connected)) { - ret = _gf_false; - break; - } + gf_boolean_t ret = _gf_true; + glusterd_peerinfo_t *peerinfo = NULL; + glusterd_conf_t *priv = NULL; + + priv = THIS->private; + GF_ASSERT(priv); + + rcu_read_lock(); + cds_list_for_each_entry_rcu(peerinfo, &priv->peers, uuid_list) + { + if (!gf_uuid_is_null(skip_uuid) && + !gf_uuid_compare(skip_uuid, peerinfo->uuid)) + continue; + + if ((GD_FRIEND_STATE_BEFRIENDED != peerinfo->state.state) || + !(peerinfo->connected)) { + ret = _gf_false; + break; } - rcu_read_unlock (); + } + rcu_read_unlock(); - gf_msg_debug (THIS->name, 0, "Returning %s", - (ret?"TRUE":"FALSE")); - return ret; + gf_msg_debug(THIS->name, 0, "Returning %s", (ret ? "TRUE" : "FALSE")); + return ret; } /* Return hostname for given uuid if it exists * else return NULL */ char * -glusterd_uuid_to_hostname (uuid_t uuid) +glusterd_uuid_to_hostname(uuid_t uuid) { - char *hostname = NULL; - glusterd_conf_t *priv = NULL; - glusterd_peerinfo_t *entry = NULL; - - priv = THIS->private; - GF_ASSERT (priv); - - if (!gf_uuid_compare (MY_UUID, uuid)) { - hostname = gf_strdup ("localhost"); + char *hostname = NULL; + glusterd_conf_t *priv = NULL; + glusterd_peerinfo_t *entry = NULL; + + priv = THIS->private; + GF_ASSERT(priv); + + if (!gf_uuid_compare(MY_UUID, uuid)) { + hostname = gf_strdup("localhost"); + } + rcu_read_lock(); + if (!cds_list_empty(&priv->peers)) { + cds_list_for_each_entry_rcu(entry, &priv->peers, uuid_list) + { + if (!gf_uuid_compare(entry->uuid, uuid)) { + hostname = gf_strdup(entry->hostname); + break; + } } - rcu_read_lock (); - if (!cds_list_empty (&priv->peers)) { - cds_list_for_each_entry_rcu (entry, &priv->peers, uuid_list) { - if (!gf_uuid_compare (entry->uuid, uuid)) { - hostname = gf_strdup (entry->hostname); - break; - } - } - } - rcu_read_unlock (); + } + rcu_read_unlock(); - return hostname; + return hostname; } -char* -gd_peer_uuid_str (glusterd_peerinfo_t *peerinfo) +char * +gd_peer_uuid_str(glusterd_peerinfo_t *peerinfo) { - if ((peerinfo == NULL) || gf_uuid_is_null (peerinfo->uuid)) - return NULL; + if ((peerinfo == NULL) || gf_uuid_is_null(peerinfo->uuid)) + return NULL; - if (peerinfo->uuid_str[0] == '\0') - uuid_utoa_r (peerinfo->uuid, peerinfo->uuid_str); + if (peerinfo->uuid_str[0] == '\0') + uuid_utoa_r(peerinfo->uuid, peerinfo->uuid_str); - return peerinfo->uuid_str; + return peerinfo->uuid_str; } gf_boolean_t -glusterd_are_all_peers_up () +glusterd_are_all_peers_up() { - glusterd_peerinfo_t *peerinfo = NULL; - xlator_t *this = NULL; - glusterd_conf_t *conf = NULL; - gf_boolean_t peers_up = _gf_false; - - this = THIS; - GF_VALIDATE_OR_GOTO ("glusterd", this, out); - - conf = this->private; - GF_VALIDATE_OR_GOTO (this->name, conf, out); - - rcu_read_lock (); - cds_list_for_each_entry_rcu (peerinfo, &conf->peers, uuid_list) { - if (!peerinfo->connected) { - rcu_read_unlock (); - goto out; - } + glusterd_peerinfo_t *peerinfo = NULL; + xlator_t *this = NULL; + glusterd_conf_t *conf = NULL; + gf_boolean_t peers_up = _gf_false; + + this = THIS; + GF_VALIDATE_OR_GOTO("glusterd", this, out); + + conf = this->private; + GF_VALIDATE_OR_GOTO(this->name, conf, out); + + rcu_read_lock(); + cds_list_for_each_entry_rcu(peerinfo, &conf->peers, uuid_list) + { + if (!peerinfo->connected) { + rcu_read_unlock(); + goto out; } - rcu_read_unlock (); + } + rcu_read_unlock(); - peers_up = _gf_true; + peers_up = _gf_true; out: - return peers_up; + return peers_up; } gf_boolean_t -glusterd_are_vol_all_peers_up (glusterd_volinfo_t *volinfo, - struct cds_list_head *peers, - char **down_peerstr) +glusterd_are_vol_all_peers_up(glusterd_volinfo_t *volinfo, + struct cds_list_head *peers, char **down_peerstr) { - glusterd_peerinfo_t *peerinfo = NULL; - glusterd_brickinfo_t *brickinfo = NULL; - gf_boolean_t ret = _gf_false; - - cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { - if (!gf_uuid_compare (brickinfo->uuid, MY_UUID)) - continue; - - rcu_read_lock (); - cds_list_for_each_entry_rcu (peerinfo, peers, uuid_list) { - if (gf_uuid_compare (peerinfo->uuid, brickinfo->uuid)) - continue; - - /*Found peer who owns the brick, return false - * if peer is not connected or not friend */ - if (!(peerinfo->connected) || - (peerinfo->state.state != - GD_FRIEND_STATE_BEFRIENDED)) { - *down_peerstr = gf_strdup (peerinfo->hostname); - gf_msg_debug (THIS->name, 0, "Peer %s is down. ", - peerinfo->hostname); - rcu_read_unlock (); - goto out; - } - } - rcu_read_unlock (); + glusterd_peerinfo_t *peerinfo = NULL; + glusterd_brickinfo_t *brickinfo = NULL; + gf_boolean_t ret = _gf_false; + + cds_list_for_each_entry(brickinfo, &volinfo->bricks, brick_list) + { + if (!gf_uuid_compare(brickinfo->uuid, MY_UUID)) + continue; + + rcu_read_lock(); + cds_list_for_each_entry_rcu(peerinfo, peers, uuid_list) + { + if (gf_uuid_compare(peerinfo->uuid, brickinfo->uuid)) + continue; + + /*Found peer who owns the brick, return false + * if peer is not connected or not friend */ + if (!(peerinfo->connected) || + (peerinfo->state.state != GD_FRIEND_STATE_BEFRIENDED)) { + *down_peerstr = gf_strdup(peerinfo->hostname); + gf_msg_debug(THIS->name, 0, "Peer %s is down. ", + peerinfo->hostname); + rcu_read_unlock(); + goto out; + } } + rcu_read_unlock(); + } - ret = _gf_true; + ret = _gf_true; out: - gf_msg_debug ("glusterd", 0, "Returning %d", ret); - return ret; + gf_msg_debug("glusterd", 0, "Returning %d", ret); + return ret; } int32_t -glusterd_peer_hostname_new (const char *hostname, - glusterd_peer_hostname_t **name) +glusterd_peer_hostname_new(const char *hostname, + glusterd_peer_hostname_t **name) { - glusterd_peer_hostname_t *peer_hostname = NULL; - int32_t ret = -1; + glusterd_peer_hostname_t *peer_hostname = NULL; + int32_t ret = -1; - GF_ASSERT (hostname); - GF_ASSERT (name); + GF_ASSERT(hostname); + GF_ASSERT(name); - peer_hostname = GF_CALLOC (1, sizeof (*peer_hostname), - gf_gld_mt_peer_hostname_t); + peer_hostname = GF_CALLOC(1, sizeof(*peer_hostname), + gf_gld_mt_peer_hostname_t); - if (!peer_hostname) - goto out; + if (!peer_hostname) + goto out; - peer_hostname->hostname = gf_strdup (hostname); - CDS_INIT_LIST_HEAD (&peer_hostname->hostname_list); + peer_hostname->hostname = gf_strdup(hostname); + CDS_INIT_LIST_HEAD(&peer_hostname->hostname_list); - *name = peer_hostname; - ret = 0; + *name = peer_hostname; + ret = 0; out: - gf_msg_debug ("glusterd", 0, "Returning %d", ret); - return ret; + gf_msg_debug("glusterd", 0, "Returning %d", ret); + return ret; } void -glusterd_peer_hostname_free (glusterd_peer_hostname_t *name) +glusterd_peer_hostname_free(glusterd_peer_hostname_t *name) { - if (!name) - return; + if (!name) + return; - cds_list_del_init (&name->hostname_list); + cds_list_del_init(&name->hostname_list); - GF_FREE (name->hostname); - name->hostname = NULL; + GF_FREE(name->hostname); + name->hostname = NULL; - GF_FREE (name); + GF_FREE(name); - return; + return; } gf_boolean_t -gd_peer_has_address (glusterd_peerinfo_t *peerinfo, const char *address) +gd_peer_has_address(glusterd_peerinfo_t *peerinfo, const char *address) { - gf_boolean_t ret = _gf_false; - glusterd_peer_hostname_t *hostname = NULL; + gf_boolean_t ret = _gf_false; + glusterd_peer_hostname_t *hostname = NULL; - GF_VALIDATE_OR_GOTO ("glusterd", (peerinfo != NULL), out); - GF_VALIDATE_OR_GOTO ("glusterd", (address != NULL), out); + GF_VALIDATE_OR_GOTO("glusterd", (peerinfo != NULL), out); + GF_VALIDATE_OR_GOTO("glusterd", (address != NULL), out); - cds_list_for_each_entry (hostname, &peerinfo->hostnames, - hostname_list) { - if (strcmp (hostname->hostname, address) == 0) { - ret = _gf_true; - break; - } + cds_list_for_each_entry(hostname, &peerinfo->hostnames, hostname_list) + { + if (strcmp(hostname->hostname, address) == 0) { + ret = _gf_true; + break; } + } out: - return ret; + return ret; } int -gd_add_address_to_peer (glusterd_peerinfo_t *peerinfo, const char *address) +gd_add_address_to_peer(glusterd_peerinfo_t *peerinfo, const char *address) { + int ret = -1; + glusterd_peer_hostname_t *hostname = NULL; - int ret = -1; - glusterd_peer_hostname_t *hostname = NULL; + GF_VALIDATE_OR_GOTO("glusterd", (peerinfo != NULL), out); + GF_VALIDATE_OR_GOTO("glusterd", (address != NULL), out); - GF_VALIDATE_OR_GOTO ("glusterd", (peerinfo != NULL), out); - GF_VALIDATE_OR_GOTO ("glusterd", (address != NULL), out); + if (gd_peer_has_address(peerinfo, address)) { + ret = 0; + goto out; + } - if (gd_peer_has_address (peerinfo, address)) { - ret = 0; - goto out; - } + ret = glusterd_peer_hostname_new(address, &hostname); + if (ret) + goto out; - ret = glusterd_peer_hostname_new (address, &hostname); - if (ret) - goto out; + cds_list_add_tail_rcu(&hostname->hostname_list, &peerinfo->hostnames); - cds_list_add_tail_rcu (&hostname->hostname_list, &peerinfo->hostnames); - - ret = 0; + ret = 0; out: - return ret; + return ret; } /* gd_add_friend_to_dict() adds details of @friend into @dict with the given @@ -558,80 +550,78 @@ out: * is >= GD_OP_VERSION_3_6_0 */ int -gd_add_friend_to_dict (glusterd_peerinfo_t *friend, dict_t *dict, - const char *prefix) +gd_add_friend_to_dict(glusterd_peerinfo_t *friend, dict_t *dict, + const char *prefix) { - int ret = -1; - xlator_t *this = NULL; - glusterd_conf_t *conf = NULL; - char key[100] = {0,}; - glusterd_peer_hostname_t *address = NULL; - int count = 0; - - this = THIS; - GF_VALIDATE_OR_GOTO ("glusterd", (this != NULL), out); - - conf = this->private; - GF_VALIDATE_OR_GOTO (this->name, (conf != NULL), out); + int ret = -1; + xlator_t *this = NULL; + glusterd_conf_t *conf = NULL; + char key[100] = { + 0, + }; + glusterd_peer_hostname_t *address = NULL; + int count = 0; + + this = THIS; + GF_VALIDATE_OR_GOTO("glusterd", (this != NULL), out); + + conf = this->private; + GF_VALIDATE_OR_GOTO(this->name, (conf != NULL), out); + + GF_VALIDATE_OR_GOTO(this->name, (friend != NULL), out); + GF_VALIDATE_OR_GOTO(this->name, (dict != NULL), out); + GF_VALIDATE_OR_GOTO(this->name, (prefix != NULL), out); + + snprintf(key, sizeof(key), "%s.uuid", prefix); + ret = dict_set_dynstr_with_alloc(dict, key, uuid_utoa(friend->uuid)); + if (ret) { + gf_msg(this->name, GF_LOG_ERROR, 0, GD_MSG_DICT_SET_FAILED, + "Failed to set key %s in dict", key); + goto out; + } + + /* Setting the first hostname from the list with this key for backward + * compatibility + */ + snprintf(key, sizeof(key), "%s.hostname", prefix); + address = cds_list_entry(&friend->hostnames, glusterd_peer_hostname_t, + hostname_list); + ret = dict_set_dynstr_with_alloc(dict, key, address->hostname); + if (ret) { + gf_msg(this->name, GF_LOG_ERROR, 0, GD_MSG_DICT_SET_FAILED, + "Failed to set key %s in dict", key); + goto out; + } + + if (conf->op_version < GD_OP_VERSION_3_6_0) { + ret = 0; + goto out; + } - GF_VALIDATE_OR_GOTO (this->name, (friend != NULL), out); - GF_VALIDATE_OR_GOTO (this->name, (dict != NULL), out); - GF_VALIDATE_OR_GOTO (this->name, (prefix != NULL), out); + address = NULL; + count = 0; + cds_list_for_each_entry(address, &friend->hostnames, hostname_list) + { + GF_VALIDATE_OR_GOTO(this->name, (address != NULL), out); - snprintf (key, sizeof (key), "%s.uuid", prefix); - ret = dict_set_dynstr_with_alloc (dict, key, uuid_utoa (friend->uuid)); + snprintf(key, sizeof(key), "%s.hostname%d", prefix, count); + ret = dict_set_dynstr_with_alloc(dict, key, address->hostname); if (ret) { - gf_msg (this->name, GF_LOG_ERROR, 0, - GD_MSG_DICT_SET_FAILED, - "Failed to set key %s in dict", key); - goto out; + gf_msg(this->name, GF_LOG_ERROR, 0, GD_MSG_DICT_SET_FAILED, + "Failed to set key %s in dict", key); + goto out; } - - /* Setting the first hostname from the list with this key for backward - * compatibility - */ - snprintf (key, sizeof (key), "%s.hostname", prefix); - address = cds_list_entry (&friend->hostnames, glusterd_peer_hostname_t, - hostname_list); - ret = dict_set_dynstr_with_alloc (dict, key, address->hostname); - if (ret) { - gf_msg (this->name, GF_LOG_ERROR, 0, - GD_MSG_DICT_SET_FAILED, - "Failed to set key %s in dict", key); - goto out; - } - - if (conf->op_version < GD_OP_VERSION_3_6_0) { - ret = 0; - goto out; - } - - address = NULL; - count = 0; - cds_list_for_each_entry (address, &friend->hostnames, hostname_list) { - GF_VALIDATE_OR_GOTO (this->name, (address != NULL), out); - - snprintf (key, sizeof (key), "%s.hostname%d", prefix, count); - ret = dict_set_dynstr_with_alloc (dict, key, address->hostname); - if (ret) { - gf_msg (this->name, GF_LOG_ERROR, 0, - GD_MSG_DICT_SET_FAILED, - "Failed to set key %s in dict", key); - goto out; - } - count++; - } - ret = snprintf (key, sizeof (key), "%s.address-count", prefix); - ret = dict_set_int32n (dict, key, ret, count); - if (ret) - gf_msg (this->name, GF_LOG_ERROR, 0, - GD_MSG_DICT_SET_FAILED, - "Failed to set key %s in dict", key); + count++; + } + ret = snprintf(key, sizeof(key), "%s.address-count", prefix); + ret = dict_set_int32n(dict, key, ret, count); + if (ret) + gf_msg(this->name, GF_LOG_ERROR, 0, GD_MSG_DICT_SET_FAILED, + "Failed to set key %s in dict", key); out: - gf_msg_debug (this ? this->name : "glusterd", 0, "Returning %d", - ret); - return ret; + gf_msg_debug(this ? this->name : "glusterd", 0, "Returning %d", ret); + return ret; } /* gd_peerinfo_find_from_hostname iterates over all the addresses saved for each @@ -639,39 +629,39 @@ out: * Returns the matched peer if found else returns NULL */ glusterd_peerinfo_t * -gd_peerinfo_find_from_hostname (const char *hoststr) +gd_peerinfo_find_from_hostname(const char *hoststr) { - xlator_t *this = NULL; - glusterd_conf_t *priv = NULL; - glusterd_peerinfo_t *peer = NULL; - glusterd_peerinfo_t *found = NULL; - glusterd_peer_hostname_t *tmphost = NULL; - - this = THIS; - GF_ASSERT (this != NULL); - priv = this->private; - GF_VALIDATE_OR_GOTO (this->name, (priv != NULL), out); - - GF_VALIDATE_OR_GOTO (this->name, (hoststr != NULL), out); - - rcu_read_lock (); - cds_list_for_each_entry_rcu (peer, &priv->peers, uuid_list) { - cds_list_for_each_entry_rcu (tmphost, &peer->hostnames, - hostname_list) { - if (!strncasecmp (tmphost->hostname, hoststr, 1024)) { - gf_msg_debug (this->name, 0, - "Friend %s found.. state: %d", - tmphost->hostname, peer->state.state); - found = peer; /* Probably needs to be - dereferenced*/ - goto unlock; - } - } + xlator_t *this = NULL; + glusterd_conf_t *priv = NULL; + glusterd_peerinfo_t *peer = NULL; + glusterd_peerinfo_t *found = NULL; + glusterd_peer_hostname_t *tmphost = NULL; + + this = THIS; + GF_ASSERT(this != NULL); + priv = this->private; + GF_VALIDATE_OR_GOTO(this->name, (priv != NULL), out); + + GF_VALIDATE_OR_GOTO(this->name, (hoststr != NULL), out); + + rcu_read_lock(); + cds_list_for_each_entry_rcu(peer, &priv->peers, uuid_list) + { + cds_list_for_each_entry_rcu(tmphost, &peer->hostnames, hostname_list) + { + if (!strncasecmp(tmphost->hostname, hoststr, 1024)) { + gf_msg_debug(this->name, 0, "Friend %s found.. state: %d", + tmphost->hostname, peer->state.state); + found = peer; /* Probably needs to be + dereferenced*/ + goto unlock; + } } + } unlock: - rcu_read_unlock (); + rcu_read_unlock(); out: - return found; + return found; } /* gd_peerinfo_find_from_addrinfo iterates over all the addresses saved for each @@ -685,61 +675,59 @@ out: * Returns the matched peer if found else returns NULL */ glusterd_peerinfo_t * -gd_peerinfo_find_from_addrinfo (const struct addrinfo *addr) +gd_peerinfo_find_from_addrinfo(const struct addrinfo *addr) { - xlator_t *this = NULL; - glusterd_conf_t *conf = NULL; - glusterd_peerinfo_t *peer = NULL; - glusterd_peerinfo_t *found = NULL; - glusterd_peer_hostname_t *address = NULL; - int ret = 0; - struct addrinfo *paddr = NULL; - struct addrinfo *tmp = NULL; - - this = THIS; - GF_ASSERT (this != NULL); - conf = this->private; - GF_VALIDATE_OR_GOTO (this->name, (conf != NULL), out); - - GF_VALIDATE_OR_GOTO (this->name, (addr != NULL), out); - - rcu_read_lock (); - cds_list_for_each_entry_rcu (peer, &conf->peers, uuid_list) { - cds_list_for_each_entry_rcu (address, &peer->hostnames, - hostname_list) { - /* TODO: Cache the resolved addrinfos to improve - * performance - */ - ret = getaddrinfo (address->hostname, NULL, NULL, - &paddr); - if (ret) { - /* Don't fail if getaddrinfo fails, continue - * onto the next address - */ - gf_msg_trace (this->name, 0, - "getaddrinfo for %s failed (%s)", - address->hostname, gai_strerror (ret)); - ret = 0; - continue; - } - - for (tmp = paddr; tmp != NULL; tmp = tmp->ai_next) { - if (gf_compare_sockaddr (addr->ai_addr, - tmp->ai_addr)) { - found = peer; /* (de)referenced? */ - break; - } - } - - freeaddrinfo (paddr); - if (found) - goto unlock; + xlator_t *this = NULL; + glusterd_conf_t *conf = NULL; + glusterd_peerinfo_t *peer = NULL; + glusterd_peerinfo_t *found = NULL; + glusterd_peer_hostname_t *address = NULL; + int ret = 0; + struct addrinfo *paddr = NULL; + struct addrinfo *tmp = NULL; + + this = THIS; + GF_ASSERT(this != NULL); + conf = this->private; + GF_VALIDATE_OR_GOTO(this->name, (conf != NULL), out); + + GF_VALIDATE_OR_GOTO(this->name, (addr != NULL), out); + + rcu_read_lock(); + cds_list_for_each_entry_rcu(peer, &conf->peers, uuid_list) + { + cds_list_for_each_entry_rcu(address, &peer->hostnames, hostname_list) + { + /* TODO: Cache the resolved addrinfos to improve + * performance + */ + ret = getaddrinfo(address->hostname, NULL, NULL, &paddr); + if (ret) { + /* Don't fail if getaddrinfo fails, continue + * onto the next address + */ + gf_msg_trace(this->name, 0, "getaddrinfo for %s failed (%s)", + address->hostname, gai_strerror(ret)); + ret = 0; + continue; + } + + for (tmp = paddr; tmp != NULL; tmp = tmp->ai_next) { + if (gf_compare_sockaddr(addr->ai_addr, tmp->ai_addr)) { + found = peer; /* (de)referenced? */ + break; } + } + + freeaddrinfo(paddr); + if (found) + goto unlock; } + } unlock: - rcu_read_unlock (); + rcu_read_unlock(); out: - return found; + return found; } /* gd_update_peerinfo_from_dict will update the hostnames for @peerinfo from @@ -747,84 +735,87 @@ out: * Returns 0 on success and -1 on failure. */ int -gd_update_peerinfo_from_dict (glusterd_peerinfo_t *peerinfo, dict_t *dict, - const char *prefix) +gd_update_peerinfo_from_dict(glusterd_peerinfo_t *peerinfo, dict_t *dict, + const char *prefix) { - int ret = -1; - xlator_t *this = NULL; - glusterd_conf_t *conf = NULL; - char key[100] = {0,}; - char *hostname = NULL; - int count = 0; - int i = 0; - - this = THIS; - GF_ASSERT (this != NULL); - - conf = this->private; - GF_VALIDATE_OR_GOTO (this->name, (conf != NULL), out); - - GF_VALIDATE_OR_GOTO (this->name, (peerinfo != NULL), out); - GF_VALIDATE_OR_GOTO (this->name, (dict != NULL), out); - GF_VALIDATE_OR_GOTO (this->name, (prefix != NULL), out); - - ret = snprintf (key, sizeof (key), "%s.hostname", prefix); - ret = dict_get_strn (dict, key, ret, &hostname); + int ret = -1; + xlator_t *this = NULL; + glusterd_conf_t *conf = NULL; + char key[100] = { + 0, + }; + char *hostname = NULL; + int count = 0; + int i = 0; + + this = THIS; + GF_ASSERT(this != NULL); + + conf = this->private; + GF_VALIDATE_OR_GOTO(this->name, (conf != NULL), out); + + GF_VALIDATE_OR_GOTO(this->name, (peerinfo != NULL), out); + GF_VALIDATE_OR_GOTO(this->name, (dict != NULL), out); + GF_VALIDATE_OR_GOTO(this->name, (prefix != NULL), out); + + ret = snprintf(key, sizeof(key), "%s.hostname", prefix); + ret = dict_get_strn(dict, key, ret, &hostname); + if (ret) { + gf_msg(this->name, GF_LOG_ERROR, 0, GD_MSG_DICT_GET_FAILED, + "Key %s not present in " + "dictionary", + key); + goto out; + } + ret = gd_add_address_to_peer(peerinfo, hostname); + if (ret) { + gf_msg(this->name, GF_LOG_ERROR, 0, GD_MSG_ADD_ADDRESS_TO_PEER_FAIL, + "Could not add address to peer"); + goto out; + } + /* Also set peerinfo->hostname to the first address */ + if (peerinfo->hostname != NULL) + GF_FREE(peerinfo->hostname); + peerinfo->hostname = gf_strdup(hostname); + + if (conf->op_version < GD_OP_VERSION_3_6_0) { + ret = 0; + goto out; + } + + ret = snprintf(key, sizeof(key), "%s.address-count", prefix); + ret = dict_get_int32n(dict, key, ret, &count); + if (ret) { + gf_msg(this->name, GF_LOG_ERROR, 0, GD_MSG_DICT_GET_FAILED, + "Key %s not present in " + "dictionary", + key); + goto out; + } + hostname = NULL; + for (i = 0; i < count; i++) { + ret = snprintf(key, sizeof(key), "%s.hostname%d", prefix, i); + ret = dict_get_strn(dict, key, ret, &hostname); if (ret) { - gf_msg (this->name, GF_LOG_ERROR, 0, - GD_MSG_DICT_GET_FAILED, "Key %s not present in " - "dictionary", key); - goto out; + gf_msg(this->name, GF_LOG_ERROR, 0, GD_MSG_DICT_GET_FAILED, + "Key %s not present " + "in dictionary", + key); + goto out; } - ret = gd_add_address_to_peer (peerinfo, hostname); + ret = gd_add_address_to_peer(peerinfo, hostname); if (ret) { - gf_msg (this->name, GF_LOG_ERROR, 0, - GD_MSG_ADD_ADDRESS_TO_PEER_FAIL, - "Could not add address to peer"); - goto out; + gf_msg(this->name, GF_LOG_ERROR, 0, GD_MSG_ADD_ADDRESS_TO_PEER_FAIL, + "Could not add address to peer"); + goto out; } - /* Also set peerinfo->hostname to the first address */ - if (peerinfo->hostname != NULL) - GF_FREE (peerinfo->hostname); - peerinfo->hostname = gf_strdup (hostname); - if (conf->op_version < GD_OP_VERSION_3_6_0) { - ret = 0; - goto out; - } - - ret = snprintf (key, sizeof (key), "%s.address-count", prefix); - ret = dict_get_int32n (dict, key, ret, &count); - if (ret) { - gf_msg (this->name, GF_LOG_ERROR, 0, - GD_MSG_DICT_GET_FAILED, "Key %s not present in " - "dictionary", key); - goto out; - } hostname = NULL; - for (i = 0; i < count; i++) { - ret = snprintf (key, sizeof (key), "%s.hostname%d", prefix, i); - ret = dict_get_strn (dict, key, ret, &hostname); - if (ret) { - gf_msg (this->name, GF_LOG_ERROR, 0, - GD_MSG_DICT_GET_FAILED, "Key %s not present " - "in dictionary", key); - goto out; - } - ret = gd_add_address_to_peer (peerinfo, hostname); - if (ret) { - gf_msg (this->name, GF_LOG_ERROR, 0, - GD_MSG_ADD_ADDRESS_TO_PEER_FAIL, - "Could not add address to peer"); - goto out; - } - - hostname = NULL; - } + } out: - gf_msg_debug (this->name, 0, "Returning %d", ret); - return ret; + gf_msg_debug(this->name, 0, "Returning %d", ret); + return ret; } /* gd_peerinfo_from_dict creates a peerinfo object from details of peer with @@ -833,148 +824,153 @@ out: * failure. */ glusterd_peerinfo_t * -gd_peerinfo_from_dict (dict_t *dict, const char *prefix) +gd_peerinfo_from_dict(dict_t *dict, const char *prefix) { - int ret = -1; - xlator_t *this = NULL; - glusterd_conf_t *conf = NULL; - glusterd_peerinfo_t *new_peer = NULL; - char key[100] = {0,}; - char *uuid_str = NULL; - - this = THIS; - GF_VALIDATE_OR_GOTO ("glusterd", (this != NULL), out); - - conf = this->private; - GF_VALIDATE_OR_GOTO (this->name, (conf != NULL), out); - - GF_VALIDATE_OR_GOTO (this->name, (dict != NULL), out); - GF_VALIDATE_OR_GOTO (this->name, (prefix != NULL), out); - - new_peer = glusterd_peerinfo_new (GD_FRIEND_STATE_DEFAULT, NULL, NULL, - 0); - if (new_peer == NULL) { - ret = -1; - gf_msg (this->name, GF_LOG_ERROR, 0, - GD_MSG_PEERINFO_CREATE_FAIL, - "Could not create peerinfo " - "object"); - goto out; - } - - ret = snprintf (key, sizeof (key), "%s.uuid", prefix); - ret = dict_get_strn (dict, key, ret, &uuid_str); - if (ret) { - gf_msg (this->name, GF_LOG_ERROR, 0, - GD_MSG_DICT_GET_FAILED, "Key %s not present in " - "dictionary", key); - goto out; - } - gf_uuid_parse (uuid_str, new_peer->uuid); - - ret = gd_update_peerinfo_from_dict (new_peer, dict, prefix); + int ret = -1; + xlator_t *this = NULL; + glusterd_conf_t *conf = NULL; + glusterd_peerinfo_t *new_peer = NULL; + char key[100] = { + 0, + }; + char *uuid_str = NULL; + + this = THIS; + GF_VALIDATE_OR_GOTO("glusterd", (this != NULL), out); + + conf = this->private; + GF_VALIDATE_OR_GOTO(this->name, (conf != NULL), out); + + GF_VALIDATE_OR_GOTO(this->name, (dict != NULL), out); + GF_VALIDATE_OR_GOTO(this->name, (prefix != NULL), out); + + new_peer = glusterd_peerinfo_new(GD_FRIEND_STATE_DEFAULT, NULL, NULL, 0); + if (new_peer == NULL) { + ret = -1; + gf_msg(this->name, GF_LOG_ERROR, 0, GD_MSG_PEERINFO_CREATE_FAIL, + "Could not create peerinfo " + "object"); + goto out; + } + + ret = snprintf(key, sizeof(key), "%s.uuid", prefix); + ret = dict_get_strn(dict, key, ret, &uuid_str); + if (ret) { + gf_msg(this->name, GF_LOG_ERROR, 0, GD_MSG_DICT_GET_FAILED, + "Key %s not present in " + "dictionary", + key); + goto out; + } + gf_uuid_parse(uuid_str, new_peer->uuid); + + ret = gd_update_peerinfo_from_dict(new_peer, dict, prefix); out: - if ((ret != 0) && (new_peer != NULL)) { - glusterd_peerinfo_cleanup (new_peer); - new_peer = NULL; - } + if ((ret != 0) && (new_peer != NULL)) { + glusterd_peerinfo_cleanup(new_peer); + new_peer = NULL; + } - return new_peer; + return new_peer; } int -gd_add_peer_hostnames_to_dict (glusterd_peerinfo_t *peerinfo, dict_t *dict, - const char *prefix) +gd_add_peer_hostnames_to_dict(glusterd_peerinfo_t *peerinfo, dict_t *dict, + const char *prefix) { - int ret = -1; - xlator_t *this = NULL; - glusterd_conf_t *conf = NULL; - char key[256] = {0,}; - glusterd_peer_hostname_t *addr = NULL; - int count = 0; - - this = THIS; - GF_ASSERT (this != NULL); - - conf = this->private; - GF_VALIDATE_OR_GOTO (this->name, (conf != NULL), out); - - if (conf->op_version < GD_OP_VERSION_3_6_0) { - ret = 0; - goto out; - } + int ret = -1; + xlator_t *this = NULL; + glusterd_conf_t *conf = NULL; + char key[256] = { + 0, + }; + glusterd_peer_hostname_t *addr = NULL; + int count = 0; + + this = THIS; + GF_ASSERT(this != NULL); + + conf = this->private; + GF_VALIDATE_OR_GOTO(this->name, (conf != NULL), out); + + if (conf->op_version < GD_OP_VERSION_3_6_0) { + ret = 0; + goto out; + } - GF_VALIDATE_OR_GOTO (this->name, (peerinfo != NULL), out); - GF_VALIDATE_OR_GOTO (this->name, (dict != NULL), out); - GF_VALIDATE_OR_GOTO (this->name, (prefix != NULL), out); + GF_VALIDATE_OR_GOTO(this->name, (peerinfo != NULL), out); + GF_VALIDATE_OR_GOTO(this->name, (dict != NULL), out); + GF_VALIDATE_OR_GOTO(this->name, (prefix != NULL), out); - cds_list_for_each_entry (addr, &peerinfo->hostnames, hostname_list) { - snprintf (key, sizeof (key), "%s.hostname%d", prefix, count); - ret = dict_set_dynstr_with_alloc (dict, key, addr->hostname); - if (ret) - goto out; - count++; - } + cds_list_for_each_entry(addr, &peerinfo->hostnames, hostname_list) + { + snprintf(key, sizeof(key), "%s.hostname%d", prefix, count); + ret = dict_set_dynstr_with_alloc(dict, key, addr->hostname); + if (ret) + goto out; + count++; + } - ret = snprintf (key, sizeof (key), "%s.hostname_count", prefix); - ret = dict_set_int32n (dict, key, ret, count); + ret = snprintf(key, sizeof(key), "%s.hostname_count", prefix); + ret = dict_set_int32n(dict, key, ret, count); out: - return ret; + return ret; } int -gd_add_peer_detail_to_dict (glusterd_peerinfo_t *peerinfo, dict_t *friends, - int count) +gd_add_peer_detail_to_dict(glusterd_peerinfo_t *peerinfo, dict_t *friends, + int count) { - - int ret = -1; - char key[64] = {0, }; - int keylen; - char *peer_uuid_str = NULL; - - GF_ASSERT (peerinfo); - GF_ASSERT (friends); - - peer_uuid_str = gd_peer_uuid_str (peerinfo); - keylen = snprintf (key, sizeof (key), "friend%d.uuid", count); - ret = dict_set_strn (friends, key, keylen, peer_uuid_str); - if (ret) - goto out; - - keylen = snprintf (key, sizeof (key), "friend%d.hostname", count); - ret = dict_set_strn (friends, key, keylen, peerinfo->hostname); - if (ret) - goto out; - - keylen = snprintf (key, sizeof (key), "friend%d.port", count); - ret = dict_set_int32n (friends, key, keylen, peerinfo->port); - if (ret) - goto out; - - keylen = snprintf (key, sizeof (key), "friend%d.stateId", count); - ret = dict_set_int32n (friends, key, keylen, peerinfo->state.state); - if (ret) - goto out; - - keylen = snprintf (key, sizeof (key), "friend%d.state", count); - ret = dict_set_strn (friends, key, keylen, - glusterd_friend_sm_state_name_get(peerinfo->state.state)); - if (ret) - goto out; - - keylen = snprintf (key, sizeof (key), "friend%d.connected", count); - ret = dict_set_int32n (friends, key, keylen, - (int32_t)peerinfo->connected); - if (ret) - goto out; - - snprintf (key, sizeof (key), "friend%d", count); - ret = gd_add_peer_hostnames_to_dict (peerinfo, friends, key); + int ret = -1; + char key[64] = { + 0, + }; + int keylen; + char *peer_uuid_str = NULL; + + GF_ASSERT(peerinfo); + GF_ASSERT(friends); + + peer_uuid_str = gd_peer_uuid_str(peerinfo); + keylen = snprintf(key, sizeof(key), "friend%d.uuid", count); + ret = dict_set_strn(friends, key, keylen, peer_uuid_str); + if (ret) + goto out; + + keylen = snprintf(key, sizeof(key), "friend%d.hostname", count); + ret = dict_set_strn(friends, key, keylen, peerinfo->hostname); + if (ret) + goto out; + + keylen = snprintf(key, sizeof(key), "friend%d.port", count); + ret = dict_set_int32n(friends, key, keylen, peerinfo->port); + if (ret) + goto out; + + keylen = snprintf(key, sizeof(key), "friend%d.stateId", count); + ret = dict_set_int32n(friends, key, keylen, peerinfo->state.state); + if (ret) + goto out; + + keylen = snprintf(key, sizeof(key), "friend%d.state", count); + ret = dict_set_strn( + friends, key, keylen, + glusterd_friend_sm_state_name_get(peerinfo->state.state)); + if (ret) + goto out; + + keylen = snprintf(key, sizeof(key), "friend%d.connected", count); + ret = dict_set_int32n(friends, key, keylen, (int32_t)peerinfo->connected); + if (ret) + goto out; + + snprintf(key, sizeof(key), "friend%d", count); + ret = gd_add_peer_hostnames_to_dict(peerinfo, friends, key); out: - return ret; + return ret; } /* glusterd_peerinfo_find_by_generation searches for a peer which has the @@ -982,57 +978,57 @@ out: * object. Returns NULL otherwise. */ glusterd_peerinfo_t * -glusterd_peerinfo_find_by_generation (uint32_t generation) { - glusterd_conf_t *priv = NULL; - glusterd_peerinfo_t *entry = NULL; - glusterd_peerinfo_t *found = NULL; - xlator_t *this = NULL; - - this = THIS; - GF_ASSERT (this); - - priv = this->private; - - GF_ASSERT (priv); - - rcu_read_lock (); - cds_list_for_each_entry_rcu (entry, &priv->peers, uuid_list) { - if (entry->generation == generation) { - - gf_msg_debug (this->name, 0, - "Friend found... state: %s", - glusterd_friend_sm_state_name_get (entry->state.state)); - found = entry; /* Probably should be rcu_dereferenced */ - break; - } +glusterd_peerinfo_find_by_generation(uint32_t generation) +{ + glusterd_conf_t *priv = NULL; + glusterd_peerinfo_t *entry = NULL; + glusterd_peerinfo_t *found = NULL; + xlator_t *this = NULL; + + this = THIS; + GF_ASSERT(this); + + priv = this->private; + + GF_ASSERT(priv); + + rcu_read_lock(); + cds_list_for_each_entry_rcu(entry, &priv->peers, uuid_list) + { + if (entry->generation == generation) { + gf_msg_debug(this->name, 0, "Friend found... state: %s", + glusterd_friend_sm_state_name_get(entry->state.state)); + found = entry; /* Probably should be rcu_dereferenced */ + break; } - rcu_read_unlock (); - - if (!found) - gf_msg_debug (this->name, 0, - "Friend with generation: %"PRIu32", not found", - generation); - return found; + } + rcu_read_unlock(); + + if (!found) + gf_msg_debug(this->name, 0, + "Friend with generation: %" PRIu32 ", not found", + generation); + return found; } int -glusterd_get_peers_count () { - int count = 0; - xlator_t *this = NULL; - glusterd_conf_t *conf = NULL; - glusterd_peerinfo_t *peer = NULL; +glusterd_get_peers_count() +{ + int count = 0; + xlator_t *this = NULL; + glusterd_conf_t *conf = NULL; + glusterd_peerinfo_t *peer = NULL; - this = THIS; - GF_VALIDATE_OR_GOTO ("glusterd", this, out); + this = THIS; + GF_VALIDATE_OR_GOTO("glusterd", this, out); - conf = this->private; - GF_VALIDATE_OR_GOTO (this->name, conf, out); + conf = this->private; + GF_VALIDATE_OR_GOTO(this->name, conf, out); - rcu_read_lock (); - cds_list_for_each_entry_rcu (peer, &conf->peers, uuid_list) - count++; - rcu_read_unlock (); + rcu_read_lock(); + cds_list_for_each_entry_rcu(peer, &conf->peers, uuid_list) count++; + rcu_read_unlock(); out: - return count; + return count; } -- cgit