mount: add automatic start ordering dependencies for mounts

This commit is contained in:
Lennart Poettering 2010-07-12 22:55:27 +02:00
parent 21d21ea42e
commit 2edd4434e5
13 changed files with 71 additions and 12 deletions

View File

@ -146,6 +146,23 @@ static int automount_add_mount_links(Automount *a) {
return 0;
}
static int automount_add_default_dependencies(Automount *a) {
int r;
assert(a);
if (a->meta.manager->running_as == MANAGER_SYSTEM) {
if ((r = unit_add_dependency_by_name(UNIT(a), UNIT_AFTER, SPECIAL_SYSINIT_TARGET, NULL, true)) < 0)
return r;
if ((r = unit_add_two_dependencies_by_name(UNIT(a), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true)) < 0)
return r;
}
return 0;
}
static int automount_verify(Automount *a) {
bool b;
char *e;
@ -201,9 +218,8 @@ static int automount_load(Unit *u) {
if ((r = unit_add_dependency(u, UNIT_BEFORE, UNIT(a->mount), true)) < 0)
return r;
if (a->meta.default_dependencies &&
a->meta.manager->running_as == MANAGER_SYSTEM)
if ((r = unit_add_two_dependencies_by_name(UNIT(a), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true)) < 0)
if (a->meta.default_dependencies)
if ((r = automount_add_default_dependencies(a)) < 0)
return r;
}

View File

@ -274,6 +274,24 @@ static int mount_add_target_links(Mount *m) {
}
}
static int mount_add_default_dependencies(Mount *m) {
int r;
assert(m);
if (m->meta.manager->running_as == MANAGER_SYSTEM) {
if ((r = unit_add_dependency_by_name(UNIT(m), UNIT_AFTER, SPECIAL_SYSINIT_TARGET, NULL, true)) < 0)
return r;
if (!path_equal(m->where, "/"))
if ((r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true)) < 0)
return r;
}
return 0;
}
static int mount_verify(Mount *m) {
bool b;
char *e;
@ -368,10 +386,8 @@ static int mount_load(Unit *u) {
if ((r = unit_add_default_cgroup(u)) < 0)
return r;
if (m->meta.default_dependencies &&
m->meta.manager->running_as == MANAGER_SYSTEM &&
!path_equal(m->where, "/"))
if ((r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true)) < 0)
if (m->meta.default_dependencies)
if ((r = mount_add_default_dependencies(m)) < 0)
return r;
}

View File

@ -120,6 +120,24 @@ static int swap_add_target_links(Swap *s) {
return unit_add_dependency(UNIT(s), UNIT_BEFORE, tu, true);
}
static int swap_add_default_dependencies(Swap *s) {
int r;
assert(s);
if (s->meta.manager->running_as == MANAGER_SYSTEM) {
if ((r = unit_add_dependency_by_name(UNIT(s), UNIT_AFTER, SPECIAL_SYSINIT_TARGET, NULL, true)) < 0)
return r;
/* Note that by default we don't disable swap devices
* on shutdown. i.e. there is no umount.target
* conflicts here. */
}
return 0;
}
static int swap_verify(Swap *s) {
bool b;
char *e;
@ -185,6 +203,10 @@ static int swap_load(Unit *u) {
if ((r = swap_add_target_links(s)) < 0)
return r;
if (s->meta.default_dependencies)
if ((r = swap_add_default_dependencies(s)) < 0)
return r;
}
return swap_verify(s);

View File

@ -7,7 +7,7 @@
[Unit]
Description=Huge Pages File System Automount Point
Before=sysinit.target
DefaultDependencies=no
[Automount]
Where=/dev/hugepages

View File

@ -7,6 +7,7 @@
[Unit]
Description=Huge Pages File System
DefaultDependencies=no
[Mount]
What=hugetlbfs

View File

@ -7,7 +7,7 @@
[Unit]
Description=POSIX Message Queue File System Automount Point
Before=sysinit.target
DefaultDependencies=no
[Automount]
Where=/dev/mqueue

View File

@ -7,6 +7,7 @@
[Unit]
Description=POSIX Message Queue File System
DefaultDependencies=no
[Mount]
What=mqueue

View File

@ -7,7 +7,7 @@
[Unit]
Description=Arbitrary Executable File Formats File System Automount Point
Before=sysinit.target
DefaultDependencies=no
[Automount]
Where=/proc/sys/fs/binfmt_misc

View File

@ -7,6 +7,7 @@
[Unit]
Description=Arbitrary Executable File Formats File System
DefaultDependencies=no
[Mount]
What=binfmt_misc

View File

@ -7,7 +7,7 @@
[Unit]
Description=Debug File System Automount Point
Before=sysinit.target
DefaultDependencies=no
[Automount]
Where=/sys/kernel/debug

View File

@ -7,6 +7,7 @@
[Unit]
Description=Debug File System
DefaultDependencies=no
[Mount]
What=debugfs

View File

@ -7,7 +7,7 @@
[Unit]
Description=Security File System Automount Point
Before=sysinit.target
DefaultDependencies=no
[Automount]
Where=/sys/kernel/security

View File

@ -7,6 +7,7 @@
[Unit]
Description=Security File System
DefaultDependencies=no
[Mount]
What=securityfs