static int mount_dispatch_timer(sd_event_source *source, usec_t usec, void *userdata);
static int mount_dispatch_io(sd_event_source *source, int fd, uint32_t revents, void *userdata);
-static char* mount_test_option(const char *haystack, const char *needle) {
- struct mntent me = { .mnt_opts = (char*) haystack };
-
- assert(needle);
-
- /* Like glibc's hasmntopt(), but works on a string, not a
- * struct mntent */
-
- if (!haystack)
- return NULL;
-
- return hasmntopt(&me, needle);
-}
-
static bool mount_is_network(MountParameters *p) {
assert(p);
m->timeout_usec = u->manager->default_timeout_start_usec;
m->directory_mode = 0755;
- exec_context_init(&m->exec_context);
- kill_context_init(&m->kill_context);
- cgroup_context_init(&m->cgroup_context);
-
- unit_cgroup_context_init_defaults(u, &m->cgroup_context);
-
if (unit_has_name(u, "-.mount")) {
/* Don't allow start/stop for root directory */
u->refuse_manual_start = true;
return sd_event_source_set_enabled(m->timer_event_source, SD_EVENT_ONESHOT);
}
- return sd_event_add_monotonic(UNIT(m)->manager->event, &m->timer_event_source, now(CLOCK_MONOTONIC) + m->timeout_usec, 0, mount_dispatch_timer, m);
+ return sd_event_add_time(
+ UNIT(m)->manager->event,
+ &m->timer_event_source,
+ CLOCK_MONOTONIC,
+ now(CLOCK_MONOTONIC) + m->timeout_usec, 0,
+ mount_dispatch_timer, m);
}
static void mount_unwatch_control_pid(Mount *m) {
mount_parameters_done(&m->parameters_proc_self_mountinfo);
mount_parameters_done(&m->parameters_fragment);
- cgroup_context_done(&m->cgroup_context);
- exec_context_done(&m->exec_context);
m->exec_runtime = exec_runtime_unref(m->exec_runtime);
exec_command_done_array(m->exec_command, _MOUNT_EXEC_COMMAND_MAX);
m->control_command = NULL;
path_kill_slashes(m->where);
- r = unit_add_exec_dependencies(u, &m->exec_context);
- if (r < 0)
- return r;
-
if (!u->description) {
r = unit_set_description(u, m->where);
if (r < 0)
if (r < 0)
return r;
- if (u->default_dependencies) {
- r = mount_add_default_dependencies(m);
- if (r < 0)
- return r;
- }
+ r = unit_patch_contexts(u);
+ if (r < 0)
+ return r;
- r = unit_add_default_slice(u);
+ r = unit_add_exec_dependencies(u, &m->exec_context);
if (r < 0)
return r;
- r = mount_fix_timeouts(m);
+ r = unit_add_default_slice(u, &m->cgroup_context);
if (r < 0)
return r;
- r = unit_exec_context_patch_defaults(u, &m->exec_context);
+ r = mount_fix_timeouts(m);
if (r < 0)
return r;
+ if (u->default_dependencies) {
+ r = mount_add_default_dependencies(m);
+ if (r < 0)
+ return r;
+ }
+
return 0;
}