[sheepdog] [PATCH 12/14] sheep: make node_to_str and lnode_to_str thread-safe

MORITA Kazutaka morita.kazutaka at gmail.com
Sat Aug 10 17:58:53 CEST 2013


From: MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp>

Signed-off-by: MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp>
---
 include/sheep.h       |    4 ++--
 sheep/cluster/local.c |    6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/include/sheep.h b/include/sheep.h
index 219add9..7a98ce7 100644
--- a/include/sheep.h
+++ b/include/sheep.h
@@ -315,9 +315,9 @@ static inline int nodes_to_vnodes(struct sd_node *nodes, int nr,
 
 #define MAX_NODE_STR_LEN 256
 
-static inline char *node_to_str(const struct sd_node *id)
+static inline const char *node_to_str(const struct sd_node *id)
 {
-	static char str[MAX_NODE_STR_LEN];
+	static __thread char str[MAX_NODE_STR_LEN];
 	int af = AF_INET6;
 	const uint8_t *addr = id->nid.addr;
 
diff --git a/sheep/cluster/local.c b/sheep/cluster/local.c
index 4350ca2..b4adf87 100644
--- a/sheep/cluster/local.c
+++ b/sheep/cluster/local.c
@@ -40,11 +40,11 @@ struct local_node {
 	bool gateway;
 };
 
-static char *lnode_to_str(struct local_node *lnode)
+static const char *lnode_to_str(struct local_node *lnode)
 {
-	char *s = node_to_str(&lnode->node);
+	static __thread char s[MAX_NODE_STR_LEN + 32];
 
-	snprintf(s + strlen(s), MAX_NODE_STR_LEN - strlen(s), " pid:%d",
+	snprintf(s, sizeof(s), "%s pid:%d", node_to_str(&lnode->node),
 		 lnode->pid);
 
 	return s;
-- 
1.7.9.5



More information about the sheepdog mailing list