[sheepdog] [PATCH 09/11] sheep: assert when exec_req are called in the main thread

MORITA Kazutaka morita.kazutaka at lab.ntt.co.jp
Tue Apr 16 09:24:37 CEST 2013


Calling these functions in the main thread lead to dead-lock and must
be avoided.

Signed-off-by: MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp>
---
 sheep/request.c      | 2 ++
 sheep/sockfd_cache.c | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/sheep/request.c b/sheep/request.c
index c2f1d68..85d62c9 100644
--- a/sheep/request.c
+++ b/sheep/request.c
@@ -451,6 +451,8 @@ int exec_local_req(struct sd_req *rq, void *data)
 	eventfd_t value = 1;
 	int ret;
 
+	assert(is_worker_thread());
+
 	req = alloc_local_request(data, rq->data_length);
 	req->rq = *rq;
 	req->local_req_efd = eventfd(0, 0);
diff --git a/sheep/sockfd_cache.c b/sheep/sockfd_cache.c
index 1e0d6cf..217472d 100644
--- a/sheep/sockfd_cache.c
+++ b/sheep/sockfd_cache.c
@@ -509,6 +509,8 @@ int sheep_exec_req(const struct node_id *nid, struct sd_req *hdr, void *buf)
 	struct sockfd *sfd;
 	int ret;
 
+	assert(is_worker_thread());
+
 	sfd = sheep_get_sockfd(nid);
 	if (!sfd)
 		return SD_RES_NETWORK_ERROR;
-- 
1.8.1.3.566.gaa39828




More information about the sheepdog mailing list