summaryrefslogtreecommitdiff
path: root/core/systemd/0001-cryptsetup-generator-auto-add-deps-for-device-as-pas.patch
diff options
context:
space:
mode:
Diffstat (limited to 'core/systemd/0001-cryptsetup-generator-auto-add-deps-for-device-as-pas.patch')
-rw-r--r--core/systemd/0001-cryptsetup-generator-auto-add-deps-for-device-as-pas.patch45
1 files changed, 45 insertions, 0 deletions
diff --git a/core/systemd/0001-cryptsetup-generator-auto-add-deps-for-device-as-pas.patch b/core/systemd/0001-cryptsetup-generator-auto-add-deps-for-device-as-pas.patch
new file mode 100644
index 000000000..dd8c9ff74
--- /dev/null
+++ b/core/systemd/0001-cryptsetup-generator-auto-add-deps-for-device-as-pas.patch
@@ -0,0 +1,45 @@
+From 66a5dbdf282435403f947c2caadd04bb0cdec752 Mon Sep 17 00:00:00 2001
+From: Dave Reisner <dreisner@archlinux.org>
+Date: Sat, 8 Feb 2014 12:54:58 -0500
+Subject: [PATCH] cryptsetup-generator: auto add deps for device as password
+
+If the password is a device file, we can add Requires/After dependencies
+on the device rather than requiring the user to do so.
+---
+ src/cryptsetup/cryptsetup-generator.c | 20 +++++++++++++++-----
+ 1 file changed, 15 insertions(+), 5 deletions(-)
+
+diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c
+index 9c98f0b..46ad9b8 100644
+--- a/src/cryptsetup/cryptsetup-generator.c
++++ b/src/cryptsetup/cryptsetup-generator.c
+@@ -130,11 +130,21 @@ static int create_disk(
+ streq(password, "/dev/random") ||
+ streq(password, "/dev/hw_random"))
+ fputs("After=systemd-random-seed.service\n", f);
+- else if (!streq(password, "-") &&
+- !streq(password, "none"))
+- fprintf(f,
+- "RequiresMountsFor=%s\n",
+- password);
++
++ else if (!streq(password, "-") && !streq(password, "none")) {
++ _cleanup_free_ char *uu = fstab_node_to_udev_node(password);
++ if (uu == NULL)
++ return log_oom();
++
++ if (is_device_path(uu)) {
++ _cleanup_free_ char *dd = unit_name_from_path(uu, ".device");
++ if (dd == NULL)
++ return log_oom();
++
++ fprintf(f, "After=%1$s\nRequires=%1$s\n", dd);
++ } else
++ fprintf(f, "RequiresMountsFor=%s\n", password);
++ }
+ }
+
+ if (is_device_path(u))
+--
+1.8.5.4
+