Commit 3ed91561 authored by Dariusz Stojaczyk's avatar Dariusz Stojaczyk Committed by Daniel Verkamp
Browse files

io_channel: always set dev->unregister_thread under a mutex



Fixes #278

Change-Id: I5689c3c315feea221335ae4b0218b5e64410a3aa
Signed-off-by: default avatarDariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/408194


Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
parent a7aa9d57
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -356,6 +356,9 @@ spdk_io_device_unregister(void *io_device, spdk_io_device_unregister_cb unregist
{
	struct io_device *dev;
	uint32_t refcnt;
	struct spdk_thread *thread;

	thread = spdk_get_thread();

	pthread_mutex_lock(&g_devlist_mutex);
	TAILQ_FOREACH(dev, &g_io_devices, tailq) {
@@ -380,8 +383,8 @@ spdk_io_device_unregister(void *io_device, spdk_io_device_unregister_cb unregist
	dev->unregistered = true;
	TAILQ_REMOVE(&g_io_devices, dev, tailq);
	refcnt = dev->refcnt;
	dev->unregister_thread = thread;
	pthread_mutex_unlock(&g_devlist_mutex);
	dev->unregister_thread = spdk_get_thread();

	if (refcnt > 0) {
		/* defer deletion */