[systemd-devel] [PATCH v2] Default to /usr/bin/u?mount, configurable, rather than hard-coded /bin/u?mount.
Lennart Poettering
lennart at poettering.net
Wed May 13 06:52:25 PDT 2015
On Wed, 13.05.15 14:43, Dimitri John Ledkov (dimitri.j.ledkov at intel.com) wrote:
Thanks! Applied!
> ---
> Makefile.am | 2 ++
> configure.ac | 3 +++
> src/core/execute.h | 2 +-
> src/core/mount.c | 12 ++++++------
> src/core/mount.h | 4 ++--
> src/remount-fs/remount-fs.c | 10 +++++-----
> 6 files changed, 19 insertions(+), 14 deletions(-)
>
> diff --git a/Makefile.am b/Makefile.am
> index e4d00a8..e8a329f 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -208,6 +208,8 @@ AM_CPPFLAGS = \
> -DPOLKIT_AGENT_BINARY_PATH=\"$(bindir)/pkttyagent\" \
> -DQUOTACHECK=\"$(QUOTACHECK)\" \
> -DKEXEC=\"$(KEXEC)\" \
> + -DMOUNT_PATH=\"$(MOUNT_PATH)\" \
> + -DUMOUNT_PATH=\"$(UMOUNT_PATH)\" \
> -DLIBDIR=\"$(libdir)\" \
> -DROOTLIBDIR=\"$(rootlibdir)\" \
> -DROOTLIBEXECDIR=\"$(rootlibexecdir)\" \
> diff --git a/configure.ac b/configure.ac
> index 600e203..70e594d 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_PATH], [mount], [/usr/bin/mount], [$PATH:/usr/sbin:/sbin])
> +AC_PATH_PROG([UMOUNT_PATH], [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/execute.h b/src/core/execute.h
> index a0908e0..f5d5c1d 100644
> --- a/src/core/execute.h
> +++ b/src/core/execute.h
> @@ -165,7 +165,7 @@ struct ExecContext {
>
> /* This is not exposed to the user but available
> * internally. We need it to make sure that whenever we spawn
> - * /bin/mount it is run in the same process group as us so
> + * /usr/bin/mount it is run in the same process group as us so
> * that the autofs logic detects that it belongs to us and we
> * don't enter a trigger loop. */
> bool same_pgrp;
> diff --git a/src/core/mount.c b/src/core/mount.c
> index 8853311..8ef3d17 100644
> --- a/src/core/mount.c
> +++ b/src/core/mount.c
> @@ -135,8 +135,8 @@ static void mount_init(Unit *u) {
> m->exec_context.std_error = u->manager->default_std_error;
> }
>
> - /* We need to make sure that /bin/mount is always called in
> - * the same process group as us, so that the autofs kernel
> + /* We need to make sure that /usr/bin/mount is always called
> + * in the same process group as us, so that the autofs kernel
> * side doesn't send us another mount request while we are
> * already trying to comply its last one. */
> m->exec_context.same_pgrp = true;
> @@ -833,7 +833,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_PATH, m->where, NULL);
> if (r >= 0 && UNIT(m)->manager->running_as == MANAGER_SYSTEM)
> r = exec_command_append(m->control_command, "-n", NULL);
> if (r < 0)
> @@ -884,7 +884,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_PATH,
> m->parameters_fragment.what, m->where, NULL);
> if (r >= 0 && UNIT(m)->manager->running_as == MANAGER_SYSTEM)
> r = exec_command_append(m->control_command, "-n", NULL);
> @@ -931,7 +931,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_PATH,
> m->parameters_fragment.what, m->where,
> "-o", o, NULL);
> if (r >= 0 && UNIT(m)->manager->running_as == MANAGER_SYSTEM)
> @@ -1582,7 +1582,7 @@ static int mount_enumerate(Manager *m) {
>
> /* Dispatch this before we dispatch SIGCHLD, so that
> * we always get the events from /proc/self/mountinfo
> - * before the SIGCHLD of /bin/mount. */
> + * before the SIGCHLD of /usr/bin/mount. */
> r = sd_event_source_set_priority(m->mount_event_source, -10);
> if (r < 0)
> goto fail;
> diff --git a/src/core/mount.h b/src/core/mount.h
> index a01e6da..280ea0d 100644
> --- a/src/core/mount.h
> +++ b/src/core/mount.h
> @@ -28,8 +28,8 @@ typedef struct Mount Mount;
>
> typedef enum MountState {
> MOUNT_DEAD,
> - MOUNT_MOUNTING, /* /bin/mount is running, but the mount is not done yet. */
> - MOUNT_MOUNTING_DONE, /* /bin/mount is running, and the mount is done. */
> + MOUNT_MOUNTING, /* /usr/bin/mount is running, but the mount is not done yet. */
> + MOUNT_MOUNTING_DONE, /* /usr/bin/mount is running, and the mount is done. */
> MOUNT_MOUNTED,
> MOUNT_REMOUNTING,
> MOUNT_UNMOUNTING,
> diff --git a/src/remount-fs/remount-fs.c b/src/remount-fs/remount-fs.c
> index 70dacfa..a09531b 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_PATH;
> arguments[1] = me->mnt_dir;
> arguments[2] = "-o";
> arguments[3] = "remount";
> arguments[4] = NULL;
>
> - execv("/bin/mount", (char **) arguments);
> + execv(MOUNT_PATH, (char **) arguments);
>
> - log_error_errno(errno, "Failed to execute /bin/mount: %m");
> + log_error_errno(errno, "Failed to execute " MOUNT_PATH ": %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_PATH " 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_PATH " for %s terminated by signal %s.", s, signal_to_string(si.si_status));
>
> ret = EXIT_FAILURE;
> }
> --
> 2.1.4
>
> _______________________________________________
> systemd-devel mailing list
> systemd-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/systemd-devel
Lennart
--
Lennart Poettering, Red Hat
More information about the systemd-devel
mailing list