diff options
-rw-r--r-- | WHATS_NEW | 1 | ||||
-rwxr-xr-x | configure | 10 | ||||
-rw-r--r-- | configure.in | 9 | ||||
-rw-r--r-- | daemons/clvmd/clvmd-command.c | 5 | ||||
-rw-r--r-- | daemons/clvmd/lvm-functions.c | 19 | ||||
-rw-r--r-- | man/Makefile.in | 2 | ||||
-rw-r--r-- | man/clvmd.8.in | 10 |
7 files changed, 43 insertions, 13 deletions
@@ -1,5 +1,6 @@ Version 2.02.89 - ================================== + Support env vars LVM_CLVMD_BINARY and LVM_BINARY in clvmd. Fix restart of clvmd (preserve exlusive locks). (2.02.64) Add 'Volume Type' lv_attr characters for RAID and RAID_IMAGE. Add activation/retry_deactivation to lvm.conf to retry deactivation of an LV. @@ -626,6 +626,7 @@ OCF MIRRORS LVM_RELEASE_DATE LVM_RELEASE +LVM_PATH LVM_PATCHLEVEL LVM_MINOR LVM_MAJOR @@ -664,6 +665,7 @@ DEBUG COPTIMISE_FLAG CONFDIR CMDLIB +CLVMD_PATH CLVMD_CMANAGERS CLVMD CLUSTER @@ -9913,18 +9915,20 @@ fi lvm_exec_prefix=$exec_prefix test "$lvm_exec_prefix" = NONE && lvm_exec_prefix=$prefix test "$lvm_exec_prefix" = NONE && lvm_exec_prefix=$ac_default_prefix +LVM_PATH="$lvm_exec_prefix/sbin/lvm" cat >>confdefs.h <<_ACEOF -#define LVM_PATH "$lvm_exec_prefix/sbin/lvm" +#define LVM_PATH "$LVM_PATH" _ACEOF if test "$CLVMD" != none; then clvmd_prefix=$ac_default_prefix + CLVMD_PATH="$clvmd_prefix/sbin/clvmd" test "$prefix" != NONE && clvmd_prefix=$prefix cat >>confdefs.h <<_ACEOF -#define CLVMD_PATH "$clvmd_prefix/sbin/clvmd" +#define CLVMD_PATH "$CLVMD_PATH" _ACEOF fi @@ -10205,6 +10209,8 @@ LVM_LIBAPI=`echo "$VER" | $AWK -F '[()]' '{print $2}'` + + ################################################################################ ac_config_files="$ac_config_files Makefile make.tmpl daemons/Makefile daemons/clvmd/Makefile daemons/cmirrord/Makefile daemons/dmeventd/Makefile daemons/dmeventd/libdevmapper-event.pc daemons/dmeventd/plugins/Makefile daemons/dmeventd/plugins/lvm2/Makefile daemons/dmeventd/plugins/raid/Makefile daemons/dmeventd/plugins/mirror/Makefile daemons/dmeventd/plugins/snapshot/Makefile daemons/lvmetad/Makefile doc/Makefile doc/example.conf include/.symlinks include/Makefile lib/Makefile lib/format1/Makefile lib/format_pool/Makefile lib/locking/Makefile lib/mirror/Makefile lib/replicator/Makefile lib/misc/lvm-version.h lib/raid/Makefile lib/snapshot/Makefile lib/thin/Makefile libdm/Makefile libdm/libdevmapper.pc liblvm/Makefile liblvm/liblvm2app.pc man/Makefile po/Makefile scripts/clvmd_init_red_hat scripts/cmirrord_init_red_hat scripts/lvm2_monitoring_init_red_hat scripts/dm_event_systemd_red_hat.service scripts/lvm2_monitoring_systemd_red_hat.service scripts/Makefile test/Makefile test/api/Makefile tools/Makefile udev/Makefile unit-tests/datastruct/Makefile unit-tests/regex/Makefile unit-tests/mm/Makefile" diff --git a/configure.in b/configure.in index 30dd7653..244bfc85 100644 --- a/configure.in +++ b/configure.in @@ -1180,13 +1180,14 @@ fi lvm_exec_prefix=$exec_prefix test "$lvm_exec_prefix" = NONE && lvm_exec_prefix=$prefix test "$lvm_exec_prefix" = NONE && lvm_exec_prefix=$ac_default_prefix -AC_DEFINE_UNQUOTED(LVM_PATH, ["$lvm_exec_prefix/sbin/lvm"], [Path to lvm binary.]) +LVM_PATH="$lvm_exec_prefix/sbin/lvm" +AC_DEFINE_UNQUOTED(LVM_PATH, ["$LVM_PATH"], [Path to lvm binary.]) if test "$CLVMD" != none; then clvmd_prefix=$ac_default_prefix + CLVMD_PATH="$clvmd_prefix/sbin/clvmd" test "$prefix" != NONE && clvmd_prefix=$prefix - AC_DEFINE_UNQUOTED(CLVMD_PATH, ["$clvmd_prefix/sbin/clvmd"], - [Path to clvmd binary.]) + AC_DEFINE_UNQUOTED(CLVMD_PATH, ["$CLVMD_PATH"], [Path to clvmd binary.]) fi ################################################################################ @@ -1309,6 +1310,7 @@ AC_SUBST(CLDWHOLEARCHIVE) AC_SUBST(CLUSTER) AC_SUBST(CLVMD) AC_SUBST(CLVMD_CMANAGERS) +AC_SUBST(CLVMD_PATH) AC_SUBST(CMAN_CFLAGS) AC_SUBST(CMAN_LIBS) AC_SUBST(CMDLIB) @@ -1357,6 +1359,7 @@ AC_SUBST(LVM_LIBAPI) AC_SUBST(LVM_MAJOR) AC_SUBST(LVM_MINOR) AC_SUBST(LVM_PATCHLEVEL) +AC_SUBST(LVM_PATH) AC_SUBST(LVM_RELEASE) AC_SUBST(LVM_RELEASE_DATE) AC_SUBST(MIRRORS) diff --git a/daemons/clvmd/clvmd-command.c b/daemons/clvmd/clvmd-command.c index 4ba71513..5857a30f 100644 --- a/daemons/clvmd/clvmd-command.c +++ b/daemons/clvmd/clvmd-command.c @@ -366,6 +366,7 @@ static int restart_clvmd(void) int argc = 0, max_locks = 0; struct dm_hash_node *hn = NULL; char debug_arg[16]; + const char *clvmd = getenv("LVM_CLVMD_BINARY") ? : CLVMD_PATH; DEBUGLOG("clvmd restart requested\n"); @@ -415,11 +416,11 @@ static int restart_clvmd(void) argv[argc] = NULL; /* Exec new clvmd */ - DEBUGLOG("--- Restarting %s ---\n", CLVMD_PATH); + DEBUGLOG("--- Restarting %s ---\n", clvmd); for (argc = 1; argv[argc]; argc++) DEBUGLOG("--- %d: %s\n", argc, argv[argc]); /* NOTE: This will fail when downgrading! */ - execve(CLVMD_PATH, (char **)argv, NULL); + execve(clvmd, (char **)argv, NULL); out: /* We failed */ DEBUGLOG("Restart of clvmd failed.\n"); diff --git a/daemons/clvmd/lvm-functions.c b/daemons/clvmd/lvm-functions.c index ba786bb0..f16d006c 100644 --- a/daemons/clvmd/lvm-functions.c +++ b/daemons/clvmd/lvm-functions.c @@ -704,14 +704,21 @@ static int get_initial_state(struct dm_hash_table *excl_uuid) char lv[64], vg[64], flags[25], vg_flags[25]; char uuid[65]; char line[255]; - FILE *lvs = - popen - (LVM_PATH " lvs --config 'log{command_names=0 prefix=\"\"}' --nolocking --noheadings -o vg_uuid,lv_uuid,lv_attr,vg_attr", - "r"); + char *lvs_cmd; + const char *lvm_binary = getenv("LVM_BINARY") ? : LVM_PATH; + FILE *lvs; - if (!lvs) + if (dm_asprintf(&lvs_cmd, "%s lvs --config 'log{command_names=0 prefix=\"\"}' " + "--nolocking --noheadings -o vg_uuid,lv_uuid,lv_attr,vg_attr", + lvm_binary) < 0) return 0; + /* FIXME: Maybe link and use liblvm2cmd directly instead of fork */ + if (!(lvs = popen(lvs_cmd, "r"))) { + dm_free(lvs_cmd); + return 0; + } + while (fgets(line, sizeof(line), lvs)) { if (sscanf(line, "%s %s %s %s\n", vg, lv, flags, vg_flags) == 4) { @@ -749,6 +756,8 @@ static int get_initial_state(struct dm_hash_table *excl_uuid) if (fclose(lvs)) DEBUGLOG("lvs fclose failed: %s\n", strerror(errno)); + dm_free(lvs_cmd); + return 1; } diff --git a/man/Makefile.in b/man/Makefile.in index aa4b2a94..393e0dd0 100644 --- a/man/Makefile.in +++ b/man/Makefile.in @@ -73,7 +73,7 @@ $(MAN5) $(MAN8) $(MAN8DM) $(MAN8CLUSTER): Makefile %: %.in @case "$@" in \ */*) ;; \ - *) echo "Creating $@" ; $(SED) -e "s+#VERSION#+$(LVM_VERSION)+;s+#DEFAULT_SYS_DIR#+$(DEFAULT_SYS_DIR)+;s+#DEFAULT_ARCHIVE_DIR#+$(DEFAULT_ARCHIVE_DIR)+;s+#DEFAULT_BACKUP_DIR#+$(DEFAULT_BACKUP_DIR)+;s+#DEFAULT_CACHE_DIR#+$(DEFAULT_CACHE_DIR)+;s+#DEFAULT_LOCK_DIR#+$(DEFAULT_LOCK_DIR)+" $< > $@ ;; \ + *) echo "Creating $@" ; $(SED) -e "s+#VERSION#+$(LVM_VERSION)+;s+#DEFAULT_SYS_DIR#+$(DEFAULT_SYS_DIR)+;s+#DEFAULT_ARCHIVE_DIR#+$(DEFAULT_ARCHIVE_DIR)+;s+#DEFAULT_BACKUP_DIR#+$(DEFAULT_BACKUP_DIR)+;s+#DEFAULT_CACHE_DIR#+$(DEFAULT_CACHE_DIR)+;s+#DEFAULT_LOCK_DIR#+$(DEFAULT_LOCK_DIR)+;s+#CLVMD_PATH#+@CLVMD_PATH@+;s+#LVM_PATH#+@LVM_PATH@+;" $< > $@ ;; \ esac install_man5: $(MAN5) diff --git a/man/clvmd.8.in b/man/clvmd.8.in index 22d94b27..55d99997 100644 --- a/man/clvmd.8.in +++ b/man/clvmd.8.in @@ -95,5 +95,15 @@ manually specify this option to override the search. .TP .I \-V Display the version of the cluster LVM daemon. + +.SH ENVIRONMENT VARIABLES +.TP +.B LVM_CLVMD_BINARY +The CLVMD binary to use when clmvd restart is requested. +Defaults to #CLVMD_PATH#. +.TP +.B LVM_BINARY +The LVM2 binary to use. Defaults to #LVM_PATH#. + .SH SEE ALSO .BR lvm (8) |