mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
f2eda36cfa
Centralise editing of the client list into _add_client() and _del_client(). Introduce _local_client_count to track the size of the list for debugging purposes. Simplify and standardise the various ways the list gets walked. While processing one element of the list in main_loop(), cleanup_zombie() may be called and remove a different element, so make sure main_loop() refreshes its list state on return. Prior to this patch, the list edits for clients disappearing could race against the list edits for new clients connecting and corrupt the list and cause a variety of segfaults. An easy way to trigger such failures was by repeatedly running shell commands such as: lvs &; lvs &; lvs &;...;killall -9 lvs; lvs &; lvs &;... Situations that occasionally lead to the failures can be spotted by looking for 'EOF' with 'inprogress=1' in the clvmd debug logs. |
||
---|---|---|
.. | ||
clvmd | ||
cmirrord | ||
dmeventd | ||
dmfilemapd | ||
lvmdbusd | ||
lvmetad | ||
lvmlockd | ||
lvmpolld | ||
Makefile.in |