From db482f3e1cd7bb40305a080f1de6ba55c0d79506 Mon Sep 17 00:00:00 2001 From: Christine Caulfield Date: Tue, 6 Apr 2010 15:29:30 +0000 Subject: [PATCH] Fix a thread race in clvmd that could cause lockups on very busy systems --- WHATS_NEW | 1 + daemons/clvmd/clvmd.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/WHATS_NEW b/WHATS_NEW index d1161b2da..75e3221e0 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.63 - ================================ + Fix another thread race in clvmd. Refactor management of vg->pvs list. Fix lcov rules and generate better coverage report. Improve vg_validate to detect some loops in lists. diff --git a/daemons/clvmd/clvmd.c b/daemons/clvmd/clvmd.c index fb1e7626f..d0ea1422d 100644 --- a/daemons/clvmd/clvmd.c +++ b/daemons/clvmd/clvmd.c @@ -1516,7 +1516,8 @@ static __attribute__ ((noreturn)) void *pre_and_post_thread(void *arg) DEBUGLOG("Waiting to do post command - state = %d\n", client->bits.localsock.state); - if (client->bits.localsock.state != POST_COMMAND) { + if (client->bits.localsock.state != POST_COMMAND && + !client->bits.localsock.finished) { pthread_cond_wait(&client->bits.localsock.cond, &client->bits.localsock.mutex); } -- 2.43.5