summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2019-12-03 16:06:47 +0100
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2019-12-03 17:20:19 +0100
commit7cecc563163f539c497ecdf5ab00729fcd8c97c1 (patch)
tree426dd98779262ebe7dabeacf538bd2cfc162cd84 /src
parentMerge pull request #14216 from jwrdegoede/hwdb-teclast-sensors (diff)
downloadsystemd-7cecc563163f539c497ecdf5ab00729fcd8c97c1.tar.xz
systemd-7cecc563163f539c497ecdf5ab00729fcd8c97c1.zip
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.
Diffstat (limited to 'src')
-rw-r--r--src/cryptsetup/cryptsetup-generator.c22
-rw-r--r--src/shared/generator.c4
2 files changed, 12 insertions, 14 deletions
diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c
index 811a9468c1..bf7a0fb2d5 100644
--- a/src/cryptsetup/cryptsetup-generator.c
+++ b/src/cryptsetup/cryptsetup-generator.c
@@ -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;
}
diff --git a/src/shared/generator.c b/src/shared/generator.c
index 5b571681f2..06e1ab8031 100644
--- a/src/shared/generator.c
+++ b/src/shared/generator.c
@@ -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);
}