File systemd-udevadm-settle-for-lvm2-activation-net.servi.patch of Package lvm2.1005
From e7feaa645cc6262247bf6d30a6d1d8af69324be3 Mon Sep 17 00:00:00 2001
From: Liuhua Wang <lwang@suse.com>
Date: Mon, 28 Sep 2015 16:11:26 +0800
Subject: [PATCH] systemd: udevadm settle for lvm2-activation-net.service
In case lvmetad is not used, we need to wait for udev to complete
after net-attached storage is initialized (after iscsi/fcoe service).
N.B. This also requires the storage to be attached synchronously
in the kernel itself.
References: bnc#946651
commit: a03609dee4770f2453b1f5cb851e2169c539b1e4
---
scripts/lvm2_activation_generator_systemd_red_hat.c | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/scripts/lvm2_activation_generator_systemd_red_hat.c b/scripts/lvm2_activation_generator_systemd_red_hat.c
index ea41d92..5eacd4f 100644
--- a/scripts/lvm2_activation_generator_systemd_red_hat.c
+++ b/scripts/lvm2_activation_generator_systemd_red_hat.c
@@ -130,21 +130,23 @@ static int generate_unit(const char *dir, int unit)
if (unit == UNIT_NET) {
fputs("After=iscsi.service fcoe.service\n"
- "Before=remote-fs.target shutdown.target\n", f);
+ "Before=remote-fs.target shutdown.target\n\n"
+ "[Service]\n"
+ "ExecStartPre=/usr/bin/udevadm settle\n", f);
} else {
if (unit == UNIT_EARLY) {
- fputs("After=systemd-udev-settle.service\n", f);
- fputs("Before=cryptsetup.target\n", f);
+ fputs("After=systemd-udev-settle.service\n"
+ "Before=cryptsetup.target\n", f);
} else
fputs("After=lvm2-activation-early.service cryptsetup.target\n", f);
fputs("Before=local-fs.target shutdown.target\n"
- "Wants=systemd-udev-settle.service\n\n", f);
+ "Wants=systemd-udev-settle.service\n\n"
+ "[Service]\n", f);
}
- fputs("[Service]\n"
- "ExecStart=/sbin/lvm vgchange -aay --sysinit\n"
- "Type=oneshot\n", f);
+ fputs("ExecStart=/sbin/lvm vgchange -aay --sysinit\n"
+ "Type=oneshot\n", f);
if (fclose(f) < 0) {
kmsg("LVM: Failed to write unit file %s: %m.\n", unit_name);
--
1.8.4.5