summaryrefslogtreecommitdiff
path: root/daemons/clvmd
diff options
context:
space:
mode:
Diffstat (limited to 'daemons/clvmd')
-rw-r--r--daemons/clvmd/clvmd.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/daemons/clvmd/clvmd.c b/daemons/clvmd/clvmd.c
index b70543b14..ec24be9b9 100644
--- a/daemons/clvmd/clvmd.c
+++ b/daemons/clvmd/clvmd.c
@@ -812,16 +812,20 @@ static void request_timed_out(struct local_client *client)
DEBUGLOG("Request timed-out. padding\n");
clops->cluster_do_node_callback(client, timedout_callback);
- if (client->bits.localsock.num_replies !=
- client->bits.localsock.expected_replies) {
+ if (!client->bits.localsock.threadid)
+ return;
+
+ pthread_mutex_lock(&client->bits.localsock.mutex);
+
+ if (!client->bits.localsock.finished &&
+ (client->bits.localsock.num_replies !=
+ client->bits.localsock.expected_replies)) {
/* Post-process the command */
- if (client->bits.localsock.threadid) {
- pthread_mutex_lock(&client->bits.localsock.mutex);
- client->bits.localsock.state = POST_COMMAND;
- pthread_cond_signal(&client->bits.localsock.cond);
- pthread_mutex_unlock(&client->bits.localsock.mutex);
- }
+ client->bits.localsock.state = POST_COMMAND;
+ pthread_cond_signal(&client->bits.localsock.cond);
}
+
+ pthread_mutex_unlock(&client->bits.localsock.mutex);
}
/* This is where the real work happens */