[systemd-devel] [PATCH] Default to /usr/bin/u?mount, configurable, rather than hard-coded /bin/u?mount.

Dimitri John Ledkov dimitri.j.ledkov at intel.com
Mon May 11 08:58:51 PDT 2015


---
 Makefile.am                 |  2 ++
 configure.ac                |  3 +++
 src/core/mount.c            |  6 +++---
 src/remount-fs/remount-fs.c | 10 +++++-----
 4 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index e4d00a8..0ff11cc 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -208,6 +208,8 @@ AM_CPPFLAGS = \
 	-DPOLKIT_AGENT_BINARY_PATH=\"$(bindir)/pkttyagent\" \
 	-DQUOTACHECK=\"$(QUOTACHECK)\" \
 	-DKEXEC=\"$(KEXEC)\" \
+	-DMOUNT_BIN=\"$(MOUNT_BIN)\" \
+	-DUMOUNT_BIN=\"$(UMOUNT_BIN)\" \
 	-DLIBDIR=\"$(libdir)\" \
 	-DROOTLIBDIR=\"$(rootlibdir)\" \
 	-DROOTLIBEXECDIR=\"$(rootlibexecdir)\" \
diff --git a/configure.ac b/configure.ac
index 600e203..61dffc6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -100,6 +100,9 @@ AC_PATH_PROG([KEXEC], [kexec], [/usr/sbin/kexec], [$PATH:/usr/sbin:/sbin])
 
 AC_PATH_PROG([SULOGIN], [sulogin], [/usr/sbin/sulogin], [$PATH:/usr/sbin:/sbin])
 
+AC_PATH_PROG([MOUNT_BIN], [mount], [/usr/bin/mount], [$PATH:/usr/sbin:/sbin])
+AC_PATH_PROG([UMOUNT_BIN], [umount], [/usr/bin/umount], [$PATH:/usr/sbin:/sbin])
+
 AS_IF([! ln --relative --help > /dev/null 2>&1], [AC_MSG_ERROR([*** ln doesn't support --relative ***])])
 
 M4_DEFINES=
diff --git a/src/core/mount.c b/src/core/mount.c
index 65a66b4..a370c74 100644
--- a/src/core/mount.c
+++ b/src/core/mount.c
@@ -871,7 +871,7 @@ static void mount_enter_unmounting(Mount *m) {
         m->control_command_id = MOUNT_EXEC_UNMOUNT;
         m->control_command = m->exec_command + MOUNT_EXEC_UNMOUNT;
 
-        r = exec_command_set(m->control_command, "/bin/umount", m->where, NULL);
+        r = exec_command_set(m->control_command, UMOUNT_BIN, m->where, NULL);
         if (r >= 0 && UNIT(m)->manager->running_as == SYSTEMD_SYSTEM)
                 r = exec_command_append(m->control_command, "-n", NULL);
         if (r < 0)
@@ -924,7 +924,7 @@ static void mount_enter_mounting(Mount *m) {
                 if (r < 0)
                         goto fail;
 
-                r = exec_command_set(m->control_command, "/bin/mount",
+                r = exec_command_set(m->control_command, MOUNT_BIN,
                                      m->parameters_fragment.what, m->where, NULL);
                 if (r >= 0 && UNIT(m)->manager->running_as == SYSTEMD_SYSTEM)
                         r = exec_command_append(m->control_command, "-n", NULL);
@@ -973,7 +973,7 @@ static void mount_enter_remounting(Mount *m) {
                 else
                         o = "remount";
 
-                r = exec_command_set(m->control_command, "/bin/mount",
+                r = exec_command_set(m->control_command, MOUNT_BIN,
                                      m->parameters_fragment.what, m->where,
                                      "-o", o, NULL);
                 if (r >= 0 && UNIT(m)->manager->running_as == SYSTEMD_SYSTEM)
diff --git a/src/remount-fs/remount-fs.c b/src/remount-fs/remount-fs.c
index 70dacfa..ff7de2c 100644
--- a/src/remount-fs/remount-fs.c
+++ b/src/remount-fs/remount-fs.c
@@ -94,15 +94,15 @@ int main(int argc, char *argv[]) {
                         const char *arguments[5];
                         /* Child */
 
-                        arguments[0] = "/bin/mount";
+                        arguments[0] = MOUNT_BIN;
                         arguments[1] = me->mnt_dir;
                         arguments[2] = "-o";
                         arguments[3] = "remount";
                         arguments[4] = NULL;
 
-                        execv("/bin/mount", (char **) arguments);
+                        execv(MOUNT_BIN, (char **) arguments);
 
-                        log_error_errno(errno, "Failed to execute /bin/mount: %m");
+                        log_error_errno(errno, "Failed to execute " MOUNT_BIN ": %m");
                         _exit(EXIT_FAILURE);
                 }
 
@@ -142,9 +142,9 @@ int main(int argc, char *argv[]) {
                 if (s) {
                         if (!is_clean_exit(si.si_code, si.si_status, NULL)) {
                                 if (si.si_code == CLD_EXITED)
-                                        log_error("/bin/mount for %s exited with exit status %i.", s, si.si_status);
+                                        log_error(MOUNT_BIN " for %s exited with exit status %i.", s, si.si_status);
                                 else
-                                        log_error("/bin/mount for %s terminated by signal %s.", s, signal_to_string(si.si_status));
+                                        log_error(MOUNT_BIN " for %s terminated by signal %s.", s, signal_to_string(si.si_status));
 
                                 ret = EXIT_FAILURE;
                         }
-- 
2.1.4



More information about the systemd-devel mailing list