cryptsetup-generator: unconfuse writing of the device timeout
The code was using timeout=0 as the default option string. This option string was ultimately passed to generator_write_timeouts(), which only looks for comment=systemd.device-timeout= or x-systemd.device-timeout=, i.e. the whole call path was bogus. Let's rework this: generator_write_timeouts() now writes any timeouts if configured by the user. create_disk() writes out it's own timeout, but with lower priority. Since the code path that was calling timeout=0 was not effective, the only change is that we stop overwriting the timeout if explicitly configured by the user. In both code paths, ignore failure to write.
This commit is contained in:
parent
cb51560803
commit
7cecc56316
|
@ -362,7 +362,7 @@ static int create_disk(
|
|||
|
||||
r = generator_write_timeouts(arg_dest, device, name, options, &filtered);
|
||||
if (r < 0)
|
||||
return r;
|
||||
log_warning_errno(r, "Failed to write device timeout drop-in: %m");
|
||||
|
||||
if (filtered) {
|
||||
filtered_escaped = specifier_escape(filtered);
|
||||
|
@ -415,11 +415,11 @@ static int create_disk(
|
|||
return r;
|
||||
|
||||
if (!noauto && !nofail) {
|
||||
r = write_drop_in(arg_dest, dmname, 90, "device-timeout",
|
||||
"# Automatically generated by systemd-cryptsetup-generator \n\n"
|
||||
r = write_drop_in(arg_dest, dmname, 40, "device-timeout",
|
||||
"# Automatically generated by systemd-cryptsetup-generator\n\n"
|
||||
"[Unit]\nJobTimeoutSec=0");
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to write device drop-in: %m");
|
||||
log_warning_errno(r, "Failed to write device timeout drop-in: %m");
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -646,7 +646,6 @@ static int add_proc_cmdline_devices(void) {
|
|||
crypto_device *d;
|
||||
|
||||
HASHMAP_FOREACH(d, arg_disks, i) {
|
||||
const char *options;
|
||||
_cleanup_free_ char *device = NULL;
|
||||
|
||||
if (!d->create)
|
||||
|
@ -662,14 +661,11 @@ static int add_proc_cmdline_devices(void) {
|
|||
if (!device)
|
||||
return log_oom();
|
||||
|
||||
if (d->options)
|
||||
options = d->options;
|
||||
else if (arg_default_options)
|
||||
options = arg_default_options;
|
||||
else
|
||||
options = "timeout=0";
|
||||
|
||||
r = create_disk(d->name, device, d->keyfile ?: arg_default_keyfile, d->keydev, options);
|
||||
r = create_disk(d->name,
|
||||
device,
|
||||
d->keyfile ?: arg_default_keyfile,
|
||||
d->keydev,
|
||||
d->options ?: arg_default_options);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
|
|
@ -237,10 +237,12 @@ int generator_write_timeouts(
|
|||
return log_error_errno(r, "Failed to make unit name from path: %m");
|
||||
|
||||
return write_drop_in_format(dir, unit, 50, "device-timeout",
|
||||
"# Automatically generated by %s\n\n"
|
||||
"# Automatically generated by %s\n"
|
||||
"# from supplied options \"%s\"\n\n"
|
||||
"[Unit]\n"
|
||||
"JobRunningTimeoutSec=%s",
|
||||
program_invocation_short_name,
|
||||
opts,
|
||||
timeout);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue