summaryrefslogtreecommitdiffstats
path: root/daemons/clvmd/lvm-functions.c
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2011-01-10 14:02:30 +0000
committerZdenek Kabelac <zkabelac@redhat.com>2011-01-10 14:02:30 +0000
commit937a21f0d23edbc47fb618a86339cd35006e801f (patch)
treec23ee8a28a17d968cfa32f50835af69fcaa0f19e /daemons/clvmd/lvm-functions.c
parentf6fdfd56e408e81a8f035beba92fa59f2986b453 (diff)
downloadlvm2-937a21f0d23edbc47fb618a86339cd35006e801f.tar.gz
lvm2-937a21f0d23edbc47fb618a86339cd35006e801f.tar.xz
lvm2-937a21f0d23edbc47fb618a86339cd35006e801f.zip
Speedup consequent activation calls
Stop calling fs_unlock() from lv_de/activate(). Start using internal lvm fs cookie for dm_tree. Stop directly calling dm_udev_wait() and dm_tree_set/get_cookie() from activate code - it's now called through fs_unlock() function. Add lvm_do_fs_unlock() Call fs_unlock() when unlocking vg where implicit unlock solves the problem also for cluster - thus no extra command for clustering environment is required - only lvm_do_fs_unlock() function is added to call lvm's fs_unlock() while holding lvm_lock mutex in clvmd. Add fs_unlock() also to set_lv() so the command waits until devices are ready for regular open (i.e. wiping its begining). Move fs_unlock() prototype to activation.h to keep fs.h private in lib/activate dir and not expose other functions from this header.
Diffstat (limited to 'daemons/clvmd/lvm-functions.c')
-rw-r--r--daemons/clvmd/lvm-functions.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/daemons/clvmd/lvm-functions.c b/daemons/clvmd/lvm-functions.c
index 214f2295..cba6f445 100644
--- a/daemons/clvmd/lvm-functions.c
+++ b/daemons/clvmd/lvm-functions.c
@@ -894,6 +894,13 @@ struct dm_hash_node *get_next_excl_lock(struct dm_hash_node *v, char **name)
return v;
}
+void lvm_do_fs_unlock(void)
+{
+ pthread_mutex_lock(&lvm_lock);
+ fs_unlock();
+ pthread_mutex_unlock(&lvm_lock);
+}
+
/* Called to initialise the LVM context of the daemon */
int init_clvm(int using_gulm, char **argv)
{