1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-22 17:35:59 +03:00
lvm2/daemons/clvmd
Petr Rockai 6472c7e11f Maintain memlock balance in clvmd.
When a mirror is being downconverted in a cluster, a series of suspends and
resumes is executed.

With the change to using UUIDs in dev_manager instead of names, the behaviour
has changed with regards to including an _mlog in the deptree of a logical
volume. In the old (pre-UUID-enabled) code, the _mlog would appear in a deptree
of any volume purely based on a name match: a linear volume foo would include
foo_mlog in its dependencies if that happened to exist. This behaviour was
fixed and the mlog is now only included for mirrors.

By a coincidence, this mlog bug had been hiding a different bug in clvmd. When
a mirror is being dismantled (and converted to a linear volume), it is first
suspended as a whole, then later resumed in parts. Nevertheless, the overall
memlock balance is maintained in this operation. The problem kicks in, because
even though the mirror log was suspended as part of the mirror, when the
dismantled mirror is resumed again, it is no longer a mirror and therefore the
mirror log stays suspended. This would not be a problem in itself, since
_delete_lv (from metadata/mirror.c) is called on it subsequently, which does an
activate/deactivate cycle and removes the LV. The activate/deactivate cycle
correctly prompts clvmd to resume the device: however, in doing this, it will
issue an unpaired resume operation (the suspend that caused the mirror log to
be suspended is paired with resuming the dismantled mirror later). We have
concluded that the path in clvmd should never affect memlock_count, since there
should never be an unmatched explicit suspend preceding this resume.
2010-06-30 21:40:27 +00:00
..
clvm.h Add -S command to clvmd, so it can restart itself and still 2010-04-20 14:07:37 +00:00
clvmd-cman.c Various cleanups following recent commits. 2010-06-21 15:56:57 +00:00
clvmd-command.c Various cleanups following recent commits. 2010-06-21 15:56:57 +00:00
clvmd-common.h Various cleanups following recent commits. 2010-06-21 15:56:57 +00:00
clvmd-comms.h Avoid duplicate definitions. 2010-03-23 14:35:08 +00:00
clvmd-corosync.c Various cleanups following recent commits. 2010-06-21 15:56:57 +00:00
clvmd-gulm.c Various cleanups following recent commits. 2010-06-21 15:56:57 +00:00
clvmd-gulm.h Clean up cluster lock mode and flags definition. 2010-06-17 12:48:54 +00:00
clvmd-openais.c Various cleanups following recent commits. 2010-06-21 15:56:57 +00:00
clvmd-singlenode.c Various cleanups following recent commits. 2010-06-21 15:56:57 +00:00
clvmd.c Various cleanups following recent commits. 2010-06-21 15:56:57 +00:00
clvmd.h Allow clvmd debug to be turned on in a running daemon using clvmd -d 2007-08-17 11:51:23 +00:00
lvm-functions.c Maintain memlock balance in clvmd. 2010-06-30 21:40:27 +00:00
lvm-functions.h Add -S command to clvmd, so it can restart itself and still 2010-04-20 14:07:37 +00:00
Makefile.in INSTALL rules updates 2010-04-09 21:42:48 +00:00
refresh_clvmd.c Various cleanups following recent commits. 2010-06-21 15:56:57 +00:00
refresh_clvmd.h Add -S command to clvmd, so it can restart itself and still 2010-04-20 14:07:37 +00:00
tcp-comms.c Various cleanups following recent commits. 2010-06-21 15:56:57 +00:00
tcp-comms.h Fix clvmd if compiled with gulm support. (2.02.26) 2007-07-24 15:35:11 +00:00