]> sourceware.org Git - lvm2.git/commitdiff
lvmetad: Fix a possible deadlock.
authorPetr Rockai <prockai@redhat.com>
Sun, 16 Dec 2012 23:39:00 +0000 (00:39 +0100)
committerPetr Rockai <prockai@redhat.com>
Sun, 16 Dec 2012 23:47:55 +0000 (00:47 +0100)
If an update and a query were running in parallel, there was a slim but non-zero
chance of a deadlock due to (unnecessary) mutex nesting.

daemons/lvmetad/lvmetad-core.c

index 4e02662163ccd3113bdb5b8aee0ab73618bd9680..674ddea874747f407a7591d118d435bc999aff9a 100644 (file)
@@ -671,8 +671,8 @@ static int update_metadata(lvmetad_state *s, const char *name, const char *_vgid
 
        lock_vgid_to_metadata(s);
        old = dm_hash_lookup(s->vgid_to_metadata, _vgid);
-       lock_vg(s, _vgid);
        unlock_vgid_to_metadata(s);
+       lock_vg(s, _vgid);
 
        seq = dm_config_find_int(metadata, "metadata/seqno", -1);
 
This page took 0.039764 seconds and 5 git commands to generate.