summaryrefslogtreecommitdiff
path: root/src/cryptsetup
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/cryptsetup
parentcb515608030fe05f4a46ed32e1cd30aaca6e3381 (diff)
downloadsystemd-7cecc563163f539c497ecdf5ab00729fcd8c97c1.tar.gz
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/cryptsetup')
-rw-r--r--src/cryptsetup/cryptsetup-generator.c22
1 files changed, 9 insertions, 13 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;
}