X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fmount.c;h=6b38741c35407a51dc0a1d8dd69f7d486b7d66c3;hb=a40eb73224e237f758d38847ae216c019425ebac;hp=86c5b0a8cf1b2e474f92d401b35db9ca28703a70;hpb=032ff4afc953cae076ce0ee6a0b85020eeb1a75a;p=elogind.git diff --git a/src/mount.c b/src/mount.c index 86c5b0a8c..6b38741c3 100644 --- a/src/mount.c +++ b/src/mount.c @@ -62,6 +62,8 @@ static void mount_init(Unit *u) { m->timeout_usec = DEFAULT_TIMEOUT_USEC; exec_context_init(&m->exec_context); + m->directory_mode = 0755; + /* We need to make sure that /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 @@ -260,11 +262,7 @@ static int mount_add_target_links(Mount *m) { if ((r = unit_load_related_unit(UNIT(m), ".automount", &am)) < 0) return r; - if ((r = unit_add_dependency(tu, UNIT_WANTS, UNIT(am), true)) < 0) - return r; - - return unit_add_dependency(UNIT(am), UNIT_BEFORE, tu, true); - + return unit_add_two_dependencies(tu, UNIT_AFTER, UNIT_WANTS, UNIT(am), true); } else { if (!noauto && handle) @@ -497,7 +495,8 @@ static void mount_dump(Unit *u, FILE *f, const char *prefix) { "%sFrom /etc/fstab: %s\n" "%sFrom /proc/self/mountinfo: %s\n" "%sFrom fragment: %s\n" - "%sKillMode: %s\n", + "%sKillMode: %s\n" + "%sDirectoryMode: %04o\n", prefix, mount_state_to_string(m->state), prefix, m->where, prefix, strna(p->what), @@ -506,7 +505,8 @@ static void mount_dump(Unit *u, FILE *f, const char *prefix) { prefix, yes_no(m->from_etc_fstab), prefix, yes_no(m->from_proc_self_mountinfo), prefix, yes_no(m->from_fragment), - prefix, kill_mode_to_string(m->kill_mode)); + prefix, kill_mode_to_string(m->kill_mode), + prefix, m->directory_mode); if (m->control_pid > 0) fprintf(f, @@ -662,6 +662,8 @@ static void mount_enter_mounting(Mount *m) { m->control_command_id = MOUNT_EXEC_MOUNT; m->control_command = m->exec_command + MOUNT_EXEC_MOUNT; + mkdir_p(m->where, m->directory_mode); + if (m->from_fragment) r = exec_command_set( m->control_command,