From 3436a646b5a2fc181056fa44989e17ff1f6b083c Mon Sep 17 00:00:00 2001 From: Thomas Guillem Date: Sat, 9 May 2015 15:59:31 +0200 Subject: storage/nfs: fix deadlock when connecting The Connect method can be called between Schedule and lock. In that case, when locked, the state is already set to CONNECTING of READY and the condition won't be signaled anymore. --- src/storage/plugins/NfsStorage.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/storage/plugins') diff --git a/src/storage/plugins/NfsStorage.cxx b/src/storage/plugins/NfsStorage.cxx index 324b40b6f..a1f079e2c 100644 --- a/src/storage/plugins/NfsStorage.cxx +++ b/src/storage/plugins/NfsStorage.cxx @@ -177,6 +177,8 @@ private: mutex.unlock(); DeferredMonitor::Schedule(); mutex.lock(); + if (state == State::INITIAL) + cond.wait(mutex); break; case State::CONNECTING: @@ -188,8 +190,6 @@ private: error.Set(last_error); return false; } - - cond.wait(mutex); } } -- cgit v1.2.3