From 4be37a57f4071aa6582858db3f4e2b47a33f3fc5 Mon Sep 17 00:00:00 2001 From: Wojciech Malikowski Date: Tue, 11 Jun 2019 09:40:46 -0400 Subject: [PATCH] lib/ftl: Consume ANM event on core thread Send ANM event to core thread for further processing. This will remove a need of locking in relocate module when ANM event occur. Change-Id: I0efb1f1b8c96c107cda5fe78e8ee5672cde39f11 Signed-off-by: Wojciech Malikowski Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/457611 Tested-by: SPDK CI Jenkins Reviewed-by: Mateusz Kozlowski Reviewed-by: Konrad Sztyber Reviewed-by: Darek Stojaczyk Reviewed-by: Ben Walker Reviewed-by: Shuhei Matsumoto --- lib/ftl/ftl_core.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/ftl/ftl_core.c b/lib/ftl/ftl_core.c index 38fd9093c..2b143ff84 100644 --- a/lib/ftl/ftl_core.c +++ b/lib/ftl/ftl_core.c @@ -1894,9 +1894,22 @@ spdk_ftl_flush(struct spdk_ftl_dev *dev, spdk_ftl_fn cb_fn, void *cb_arg) return 0; } +static void +_ftl_process_anm_event(void *ctx) +{ + ftl_process_anm_event((struct ftl_anm_event *)ctx); +} + void ftl_process_anm_event(struct ftl_anm_event *event) { + struct spdk_ftl_dev *dev = event->dev; + + if (!ftl_check_core_thread(dev)) { + spdk_thread_send_msg(ftl_get_core_thread(dev), _ftl_process_anm_event, event); + return; + } + SPDK_DEBUGLOG(SPDK_LOG_FTL_CORE, "Unconsumed ANM received for dev: %p...\n", event->dev); ftl_anm_event_complete(event); }