From 5ce6d95eed2a16ab39fdc41fe8691354b5bdbe58 Mon Sep 17 00:00:00 2001 From: Jiri Denemark Date: Tue, 16 Oct 2012 12:41:20 +0200 Subject: [PATCH] locking: Fix build with sanlock < 2.4 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 08dc63db97..8810efd041 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 a218432fd2..46827011ba 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,