public inbox for lvm2-cvs@sourceware.org help / color / mirror / Atom feed
From: zkabelac@sourceware.org To: lvm-devel@redhat.com, lvm2-cvs@sourceware.org Subject: LVM2 ./WHATS_NEW daemons/clvmd/clvmd.c Date: Tue, 11 Oct 2011 09:26:00 -0000 [thread overview] Message-ID: <20111011092604.10366.qmail@sourceware.org> (raw) CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: zkabelac@sourceware.org 2011-10-11 09:26:04 Modified files: . : WHATS_NEW daemons/clvmd : clvmd.c Log message: Use barrier instead of mutex Barrier is supposed to be used in situation like this and replace tricky mutex usage, where mutex has been unlocked by a different thread than the locking thread. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.2158&r2=1.2159 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/daemons/clvmd/clvmd.c.diff?cvsroot=lvm2&r1=1.112&r2=1.113 --- LVM2/WHATS_NEW 2011/10/11 09:20:17 1.2158 +++ LVM2/WHATS_NEW 2011/10/11 09:26:04 1.2159 @@ -1,5 +1,6 @@ Version 2.02.89 - ================================== + Use pthread_barrier to synchronize clvmd threads at startup. Limit clvmd's thread size to 128KiB. Reduce default preallocated stack size to 64KiB. Add check for access through NULL pointer when refresh_filter() fails. --- LVM2/daemons/clvmd/clvmd.c 2011/10/11 09:23:48 1.112 +++ LVM2/daemons/clvmd/clvmd.c 2011/10/11 09:26:04 1.113 @@ -89,7 +89,7 @@ static pthread_attr_t stack_attr; static pthread_mutex_t lvm_thread_mutex; static pthread_cond_t lvm_thread_cond; -static pthread_mutex_t lvm_start_mutex; +static pthread_barrier_t lvm_start_barrier; static struct dm_list lvm_cmd_head; static volatile sig_atomic_t quit = 0; static volatile sig_atomic_t reread_config = 0; @@ -505,7 +505,7 @@ } pthread_mutex_init(&lvm_thread_mutex, NULL); pthread_cond_init(&lvm_thread_cond, NULL); - pthread_mutex_init(&lvm_start_mutex, NULL); + pthread_barrier_init(&lvm_start_barrier, NULL, 2); init_lvhash(); /* Start the cluster interface */ @@ -584,9 +584,11 @@ DEBUGLOG("starting LVM thread\n"); /* Don't let anyone else to do work until we are started */ - pthread_mutex_lock(&lvm_start_mutex); pthread_create(&lvm_thread, &stack_attr, lvm_thread_fn, &lvm_params); + /* Don't start until the LVM thread is ready */ + pthread_barrier_wait(&lvm_start_barrier); + /* Tell the rest of the cluster our version number */ if (clops->cluster_init_completed) clops->cluster_init_completed(); @@ -1633,11 +1635,6 @@ DEBUGLOG("in sub thread: client = %p\n", client); pthread_mutex_lock(&client->bits.localsock.mutex); - /* Don't start until the LVM thread is ready */ - pthread_mutex_lock(&lvm_start_mutex); - pthread_mutex_unlock(&lvm_start_mutex); - DEBUGLOG("Sub thread ready for work.\n"); - /* Ignore SIGUSR1 (handled by master process) but enable SIGUSR2 (kills subthreads) */ sigemptyset(&ss); @@ -2004,7 +2001,8 @@ init_clvm(lvm_params->excl_uuid); /* Allow others to get moving */ - pthread_mutex_unlock(&lvm_start_mutex); + pthread_barrier_wait(&lvm_start_barrier); + DEBUGLOG("Sub thread ready for work.\n"); /* Now wait for some actual work */ while (!quit) {
next reply other threads:[~2011-10-11 9:26 UTC|newest] Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top 2011-10-11 9:26 zkabelac [this message] -- strict thread matches above, loose matches on Subject: below -- 2012-02-28 11:06 zkabelac 2012-02-28 9:58 zkabelac 2012-02-28 9:53 zkabelac 2012-02-27 11:26 zkabelac 2012-02-27 9:58 zkabelac 2011-10-11 9:54 zkabelac 2011-09-16 14:40 mbroz 2011-08-11 12:57 mbroz 2011-06-28 13:42 zkabelac 2011-03-30 12:36 zkabelac 2011-03-08 22:48 zkabelac 2011-03-08 13:27 mbroz 2010-12-13 10:49 prajnoha 2010-12-01 12:41 zkabelac 2010-12-01 10:46 zkabelac 2010-04-06 15:29 ccaulfield 2010-02-02 8:54 ccaulfield 2009-10-12 8:33 ccaulfield 2009-09-01 9:48 ccaulfield 2009-08-13 10:39 ccaulfield 2009-03-24 11:49 ccaulfield 2008-11-21 13:48 ccaulfield 2008-06-13 7:44 ccaulfield 2008-05-09 9:59 ccaulfield 2008-03-28 12:58 ccaulfield 2008-03-17 9:37 ccaulfield 2008-02-15 14:12 meyering 2007-11-15 10:16 pcaulfield 2007-03-29 13:59 pcaulfield 2006-12-11 13:48 pcaulfield 2006-11-30 9:44 pcaulfield 2005-04-01 13:01 pcaulfield 2005-02-08 9:05 pcaulfield 2005-01-24 15:31 pcaulfield 2005-01-05 14:41 pcaulfield 2004-10-06 12:36 pcaulfield 2004-10-06 10:12 pcaulfield
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20111011092604.10366.qmail@sourceware.org \ --to=zkabelac@sourceware.org \ --cc=lvm-devel@redhat.com \ --cc=lvm2-cvs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).