From 4d9faf7c6b3d822ff9f7efd5b7751872b2ffcf0f Mon Sep 17 00:00:00 2001 From: Mateusz Kozlowski Date: Fri, 12 Jul 2019 13:32:44 +0200 Subject: [PATCH] lib/ftl: Add check if device is halted during reloc It's possible there's a delay between spdk_ftl_dev_free setting dev->halt and sending message to core thread which would set reloc->halt. This patch should bridge this gap and prevent potential additional/unneeded relocations from happening. Signed-off-by: Mateusz Kozlowski Change-Id: I3d69fe86900c9233fadd8e3795accb36b1c01791 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/461598 Tested-by: SPDK CI Jenkins Reviewed-by: Konrad Sztyber Reviewed-by: Darek Stojaczyk Reviewed-by: Wojciech Malikowski Reviewed-by: Jim Harris Reviewed-by: Ben Walker --- lib/ftl/ftl_init.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ftl/ftl_init.c b/lib/ftl/ftl_init.c index 6c73cc813..d3b18a148 100644 --- a/lib/ftl/ftl_init.c +++ b/lib/ftl/ftl_init.c @@ -1295,6 +1295,7 @@ static void ftl_add_halt_poller(void *ctx) { struct spdk_ftl_dev *dev = ctx; + dev->halt = 1; _ftl_halt_defrag(dev); @@ -1313,7 +1314,6 @@ _spdk_ftl_dev_free(struct spdk_ftl_dev *dev, spdk_ftl_init_fn cb_fn, void *cb_ar dev->fini_ctx.cb_fn = cb_fn; dev->fini_ctx.cb_arg = cb_arg; dev->fini_ctx.thread = thread; - dev->halt = 1; ftl_rwb_disable_interleaving(dev->rwb);