summaryrefslogtreecommitdiffstats
path: root/xlators/mgmt/glusterd/src/glusterd.h
diff options
context:
space:
mode:
authorAtin Mukherjee <amukherj@redhat.com>2014-09-04 21:47:50 +0530
committerKaushal M <kaushal@redhat.com>2014-10-15 03:02:40 -0700
commit6c13daed1d601df76cfd1973d3ce800afa877fd2 (patch)
treedd739590b1b07d49c04f1da658b779b2f3e81922 /xlators/mgmt/glusterd/src/glusterd.h
parent7e8eefca2caaaa61e1b31b747384f660c595d9c9 (diff)
glusterd: statedump support
Although glusterd currently has statedump support but it doesn't dump its context information. Implementing glusterd_dump_priv function to export per-node glusterd information would be useful for debugging bugs. Once implemented, we could enhance sos-report to fetch this information. This would potentially reduce our time to root cause and data needed for debugability can be dumped gradually. Following is the main items of the dump list targeted in this patch : * Supported max/min op-version and current op-version * Information about peer list * Information about peer list involved while a transaction is going on (xaction_peers) * option dictionary in glusterd_conf_t * mgmt_v3_lock in glusterd_conf_t * List of connected clients * uuid of glusterd * A section of rpc related information like live connections and their statistics There are couple of issues which were found during implementation and testing phase: - xaction_peers of glusterd_conf_t was not initialized in init because of which traversing through this list head was crashing when there was no active transaction - gf_free was not setting the typestr to NULL if the the alloc count becomes 0 for a mem-type earlier allocated. Change-Id: Ic9bce2d57682fc1771cd2bc6af0b7316ecbc761f BUG: 1139682 Signed-off-by: Atin Mukherjee <amukherj@redhat.com> Reviewed-on: http://review.gluster.org/8665 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Kaushal M <kaushal@redhat.com>
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd.h')
-rw-r--r--xlators/mgmt/glusterd/src/glusterd.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd.h b/xlators/mgmt/glusterd/src/glusterd.h
index 846603585b1..64fe63933a5 100644
--- a/xlators/mgmt/glusterd/src/glusterd.h
+++ b/xlators/mgmt/glusterd/src/glusterd.h
@@ -624,6 +624,28 @@ typedef ssize_t (*gd_serialize_t) (struct iovec outmsg, void *args);
*snap_volname_ptr = '\0'; \
} while (0)
+#define GLUSTERD_DUMP_PEERS(head, member, xpeers) do { \
+ glusterd_peerinfo_t *_peerinfo = NULL; \
+ char subkey[50] = {0,}; \
+ int index = 1; \
+ char key[GF_DUMP_MAX_BUF_LEN] = {0,}; \
+ \
+ if (!xpeers) \
+ snprintf (key, sizeof (key), "glusterd.peer"); \
+ else \
+ snprintf (key, sizeof (key), \
+ "glusterd.xaction_peer"); \
+ \
+ list_for_each_entry (_peerinfo, head, member) { \
+ glusterd_dump_peer (_peerinfo, key, index, xpeers); \
+ if (!xpeers) \
+ glusterd_dump_peer_rpcstat (_peerinfo, key, \
+ index); \
+ index++; \
+ } \
+ \
+ } while (0)
+
int glusterd_uuid_init();
int glusterd_uuid_generate_save ();
@@ -1057,4 +1079,12 @@ glusterd_add_brick_status_to_dict (dict_t *dict, glusterd_volinfo_t *volinfo,
int32_t
glusterd_handle_snap_limit (dict_t *dict, dict_t *rsp_dict);
+void
+glusterd_dump_peer (glusterd_peerinfo_t *peerinfo, char *key, int index,
+ gf_boolean_t xpeers);
+
+void
+glusterd_dump_peer_rpcstat (glusterd_peerinfo_t *peerinfo, char *key,
+ int index);
+
#endif