Commit 640547c5 authored by Changpeng Liu's avatar Changpeng Liu Committed by Darek Stojaczyk
Browse files

ftl: free allocated IO queue pair before releasing the controller



Intermittent FTL test failure (ASAN) #717 reported an error, in
ftl_halt_poller() call, ftl_anm_unregister_device() will release
controller first, while in ftl_dev_free_sync() the IO queue pair
will be released again.

Change-Id: Ifac2aa68e66ee5f41eba80c11c61d9dc91ec3408
Signed-off-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/448524


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarWojciech Malikowski <wojciech.malikowski@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarDarek Stojaczyk <dariusz.stojaczyk@intel.com>
parent ef9a7d5c
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -945,9 +945,6 @@ ftl_dev_free_sync(struct spdk_ftl_dev *dev)
	}
	pthread_mutex_unlock(&g_ftl_queue_lock);

	ftl_dev_free_thread(dev, &dev->read_thread);
	ftl_dev_free_thread(dev, &dev->core_thread);

	assert(LIST_EMPTY(&dev->wptr_list));

	ftl_dev_dump_bands(dev);
@@ -985,6 +982,9 @@ ftl_halt_poller(void *ctx)
	if (!dev->core_thread.poller && !dev->read_thread.poller) {
		spdk_poller_unregister(&dev->halt_poller);

		ftl_dev_free_thread(dev, &dev->read_thread);
		ftl_dev_free_thread(dev, &dev->core_thread);

		ftl_anm_unregister_device(dev);
		ftl_dev_free_sync(dev);