summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNiels de Vos <ndevos@redhat.com>2013-06-24 14:34:50 +0200
committerVijay Bellur <vbellur@redhat.com>2013-06-27 04:37:53 -0700
commit75ee14ffbe362c41be096eca9a2fef1ec7e8db94 (patch)
tree4486323dcb561a7579f375884489ab56f6cd297c
parente00fb417781931454dfb51f3eac803f44d5b6eca (diff)
build: declare lvm_lv_from_name() if it is missing from lvm2app.h
The bd-xlator can not be built successfully on certain Debian distributions due to a missing declaration of lvm_lv_from_name(). This function is available for linking, but it does not exist in the header file. This change adds a detection for lvm_lv_from_name() in both the library for linking, and the declaration in the header file. If the 1st is missing, the bd-xlator can not be built, and if only the 2nd one is missing, we'll declare lvm_lv_from_name() ourselves. This makes it possible to build the bd-xlator on the affected Debian distributions too. Change-Id: I0c823a7861b02bb5d9c1abb76ebfff92f272f9eb BUG: 976946 Signed-off-by: Niels de Vos <ndevos@redhat.com> Reviewed-on: http://review.gluster.org/5250 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Vijay Bellur <vbellur@redhat.com>
-rw-r--r--configure.ac15
-rw-r--r--xlators/storage/bd_map/src/bd_map.h6
2 files changed, 20 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac
index 9db3bf9354e..83d5a4ed9c2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -291,9 +291,18 @@ AC_ARG_ENABLE([bd-xlator],
if test "x$enable_bd_xlator" != "xno"; then
AC_CHECK_LIB([lvm2app],
- [lvm_init],
+ [lvm_init,lvm_lv_from_name],
[HAVE_BD_LIB="yes"],
[HAVE_BD_LIB="no"])
+
+ if test "x$HAVE_BD_LIB" = "xyes"; then
+ # lvm_lv_from_name() has been made public with lvm2-2.02.79
+ AC_CHECK_DECLS(
+ [lvm_lv_from_name],
+ [NEED_LVM_LV_FROM_NAME_DECL="no"],
+ [NEED_LVM_LV_FROM_NAME_DECL="yes"],
+ [[#include <lvm2app.h>]])
+ fi
fi
if test "x$enable_bd_xlator" = "xyes" -a "x$HAVE_BD_LIB" = "xno"; then
@@ -306,6 +315,10 @@ if test "x${enable_bd_xlator}" != "xno" -a "x${HAVE_BD_LIB}" = "xyes"; then
BUILD_BD_XLATOR=yes
AC_DEFINE(HAVE_BD_XLATOR, 1, [define if lvm2app library found and bd
xlator enabled])
+ if test "x$NEED_LVM_LV_FROM_NAME_DECL" = "xyes"; then
+ AC_DEFINE(NEED_LVM_LV_FROM_NAME_DECL, 1, [defined if lvm_lv_from_name()
+ was not found in the lvm2app.h header, but can be linked])
+ fi
fi
AM_CONDITIONAL([ENABLE_BD_XLATOR], [test x$BUILD_BD_XLATOR = xyes])
diff --git a/xlators/storage/bd_map/src/bd_map.h b/xlators/storage/bd_map/src/bd_map.h
index 1a0f4248ed4..fa10e97a947 100644
--- a/xlators/storage/bd_map/src/bd_map.h
+++ b/xlators/storage/bd_map/src/bd_map.h
@@ -30,6 +30,12 @@
#define BACKEND_VG "vg"
+/* lvm2-2.02.79 added this in lvm2app.h, but it is available for linking in
+ * older versions already */
+#if NEED_LVM_LV_FROM_NAME_DECL
+lv_t lvm_lv_from_name(vg_t vg, const char *name);
+#endif
+
enum gf_bd_mem_types_ {
gf_bd_fd = gf_common_mt_end + 1,
gf_bd_private,