exec_local_req_async() is called by worker threads, so it must use deferred_register_event() instead of register_event(). Signed-off-by: Hitoshi Mitake <mitake.hitoshi at lab.ntt.co.jp> --- sheep/request.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sheep/request.c b/sheep/request.c index 9f3f110..318aeb5 100644 --- a/sheep/request.c +++ b/sheep/request.c @@ -637,7 +637,8 @@ worker_fn int exec_local_req_async(struct sd_req *rq, void *data, uatomic_inc(&iocb->count); req->iocb = iocb; - register_event(req->local_req_efd, local_req_async_handler, req); + deferred_register_event(req->local_req_efd, local_req_async_handler, + req); submit_local_request(req); return SD_RES_SUCCESS; -- 1.8.3.2 |