#include "mkdir.h"
#include "strv.h"
#include "fileio.h"
+#include "path-util.h"
+#include "dropin.h"
+#include "generator.h"
static const char *arg_dest = "/tmp";
static bool arg_enabled = true;
const char *password,
const char *options) {
- _cleanup_free_ char *p = NULL, *n = NULL, *d = NULL, *u = NULL, *to = NULL, *e = NULL;
+ _cleanup_free_ char *p = NULL, *n = NULL, *d = NULL, *u = NULL, *to = NULL, *e = NULL,
+ *filtered = NULL;
_cleanup_fclose_ FILE *f = NULL;
bool noauto, nofail, tmp, swap;
char *from;
"Conflicts=umount.target\n"
"BindsTo=dev-mapper-%i.device\n"
"IgnoreOnIsolate=true\n"
- "After=systemd-readahead-collect.service systemd-readahead-replay.service\n",
+ "After=cryptsetup-pre.target\n",
f);
if (!nofail)
if (!uu)
return log_oom();
- if (is_device_path(uu)) {
- _cleanup_free_ char *dd;
+ if (!path_equal(uu, "/dev/null")) {
- dd = unit_name_from_path(uu, ".device");
- if (!dd)
- return log_oom();
+ if (is_device_path(uu)) {
+ _cleanup_free_ char *dd;
- fprintf(f, "After=%1$s\nRequires=%1$s\n", dd);
- } else
- fprintf(f, "RequiresMountsFor=%s\n", password);
+ dd = unit_name_from_path(uu, ".device");
+ if (!dd)
+ return log_oom();
+
+ fprintf(f, "After=%1$s\nRequires=%1$s\n", dd);
+ } else
+ fprintf(f, "RequiresMountsFor=%s\n", password);
+ }
}
}
"RequiresMountsFor=%s\n",
u);
+ r = generator_write_timeouts(arg_dest, device, name, options, &filtered);
+ if (r < 0)
+ return r;
+
fprintf(f,
"\n[Service]\n"
"Type=oneshot\n"
"TimeoutSec=0\n" /* the binary handles timeouts anyway */
"ExecStart=" SYSTEMD_CRYPTSETUP_PATH " attach '%s' '%s' '%s' '%s'\n"
"ExecStop=" SYSTEMD_CRYPTSETUP_PATH " detach '%s'\n",
- name, u, strempty(password), strempty(options),
+ name, u, strempty(password), strempty(filtered),
name);
if (tmp)
}
if (!noauto && !nofail) {
-
- free(p);
- p = strjoin(arg_dest, "/dev-mapper-", e, ".device.d/50-job-timeout-sec-0.conf", NULL);
- if (!p)
- return log_oom();
-
- mkdir_parents_label(p, 0755);
- r = write_string_file(p,
- "# Automatically generated by systemd-cryptsetup-generator\n\n"
- "[Unit]\n"
- "JobTimeoutSec=0\n"); /* the binary handles timeouts anyway */
+ r = write_drop_in(arg_dest, name, 90, "device-timeout",
+ "# Automatically generated by systemd-cryptsetup-generator \n\n"
+ "[Unit]\nJobTimeoutSec=0");
if (r < 0) {
log_error("Failed to write device drop-in: %s", strerror(-r));
return r;
if (!arg_keyfile)
return log_oom();
- } else if (startswith(key, "luks.") || startswith(key, "rd.luks."))
- log_warning("Unknown kernel switch %s. Ignoring.", key);
+ }
return 0;
}
if (k == 2 && streq(proc_uuid, device + 5)) {
free(options);
options = strdup(p);
- if (!proc_options) {
+ if (!options) {
log_oom();
goto cleanup;
}