aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2015-11-25 13:32:25 +0100
committerNatanael Copa <ncopa@alpinelinux.org>2015-11-25 12:38:50 +0000
commit09cb0c2c4b414b8812acdd53eaf0f81525fb9f5f (patch)
treef5a4e9baba1babb16549a6bf945d9afcae9a2290
parenta2128b072eb5d121ac5e746021b06a11862786a6 (diff)
downloadmkinitfs-09cb0c2c4b414b8812acdd53eaf0f81525fb9f5f.tar.bz2
mkinitfs-09cb0c2c4b414b8812acdd53eaf0f81525fb9f5f.tar.xz
nlplug-findfs: do not try execute programs that does not exists
Avoid printing error message if there are lvm devices but root is not on any of those.
-rw-r--r--nlplug-findfs.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/nlplug-findfs.c b/nlplug-findfs.c
index cccc359..27b9ce2 100644
--- a/nlplug-findfs.c
+++ b/nlplug-findfs.c
@@ -50,9 +50,13 @@
#define TRIGGER_THREAD 0x1
#define CRYPTSETUP_THREAD 0x2
+#define LVM_PATH "/sbin/lvm"
+#define MDADM_PATH "/sbin/mdadm"
+
static int dodebug;
static char *default_envp[2];
char *argv0;
+static int use_mdadm, use_lvm;
#if defined(DEBUG)
#include <stdarg.h>
@@ -312,23 +316,25 @@ static int load_kmod(const char *modalias)
static void start_mdadm(char *devnode)
{
char *mdadm_argv[] = {
- "/sbin/mdadm",
+ MDADM_PATH,
"--incremental",
"--quiet",
devnode,
NULL
};
- spawn_command(&spawnmgr, mdadm_argv, 0);
+ if (use_mdadm)
+ spawn_command(&spawnmgr, mdadm_argv, 0);
}
static void start_lvm2(char *devnode)
{
char *lvm2_argv[] = {
- "/sbin/lvm", "vgchange",
+ LVM_PATH, "vgchange",
"--activate" , "ay", "--noudevsync", "--sysinit", "-q", "-q",
NULL
};
- spawn_command(&spawnmgr, lvm2_argv, 0);
+ if (use_lvm)
+ spawn_command(&spawnmgr, lvm2_argv, 0);
}
@@ -842,6 +848,9 @@ int main(int argc, char *argv[])
memset(&conf, 0, sizeof(conf));
conf.program_argv = program_argv;
conf.timeout = DEFAULT_EVENT_TIMEOUT;
+ use_lvm = access(LVM_PATH, X_OK) == 0;
+ use_mdadm = access(MDADM_PATH, X_OK) == 0;
+
argv0 = strrchr(argv[0], '/');
if (argv0++ == NULL)
argv0 = argv[0];