When sanlock is used as a locking driver and sanlock deamon loses access to its
lockspace, it automatically kills off the domains that had their locks stored
there. Apparently some management apps would like to change this behavior by
configuring what should happen when locks are lost.
Everything except the sanlock_helper code from patch 7/7 should be stable. The
helper code may need some additional work (perhaps even touching other parts of
libvirtd internals) because some lock failure action does not work as expected.
For example, when automatic disk locks are enabled, the "pause" action will
result in libvirtd calling back to sanlock and since it doesn't have access to
the lockspace, the call would just hang. However, since currently the only
requestor for this feature is VDSM and it doesn't use automatic disk locks, the
sanlock_helper could work for them without any modifications. And since current
sanlock_helper implementation is supposed to be changed when libvirtd gains
administrative interface (see patch 7/7 for more details) we may even just live
with its limitations for the time being.
Jiri Denemark (7):
conf: Generalize life cycle actions to event actions
conf: Add on_lockfailure event configuration
qemu: Use macro instead of "qemu" in the context of URI scheme
locking: Add const char * parameter to avoid ugly typecasts
locking: Pass hypervisor driver name when acquiring locks
locking: Add support for lock failure action
locking: Implement lock failure action in sanlock driver
docs/formatdomain.html.in | 37 +++++--
docs/internals/locking.html.in | 8 ++
docs/schemas/domaincommon.rng | 30 +++++-
libvirt.spec.in | 1 +
src/Makefile.am | 13 ++-
src/conf/domain_conf.c | 85 +++++++++------
src/conf/domain_conf.h | 18 +++-
src/libvirt_private.syms | 2 +
src/locking/domain_lock.c | 36 ++++---
src/locking/domain_lock.h | 4 +
src/locking/lock_driver.h | 8 +-
src/locking/lock_driver_nop.c | 1 +
src/locking/lock_driver_sanlock.c | 114 +++++++++++++++++---
src/locking/lock_manager.c | 10 +-
src/locking/lock_manager.h | 1 +
src/locking/sanlock_helper.c | 214 ++++++++++++++++++++++++++++++++++++++
src/qemu/qemu_conf.h | 2 +
src/qemu/qemu_driver.c | 21 ++--
src/qemu/qemu_hotplug.c | 15 ++-
src/qemu/qemu_process.c | 4 +-
20 files changed, 537 insertions(+), 87 deletions(-)
create mode 100644 src/locking/sanlock_helper.c
--
1.7.12