m->control_command_id = _MOUNT_EXEC_COMMAND_INVALID;
- m->meta.ignore_on_isolate = true;
+ UNIT(m)->ignore_on_isolate = true;
}
static void mount_unwatch_control_pid(Mount *m) {
/* Adds in links to other mount points that might lie below or
* above us in the hierarchy */
- LIST_FOREACH(units_by_type, other, m->meta.manager->units_by_type[UNIT_MOUNT]) {
- Mount *n = (Mount*) other;
+ LIST_FOREACH(units_by_type, other, UNIT(m)->manager->units_by_type[UNIT_MOUNT]) {
+ Mount *n = MOUNT(other);
MountParameters *pn;
if (n == m)
continue;
- if (n->meta.load_state != UNIT_LOADED)
+ if (UNIT(n)->load_state != UNIT_LOADED)
continue;
pn = get_mount_parameters_configured(n);
assert(m);
- LIST_FOREACH(units_by_type, other, m->meta.manager->units_by_type[UNIT_SWAP])
- if ((r = swap_add_one_mount_link((Swap*) other, m)) < 0)
+ LIST_FOREACH(units_by_type, other, UNIT(m)->manager->units_by_type[UNIT_SWAP])
+ if ((r = swap_add_one_mount_link(SWAP(other), m)) < 0)
return r;
return 0;
assert(m);
- LIST_FOREACH(units_by_type, other, m->meta.manager->units_by_type[UNIT_PATH])
- if ((r = path_add_one_mount_link((Path*) other, m)) < 0)
+ LIST_FOREACH(units_by_type, other, UNIT(m)->manager->units_by_type[UNIT_PATH])
+ if ((r = path_add_one_mount_link(PATH(other), m)) < 0)
return r;
return 0;
assert(m);
- LIST_FOREACH(units_by_type, other, m->meta.manager->units_by_type[UNIT_AUTOMOUNT])
- if ((r = automount_add_one_mount_link((Automount*) other, m)) < 0)
+ LIST_FOREACH(units_by_type, other, UNIT(m)->manager->units_by_type[UNIT_AUTOMOUNT])
+ if ((r = automount_add_one_mount_link(AUTOMOUNT(other), m)) < 0)
return r;
return 0;
assert(m);
- LIST_FOREACH(units_by_type, other, m->meta.manager->units_by_type[UNIT_SOCKET])
- if ((r = socket_add_one_mount_link((Socket*) other, m)) < 0)
+ LIST_FOREACH(units_by_type, other, UNIT(m)->manager->units_by_type[UNIT_SOCKET])
+ if ((r = socket_add_one_mount_link(SOCKET(other), m)) < 0)
return r;
return 0;
assert(m);
- if (m->meta.manager->running_as != MANAGER_SYSTEM)
+ if (UNIT(m)->manager->running_as != MANAGER_SYSTEM)
return 0;
if (!(p = get_mount_parameters_configured(m)))
automount ||
mount_test_option(p->options, "comment=systemd.mount") ||
mount_test_option(p->options, "x-systemd-mount") ||
- m->meta.manager->mount_auto;
+ UNIT(m)->manager->mount_auto;
if (mount_is_network(p)) {
target = SPECIAL_REMOTE_FS_TARGET;
after = SPECIAL_LOCAL_FS_PRE_TARGET;
}
- if ((r = manager_load_unit(m->meta.manager, target, NULL, NULL, &tu)) < 0)
+ if ((r = manager_load_unit(UNIT(m)->manager, target, NULL, NULL, &tu)) < 0)
return r;
if (after)
if (!(name = unit_name_from_path_instance("fsck", p->what, ".service")))
return -ENOMEM;
- if ((r = manager_load_unit_prepare(m->meta.manager, name, NULL, NULL, &fsck)) < 0) {
+ if ((r = manager_load_unit_prepare(UNIT(m)->manager, name, NULL, NULL, &fsck)) < 0) {
log_warning("Failed to prepare unit %s: %s", name, strerror(-r));
free(name);
return r;
assert(m);
- if (m->meta.manager->running_as != MANAGER_SYSTEM)
+ if (UNIT(m)->manager->running_as != MANAGER_SYSTEM)
return 0;
p = get_mount_parameters_configured(m);
return r;
}
- SET_FOREACH(other, m->meta.dependencies[UNIT_AFTER], i) {
+ SET_FOREACH(other, UNIT(m)->dependencies[UNIT_AFTER], i) {
if (other->type != UNIT_DEVICE)
continue;
char *e;
assert(m);
- if (m->meta.load_state != UNIT_LOADED)
+ if (UNIT(m)->load_state != UNIT_LOADED)
return 0;
if (!m->from_etc_fstab && !m->from_fragment && !m->from_proc_self_mountinfo)
free(e);
if (!b) {
- log_error("%s's Where setting doesn't match unit name. Refusing.", m->meta.id);
+ log_error("%s's Where setting doesn't match unit name. Refusing.", UNIT(m)->id);
return -EINVAL;
}
return -EINVAL;
}
- if (m->meta.fragment_path && !m->parameters_fragment.what) {
- log_error("%s's What setting is missing. Refusing.", m->meta.id);
+ if (UNIT(m)->fragment_path && !m->parameters_fragment.what) {
+ log_error("%s's What setting is missing. Refusing.", UNIT(m)->id);
return -EBADMSG;
}
if (m->exec_context.pam_name && m->exec_context.kill_mode != KILL_CONTROL_GROUP) {
- log_error("%s has PAM enabled. Kill mode must be set to 'control-group'. Refusing.", m->meta.id);
+ log_error("%s has PAM enabled. Kill mode must be set to 'control-group'. Refusing.", UNIT(m)->id);
return -EINVAL;
}
if ((r = unit_add_exec_dependencies(u, &m->exec_context)) < 0)
return r;
- if (m->meta.fragment_path)
+ 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)
if (!(m->where = unit_name_to_path(u->id)))
path_kill_slashes(m->where);
- if (!m->meta.description)
+ if (!UNIT(m)->description)
if ((r = unit_set_description(u, m->where)) < 0)
return r;
if ((r = mount_add_fstab_links(m)) < 0)
return r;
- if (m->meta.default_dependencies)
+ if (UNIT(m)->default_dependencies || m->from_etc_fstab)
if ((r = mount_add_default_dependencies(m)) < 0)
return r;
assert(m);
- SET_FOREACH(p, m->meta.dependencies[UNIT_TRIGGERED_BY], i)
+ SET_FOREACH(p, UNIT(m)->dependencies[UNIT_TRIGGERED_BY], i)
if (p->type == UNIT_AUTOMOUNT) {
r = automount_send_ready(AUTOMOUNT(p), status);
if (r < 0)
if (state != old_state)
log_debug("%s changed %s -> %s",
- m->meta.id,
+ UNIT(m)->id,
mount_state_to_string(old_state),
mount_state_to_string(state));
NULL,
&m->exec_context,
NULL, 0,
- m->meta.manager->environment,
+ UNIT(m)->manager->environment,
true,
true,
true,
- m->meta.manager->confirm_spawn,
- m->meta.cgroup_bondings,
- m->meta.cgroup_attributes,
+ UNIT(m)->manager->confirm_spawn,
+ UNIT(m)->cgroup_bondings,
+ UNIT(m)->cgroup_attributes,
&pid)) < 0)
goto fail;
if ((r = set_put(pid_set, LONG_TO_PTR(m->control_pid))) < 0)
goto fail;
- if ((r = cgroup_bonding_kill_list(m->meta.cgroup_bondings, sig, true, pid_set)) < 0) {
+ if ((r = cgroup_bonding_kill_list(UNIT(m)->cgroup_bondings, sig, true, pid_set)) < 0) {
if (r != -EAGAIN && r != -ESRCH && r != -ENOENT)
log_warning("Failed to kill control group: %s", strerror(-r));
} else if (r > 0)
return;
fail:
- log_warning("%s failed to kill processes: %s", m->meta.id, strerror(-r));
+ log_warning("%s failed to kill processes: %s", UNIT(m)->id, strerror(-r));
if (state == MOUNT_REMOUNTING_SIGTERM || state == MOUNT_REMOUNTING_SIGKILL)
mount_enter_mounted(m, false);
return;
fail:
- log_warning("%s failed to run 'umount' task: %s", m->meta.id, strerror(-r));
+ log_warning("%s failed to run 'umount' task: %s", UNIT(m)->id, strerror(-r));
mount_enter_mounted(m, false);
}
return;
fail:
- log_warning("%s failed to run 'mount' task: %s", m->meta.id, strerror(-r));
+ log_warning("%s failed to run 'mount' task: %s", UNIT(m)->id, strerror(-r));
mount_enter_dead(m, false);
}
return;
fail:
- log_warning("%s failed to run 'remount' task: %s", m->meta.id, strerror(-r));
+ log_warning("%s failed to run 'remount' task: %s", UNIT(m)->id, strerror(-r));
m->reload_failure = true;
mount_enter_mounted(m, true);
}
}
void mount_fd_event(Manager *m, int events) {
- Unit *meta;
+ Unit *u;
int r;
assert(m);
log_error("Failed to reread /proc/self/mountinfo: %s", strerror(-r));
/* Reset flags, just in case, for later calls */
- LIST_FOREACH(units_by_type, meta, m->units_by_type[UNIT_MOUNT]) {
- Mount *mount = (Mount*) meta;
+ LIST_FOREACH(units_by_type, u, m->units_by_type[UNIT_MOUNT]) {
+ Mount *mount = MOUNT(u);
mount->is_mounted = mount->just_mounted = mount->just_changed = false;
}
manager_dispatch_load_queue(m);
- LIST_FOREACH(units_by_type, meta, m->units_by_type[UNIT_MOUNT]) {
- Mount *mount = (Mount*) meta;
+ LIST_FOREACH(units_by_type, u, m->units_by_type[UNIT_MOUNT]) {
+ Mount *mount = MOUNT(u);
if (!mount->is_mounted) {
/* This has just been unmounted. */
goto finish;
}
- if ((q = cgroup_bonding_kill_list(m->meta.cgroup_bondings, signo, false, pid_set)) < 0)
+ if ((q = cgroup_bonding_kill_list(UNIT(m)->cgroup_bondings, signo, false, pid_set)) < 0)
if (q != -EAGAIN && q != -ESRCH && q != -ENOENT)
r = q;
}