libvirt started using sanlock_killpath to implement on_lockfailure action. Since sanlock_killpath was introduced in sanlock 2.4, libvirt fails to build with older sanlock. --- configure.ac | 7 +++++++ src/locking/lock_driver_sanlock.c | 13 +++++++++++++ 2 files changed, 20 insertions(+) diff --git a/configure.ac b/configure.ac index 08dc63d..8810efd 100644 --- a/configure.ac +++ b/configure.ac @@ -1216,6 +1216,13 @@ if test "x$with_sanlock" != "xno"; then if test "x$with_sanlock" = "xyes" ; then AC_DEFINE_UNQUOTED([HAVE_SANLOCK], 1, [whether Sanlock plugin for lock management is available]) + + AC_CHECK_LIB([sanlock_client], [sanlock_killpath], + [sanlock_killpath=yes], [sanlock_killpath=no]) + if test "x$sanlock_killpath" = "xyes" ; then + AC_DEFINE_UNQUOTED([HAVE_SANLOCK_KILLPATH], 1, + [whether Sanlock supports sanlock_killpath]) + fi fi fi AM_CONDITIONAL([HAVE_SANLOCK], [test "x$with_sanlock" = "xyes"]) diff --git a/src/locking/lock_driver_sanlock.c b/src/locking/lock_driver_sanlock.c index a218432..4682701 100644 --- a/src/locking/lock_driver_sanlock.c +++ b/src/locking/lock_driver_sanlock.c @@ -687,6 +687,7 @@ static int virLockManagerSanlockAddResource(virLockManagerPtr lock, return 0; } +#if HAVE_SANLOCK_KILLPATH static int virLockManagerSanlockRegisterKillscript(int sock, const char *vmuri, @@ -762,6 +763,18 @@ cleanup: VIR_FREE(args); return ret; } +#else +static int +virLockManagerSanlockRegisterKillscript(int sock ATTRIBUTE_UNUSED, + const char *vmuri ATTRIBUTE_UNUSED, + const char *uuidstr ATTRIBUTE_UNUSED, + virDomainLockFailureAction action ATTRIBUTE_UNUSED) +{ + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("sanlock is too old to support lock failure action")); + return -1; +} +#endif static int virLockManagerSanlockAcquire(virLockManagerPtr lock, const char *state, -- 1.7.12.3 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list