X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fmount.c;h=ba85d8c0a42d2d4f26b732fe9113295000e455a9;hp=5b0bc6bdf01e6f22343922d8cd1c034600479956;hb=75d287d3aef51baac189395d0ca6e2271ba4d604;hpb=2edd4434e5bc6e5c7948df742d82f4bcd6c415f3 diff --git a/src/mount.c b/src/mount.c index 5b0bc6bdf..ba85d8c0a 100644 --- a/src/mount.c +++ b/src/mount.c @@ -279,14 +279,14 @@ static int mount_add_default_dependencies(Mount *m) { assert(m); - if (m->meta.manager->running_as == MANAGER_SYSTEM) { + if (m->meta.manager->running_as == MANAGER_SYSTEM && + !path_equal(m->where, "/")) { - if ((r = unit_add_dependency_by_name(UNIT(m), UNIT_AFTER, SPECIAL_SYSINIT_TARGET, NULL, true)) < 0) + if ((r = unit_add_dependency_by_name(UNIT(m), UNIT_AFTER, SPECIAL_FSCK_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; + if ((r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true)) < 0) + return r; } return 0; @@ -962,7 +962,8 @@ static void mount_sigchld_event(Unit *u, pid_t pid, int code, int status) { m->control_command_id = _MOUNT_EXEC_COMMAND_INVALID; } - log_debug("%s control process exited, code=%s status=%i", u->meta.id, sigchld_code_to_string(code), status); + log_full(success ? LOG_DEBUG : LOG_NOTICE, + "%s mount process exited, code=%s status=%i", u->meta.id, sigchld_code_to_string(code), status); /* Note that mount(8) returning and the kernel sending us a * mount table change event might happen out-of-order. If an @@ -1537,6 +1538,17 @@ finish: return r; } +static void mount_reset_maintenance(Unit *u) { + Mount *m = MOUNT(u); + + assert(m); + + if (m->state == MOUNT_MAINTENANCE) + mount_set_state(m, MOUNT_DEAD); + + m->failure = false; +} + static const char* const mount_state_table[_MOUNT_STATE_MAX] = { [MOUNT_DEAD] = "dead", [MOUNT_MOUNTING] = "mounting", @@ -1594,6 +1606,8 @@ const UnitVTable mount_vtable = { .sigchld_event = mount_sigchld_event, .timer_event = mount_timer_event, + .reset_maintenance = mount_reset_maintenance, + .bus_message_handler = bus_mount_message_handler, .enumerate = mount_enumerate,