Default to /usr/bin/u?mount, configurable, rather than hard-coded /bin/u?mount.
This commit is contained in:
parent
7ba2711d3f
commit
f00929ad62
|
@ -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)\" \
|
||||
|
|
|
@ -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=
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue