X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fcore%2Fmount.c;h=45c0040bd1e0541f30086518b748aa6fc9b4d08d;hp=bce50548bf3cef11577fc7a8e5984dc4c49a8d8f;hb=5c56a259e07661a66e806cc2fbc71de96a75f78e;hpb=057d9ab8f016edfe692b7b3e84fdf6e0e000bacd diff --git a/src/core/mount.c b/src/core/mount.c index bce50548b..45c0040bd 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -854,8 +854,14 @@ static void mount_enter_signal(Mount *m, MountState state, MountResult f) { goto fail; mount_set_state(m, state); - } else if (state == MOUNT_REMOUNTING_SIGTERM || state == MOUNT_REMOUNTING_SIGKILL) + } else if (state == MOUNT_REMOUNTING_SIGTERM) + mount_enter_signal(m, MOUNT_REMOUNTING_SIGKILL, MOUNT_SUCCESS); + else if (state == MOUNT_REMOUNTING_SIGKILL) mount_enter_mounted(m, MOUNT_SUCCESS); + else if (state == MOUNT_MOUNTING_SIGTERM) + mount_enter_signal(m, MOUNT_MOUNTING_SIGKILL, MOUNT_SUCCESS); + else if (state == MOUNT_UNMOUNTING_SIGTERM) + mount_enter_signal(m, MOUNT_UNMOUNTING_SIGKILL, MOUNT_SUCCESS); else mount_enter_dead(m, MOUNT_SUCCESS); @@ -1583,6 +1589,20 @@ static void mount_shutdown(Manager *m) { } } +static int mount_get_timeout(Unit *u, uint64_t *timeout) { + Mount *m = MOUNT(u); + int r; + + if (!m->timer_event_source) + return 0; + + r = sd_event_source_get_time(m->timer_event_source, timeout); + if (r < 0) + return r; + + return 1; +} + static int mount_enumerate(Manager *m) { int r; assert(m); @@ -1796,6 +1816,8 @@ const UnitVTable mount_vtable = { .bus_set_property = bus_mount_set_property, .bus_commit_properties = bus_mount_commit_properties, + .get_timeout = mount_get_timeout, + .enumerate = mount_enumerate, .shutdown = mount_shutdown,