Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP5:GA
lvm2.5953
bug-1063051_0004-clvmd-add-debuglog-mutex.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File bug-1063051_0004-clvmd-add-debuglog-mutex.patch of Package lvm2.5953
From a85fa53e9b00e7a28c0bebb71ef8c4792cf96189 Mon Sep 17 00:00:00 2001 From: Alasdair G Kergon <agk@redhat.com> Date: Sat, 1 Jul 2017 00:58:39 +0100 Subject: [PATCH 05/10] clvmd: add debuglog mutex Log messages issued by different threads occasionally got intertwined. (cherry picked from commit 17ed25409136162d091809d412596a45e0a30fd4) --- daemons/clvmd/clvmd.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/daemons/clvmd/clvmd.c b/daemons/clvmd/clvmd.c index 923fa4b..a9d33c4 100644 --- a/daemons/clvmd/clvmd.c +++ b/daemons/clvmd/clvmd.c @@ -92,6 +92,7 @@ static const size_t STACK_SIZE = 128 * 1024; static pthread_attr_t stack_attr; static int lvm_thread_exit = 0; static pthread_mutex_t lvm_thread_mutex; +static pthread_mutex_t _debuglog_mutex; static pthread_cond_t lvm_thread_cond; static pthread_barrier_t lvm_start_barrier; static struct dm_list lvm_cmd_head; @@ -218,14 +219,17 @@ void debuglog(const char *fmt, ...) switch (clvmd_get_debug()) { case DEBUG_STDERR: + pthread_mutex_lock(&_debuglog_mutex); va_start(ap,fmt); time(&P); fprintf(stderr, "CLVMD[%x]: %.15s ", (int)pthread_self(), ctime_r(&P, buf_ctime) + 4); vfprintf(stderr, fmt, ap); va_end(ap); fflush(stderr); + pthread_mutex_unlock(&_debuglog_mutex); break; case DEBUG_SYSLOG: + pthread_mutex_lock(&_debuglog_mutex); if (!syslog_init) { openlog("clvmd", LOG_PID, LOG_DAEMON); syslog_init = 1; @@ -234,6 +238,7 @@ void debuglog(const char *fmt, ...) va_start(ap,fmt); vsyslog(LOG_DEBUG, fmt, ap); va_end(ap); + pthread_mutex_unlock(&_debuglog_mutex); break; case DEBUG_OFF: break; @@ -522,6 +527,7 @@ int main(int argc, char *argv[]) exit(1); } pthread_mutex_init(&lvm_thread_mutex, NULL); + pthread_mutex_init(&_debuglog_mutex, NULL); pthread_cond_init(&lvm_thread_cond, NULL); pthread_barrier_init(&lvm_start_barrier, NULL, 2); init_lvhash(); -- 2.10.2
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor