Red Hat Bugzilla – Bug 197268
liblvm2cmd not working properly - causing kill of dmeventd during cmirror fault handling
Last modified: 2007-11-30 17:07:26 EST
Single machine mirroring is unaffected by this bug.
When a device fails in a mirror, dmeventd is called to handle the event. This
in turn calls the mirror specific DSO. The DSO determines that a device has
failed and calls 'vgreduce --removemissing <vg>'.
When that command (run through the liblvm2cmd interface) is called, it loads the
cluster locking library. Upon the very first call into the locking library, the
program dies. I haven't determined the cause. All pointers to functions seem
to be fine, but when _lock_fn is called, dmeventd mysteriously dies.
A _very_ simple workaround is to use 'system()' rather than calling 'lvm2_run'.
I've tested this, and it works. I realize that there are memory issues
involved in the forking/etc of this new process, but we have memory issues with
the logging anyway and it's better than having the program die.
Certainly, we will have to fix liblvm2cmd, but I don't understand the problem
there and that could take some time.
This should be considered a blocker. However, if we get the simple fix in, we
could probably reduce the severity.
We have identified some things that need fixing with the library but have opted
to use the workaround for this release.
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on the solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.