diff --git a/man/org.freedesktop.systemd1.xml b/man/org.freedesktop.systemd1.xml index f821d6562a..120ffbc8ef 100644 --- a/man/org.freedesktop.systemd1.xml +++ b/man/org.freedesktop.systemd1.xml @@ -426,6 +426,8 @@ node /org/freedesktop/systemd1 { @org.freedesktop.DBus.Property.EmitsChangedSignal("false") readonly t DefaultTimeoutAbortUSec = ...; @org.freedesktop.DBus.Property.EmitsChangedSignal("const") + readonly t DefaultDeviceTimeoutUSec = ...; + @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly t DefaultRestartUSec = ...; @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly t DefaultStartLimitIntervalUSec = ...; @@ -674,6 +676,8 @@ node /org/freedesktop/systemd1 { + + @@ -1082,6 +1086,8 @@ node /org/freedesktop/systemd1 { + + diff --git a/man/systemd-system.conf.xml b/man/systemd-system.conf.xml index ef311f1971..065bbd5a64 100644 --- a/man/systemd-system.conf.xml +++ b/man/systemd-system.conf.xml @@ -370,6 +370,17 @@ 100ms. + + DefaultDeviceTimeoutSec= + + Configures the default timeout for waiting for devices. It can be changed per + device via the x-systemd.device-timeout= option in /etc/fstab + and /etc/crypttab (see + systemd.mount5, + crypttab5). + Defaults to 90s. + + DefaultStartLimitIntervalSec= DefaultStartLimitBurst= diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c index 52521c4146..95defd36a3 100644 --- a/src/core/dbus-manager.c +++ b/src/core/dbus-manager.c @@ -2791,6 +2791,7 @@ const sd_bus_vtable bus_manager_vtable[] = { SD_BUS_PROPERTY("DefaultTimeoutStartUSec", "t", bus_property_get_usec, offsetof(Manager, default_timeout_start_usec), SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("DefaultTimeoutStopUSec", "t", bus_property_get_usec, offsetof(Manager, default_timeout_stop_usec), SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("DefaultTimeoutAbortUSec", "t", property_get_default_timeout_abort_usec, 0, 0), + SD_BUS_PROPERTY("DefaultDeviceTimeoutUSec", "t", bus_property_get_usec, offsetof(Manager, default_device_timeout_usec), SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("DefaultRestartUSec", "t", bus_property_get_usec, offsetof(Manager, default_restart_usec), SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("DefaultStartLimitIntervalUSec", "t", bus_property_get_usec, offsetof(Manager, default_start_limit_interval), SD_BUS_VTABLE_PROPERTY_CONST), /* The following two items are obsolete alias */ diff --git a/src/core/device.c b/src/core/device.c index 4f9bf24db8..c18a40a494 100644 --- a/src/core/device.c +++ b/src/core/device.c @@ -101,7 +101,7 @@ static void device_init(Unit *u) { * indefinitely for plugged in devices, something which cannot * happen for the other units since their operations time out * anyway. */ - u->job_running_timeout = u->manager->default_timeout_start_usec; + u->job_running_timeout = u->manager->default_device_timeout_usec; u->ignore_on_isolate = true; diff --git a/src/core/main.c b/src/core/main.c index 9ad3983b20..467e1dd57c 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -134,6 +134,7 @@ static usec_t arg_default_restart_usec; static usec_t arg_default_timeout_start_usec; static usec_t arg_default_timeout_stop_usec; static usec_t arg_default_timeout_abort_usec; +static usec_t arg_default_device_timeout_usec; static bool arg_default_timeout_abort_set; static usec_t arg_default_start_limit_interval; static unsigned arg_default_start_limit_burst; @@ -627,6 +628,7 @@ static int parse_config_file(void) { { "Manager", "DefaultTimeoutStartSec", config_parse_sec, 0, &arg_default_timeout_start_usec }, { "Manager", "DefaultTimeoutStopSec", config_parse_sec, 0, &arg_default_timeout_stop_usec }, { "Manager", "DefaultTimeoutAbortSec", config_parse_default_timeout_abort, 0, NULL }, + { "Manager", "DefaultDeviceTimeoutSec", config_parse_sec, 0, &arg_default_device_timeout_usec }, { "Manager", "DefaultRestartSec", config_parse_sec, 0, &arg_default_restart_usec }, { "Manager", "DefaultStartLimitInterval", config_parse_sec, 0, &arg_default_start_limit_interval }, /* obsolete alias */ { "Manager", "DefaultStartLimitIntervalSec", config_parse_sec, 0, &arg_default_start_limit_interval }, @@ -716,6 +718,7 @@ static void set_manager_defaults(Manager *m) { m->default_timeout_stop_usec = arg_default_timeout_stop_usec; m->default_timeout_abort_usec = arg_default_timeout_abort_usec; m->default_timeout_abort_set = arg_default_timeout_abort_set; + m->default_device_timeout_usec = arg_default_device_timeout_usec; m->default_restart_usec = arg_default_restart_usec; m->default_start_limit_interval = arg_default_start_limit_interval; m->default_start_limit_burst = arg_default_start_limit_burst; @@ -2389,6 +2392,7 @@ static void reset_arguments(void) { arg_default_timeout_stop_usec = DEFAULT_TIMEOUT_USEC; arg_default_timeout_abort_usec = DEFAULT_TIMEOUT_USEC; arg_default_timeout_abort_set = false; + arg_default_device_timeout_usec = DEFAULT_TIMEOUT_USEC; arg_default_start_limit_interval = DEFAULT_START_LIMIT_INTERVAL; arg_default_start_limit_burst = DEFAULT_START_LIMIT_BURST; arg_runtime_watchdog = 0; diff --git a/src/core/manager.c b/src/core/manager.c index f153641510..d21698a99b 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -835,6 +835,7 @@ int manager_new(LookupScope scope, ManagerTestRunFlags test_run_flags, Manager * .default_timeout_start_usec = DEFAULT_TIMEOUT_USEC, .default_timeout_stop_usec = DEFAULT_TIMEOUT_USEC, .default_restart_usec = DEFAULT_RESTART_USEC, + .default_device_timeout_usec = DEFAULT_TIMEOUT_USEC, .original_log_level = -1, .original_log_target = _LOG_TARGET_INVALID, diff --git a/src/core/manager.h b/src/core/manager.h index e4603daff2..ab4b30cfe7 100644 --- a/src/core/manager.h +++ b/src/core/manager.h @@ -356,6 +356,7 @@ struct Manager { ExecOutput default_std_output, default_std_error; usec_t default_restart_usec, default_timeout_start_usec, default_timeout_stop_usec; + usec_t default_device_timeout_usec; usec_t default_timeout_abort_usec; bool default_timeout_abort_set; diff --git a/src/core/system.conf.in b/src/core/system.conf.in index ae1b47b2ba..318c034826 100644 --- a/src/core/system.conf.in +++ b/src/core/system.conf.in @@ -46,6 +46,7 @@ #DefaultTimeoutStartSec=90s #DefaultTimeoutStopSec=90s #DefaultTimeoutAbortSec= +#DefaultDeviceTimeoutSec=90s #DefaultRestartSec=100ms #DefaultStartLimitIntervalSec=10s #DefaultStartLimitBurst=5