From 0598e484d7b0e49626a36361da54ecbd493427b4 Mon Sep 17 00:00:00 2001 From: Tomasz Zawadzki Date: Tue, 25 May 2021 04:12:59 -0400 Subject: [PATCH] lib/event: set thread for each event executed Whenever an event executes, it might change the currently set thread or reset it to NULL. To prevent it from affecting other events, set the current thread each time an event executes. Signed-off-by: Tomasz Zawadzki Change-Id: I6f1e7f8b7acab25353b4782058e87a9e01aab2c8 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/8045 Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins Reviewed-by: Shuhei Matsumoto Reviewed-by: Ben Walker --- lib/event/reactor.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/event/reactor.c b/lib/event/reactor.c index b890f6e24..ddfd6d17b 100644 --- a/lib/event/reactor.c +++ b/lib/event/reactor.c @@ -605,17 +605,15 @@ event_queue_run_batch(struct spdk_reactor *reactor) thread = NULL; } - spdk_set_thread(thread); - for (i = 0; i < count; i++) { struct spdk_event *event = events[i]; assert(event != NULL); + spdk_set_thread(thread); event->fn(event->arg1, event->arg2); + spdk_set_thread(NULL); } - spdk_set_thread(NULL); - spdk_mempool_put_bulk(g_spdk_event_mempool, events, count); return count;