From 0011a372f6e7798a4164afdb02eff2d627f67a08 Mon Sep 17 00:00:00 2001
From: Michal Schmidt <mschmidt@redhat.com>
Date: Fri, 29 Jun 2012 01:47:24 +0200
Subject: [PATCH] mount: split adding of extras from mount_load() (cherry
picked from commit
1a4ac875003b49132c55a0ef36cd6ae2a15d3ac2)
Conflicts:
src/core/mount.c
---
src/core/mount.c | 119 ++++++++++++++++++++++++++++++++++---------------------
1 file changed, 74 insertions(+), 45 deletions(-)
diff --git a/src/core/mount.c b/src/core/mount.c
index dcb6c5a..439dd84 100644
--- a/src/core/mount.c
+++ b/src/core/mount.c
@@ -590,72 +590,101 @@ static int mount_verify(Mount *m) {
return 0;
}
-static int mount_load(Unit *u) {
- Mount *m = MOUNT(u);
+static int mount_add_extras(Mount *m) {
+ Unit *u = UNIT(m);
int r;
- assert(u);
- assert(u->load_state == UNIT_STUB);
-
- if ((r = unit_load_fragment_and_dropin_optional(u)) < 0)
+ r = unit_add_exec_dependencies(u, &m->exec_context);
+ if (r < 0)
return r;
- /* This is a new unit? Then let's add in some extras */
- if (u->load_state == UNIT_LOADED) {
- if ((r = unit_add_exec_dependencies(u, &m->exec_context)) < 0)
- return r;
-
- if (UNIT(m)->fragment_path)
- m->from_fragment = true;
- else if (m->from_etc_fstab)
- /* We always add several default dependencies to fstab mounts,
- * but we do not want the implicit complementing of Wants= with After=
- * in the target unit that this mount unit will be hooked into. */
- UNIT(m)->default_dependencies = false;
+ if (UNIT(m)->fragment_path)
+ m->from_fragment = true;
+ else if (m->from_etc_fstab)
+ /* We always add several default dependencies to fstab mounts,
+ * but we do not want the implicit complementing of Wants= with After=
+ * in the target unit that this mount unit will be hooked into. */
+ UNIT(m)->default_dependencies = false;
+ if (!m->where) {
+ m->where = unit_name_to_path(u->id);
if (!m->where)
- if (!(m->where = unit_name_to_path(u->id)))
- return -ENOMEM;
-
- path_kill_slashes(m->where);
+ return -ENOMEM;
+ }
- if (!UNIT(m)->description)
- if ((r = unit_set_description(u, m->where)) < 0)
- return r;
+ path_kill_slashes(m->where);
- if ((r = mount_add_device_links(m)) < 0)
+ if (!UNIT(m)->description) {
+ r = unit_set_description(u, m->where);
+ if (r < 0)
return r;
+ }
- if ((r = mount_add_mount_links(m)) < 0)
- return r;
+ r = mount_add_device_links(m);
+ if (r < 0)
+ return r;
- if ((r = mount_add_socket_links(m)) < 0)
- return r;
+ r = mount_add_mount_links(m);
+ if (r < 0)
+ return r;
- if ((r = mount_add_swap_links(m)) < 0)
- return r;
+ r = mount_add_socket_links(m);
+ if (r < 0)
+ return r;
- if ((r = mount_add_path_links(m)) < 0)
- return r;
+ r = mount_add_swap_links(m);
+ if (r < 0)
+ return r;
+
+ r = mount_add_path_links(m);
+ if (r < 0)
+ return r;
+
+ r = mount_add_requires_mounts_links(m);
+ if (r < 0)
+ return r;
+
+ r = mount_add_automount_links(m);
+ if (r < 0)
+ return r;
+
+ r = mount_add_fstab_links(m);
+ if (r < 0)
+ return r;
- r = mount_add_requires_mounts_links(m);
+ if (UNIT(m)->default_dependencies || m->from_etc_fstab) {
+ r = mount_add_default_dependencies(m);
if (r < 0)
return r;
+ }
- if ((r = mount_add_automount_links(m)) < 0)
- return r;
+ r = unit_add_default_cgroups(u);
+ if (r < 0)
+ return r;
- if ((r = mount_add_fstab_links(m)) < 0)
- return r;
+ r = mount_fix_timeouts(m);
+ if (r < 0)
+ return r;
- if (UNIT(m)->default_dependencies || m->from_etc_fstab)
- if ((r = mount_add_default_dependencies(m)) < 0)
- return r;
+ return 0;
+}
- if ((r = unit_add_default_cgroups(u)) < 0)
- return r;
+static int mount_load(Unit *u) {
+ Mount *m = MOUNT(u);
+ int r;
+
+ assert(u);
+ assert(u->load_state == UNIT_STUB);
+
+ r = unit_load_fragment_and_dropin_optional(u);
+ if (r < 0)
+ return r;
- mount_fix_timeouts(m);
+ /* This is a new unit? Then let's add in some extras */
+ if (u->load_state == UNIT_LOADED) {
+ r = mount_add_extras(m);
+ if (r < 0)
+ return r;
}
return mount_verify(m);