Note by Heming Zhao: this patch combines 0a726a7e268b3 & 03d6cfdd99fb
----
From 0a726a7e268b31856615491809af73bda5d4d6f9 Mon Sep 17 00:00:00 2001
From: Peter Rajnoha <prajnoha@redhat.com>
Date: Tue, 9 Apr 2019 12:40:55 +0200
Subject: [PATCH] systemd: add missing Before=shutdown.target to LVM2 services
 to fix shutdown ordering

We already used Conflicts=shutdown target to stop LVM2 services on shutdown.
But we still missed the ordering - the shutdown.target should be reached
only after all the services are really stopped.

Reported here: https://github.com/lvmteam/lvm2/issues/17
---
commit 03d6cfdd99fb1c2fd85721ab6faebbb1b6658873
Author: Peter Rajnoha <prajnoha@redhat.com>
Date:   Thu Apr 11 12:22:27 2019 +0200

    systemd: put back DefaultDependencies=no for lvmpolld and lvmetad socket unit
    
    Previous commit 0a726a7e268b31856615491809af73bda5d4d6f9 removed this
    by mistake - we have to keep the DefaultDependencies=no - the
    sockets.target is after sysinit.target.

---
 scripts/blk_availability_systemd_red_hat.service.in        | 1 +
 scripts/lvm2_activation_generator_systemd_red_hat.c        | 2 ++
 scripts/lvm2_cluster_activation_systemd_red_hat.service.in | 1 +
 scripts/lvm2_clvmd_systemd_red_hat.service.in              | 2 +-
 scripts/lvm2_cmirrord_systemd_red_hat.service.in           | 2 +-
 scripts/lvm2_lvmetad_systemd_red_hat.service.in            | 1 +
 scripts/lvm2_lvmpolld_systemd_red_hat.service.in           | 1 +
 scripts/lvm2_monitoring_systemd_red_hat.service.in         | 2 +-
 8 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/scripts/blk_availability_systemd_red_hat.service.in b/scripts/blk_availability_systemd_red_hat.service.in
index 9462072ccc..05fe2eee5b 100644
--- a/scripts/blk_availability_systemd_red_hat.service.in
+++ b/scripts/blk_availability_systemd_red_hat.service.in
@@ -1,5 +1,6 @@
 [Unit]
 Description=Availability of block devices
+Before=shutdown.target
 After=lvm2-activation.service lvm2-lvmetad.service iscsi-shutdown.service iscsi.service iscsid.service fcoe.service
 DefaultDependencies=no
 Conflicts=shutdown.target
diff --git a/scripts/lvm2_activation_generator_systemd_red_hat.c b/scripts/lvm2_activation_generator_systemd_red_hat.c
index 487582f1df..f85a28fe04 100644
--- a/scripts/lvm2_activation_generator_systemd_red_hat.c
+++ b/scripts/lvm2_activation_generator_systemd_red_hat.c
@@ -127,6 +127,8 @@ static int generate_unit(const char *dir, int unit, int sysinit_needed)
 	      "SourcePath=/etc/lvm/lvm.conf\n"
 	      "DefaultDependencies=no\n", f);
 
+	fputs("Conflicts=shutdown.target\n", f);
+
 	if (unit == UNIT_NET) {
 		fprintf(f, "After=%s iscsi.service fcoe.service\n"
 			"Before=remote-fs-pre.target shutdown.target\n\n"
diff --git a/scripts/lvm2_cluster_activation_systemd_red_hat.service.in b/scripts/lvm2_cluster_activation_systemd_red_hat.service.in
index bf4aa1eca6..6a966b3a5d 100644
--- a/scripts/lvm2_cluster_activation_systemd_red_hat.service.in
+++ b/scripts/lvm2_cluster_activation_systemd_red_hat.service.in
@@ -1,6 +1,7 @@
 [Unit]
 Description=Clustered LVM volumes activation service
 Requires=lvm2-clvmd.service
+Before=shutdown.target
 After=lvm2-clvmd.service lvm2-cmirrord.service
 OnFailure=lvm2-clvmd.service
 DefaultDependencies=no
diff --git a/scripts/lvm2_clvmd_systemd_red_hat.service.in b/scripts/lvm2_clvmd_systemd_red_hat.service.in
index ced27744e0..2af365f700 100644
--- a/scripts/lvm2_clvmd_systemd_red_hat.service.in
+++ b/scripts/lvm2_clvmd_systemd_red_hat.service.in
@@ -2,7 +2,7 @@
 Description=Clustered LVM daemon
 Documentation=man:clvmd(8)
 After=dlm.service corosync.service
-Before=remote-fs-pre.target
+Before=remote-fs-pre.target shutdown.target
 Requires=network.target dlm.service corosync.service
 RefuseManualStart=true
 RefuseManualStop=true
diff --git a/scripts/lvm2_cmirrord_systemd_red_hat.service.in b/scripts/lvm2_cmirrord_systemd_red_hat.service.in
index e482b9a99e..fc73aea4e9 100644
--- a/scripts/lvm2_cmirrord_systemd_red_hat.service.in
+++ b/scripts/lvm2_cmirrord_systemd_red_hat.service.in
@@ -3,7 +3,7 @@ Description=Clustered LVM mirror log daemon
 Documentation=man:cmirrord(8)
 Requires=corosync.service
 After=corosync.service
-Before=remote-fs-pre.target
+Before=remote-fs-pre.target shutdown.target
 DefaultDependencies=no
 Conflicts=shutdown.target
 
diff --git a/scripts/lvm2_lvmetad_systemd_red_hat.service.in b/scripts/lvm2_lvmetad_systemd_red_hat.service.in
index 92e6d695f1..960f32dab7 100644
--- a/scripts/lvm2_lvmetad_systemd_red_hat.service.in
+++ b/scripts/lvm2_lvmetad_systemd_red_hat.service.in
@@ -2,6 +2,7 @@
 Description=LVM2 metadata daemon
 Documentation=man:lvmetad(8)
 Requires=lvm2-lvmetad.socket
+Before=shutdown.target
 After=lvm2-lvmetad.socket
 DefaultDependencies=no
 Conflicts=shutdown.target
diff --git a/scripts/lvm2_lvmpolld_systemd_red_hat.service.in b/scripts/lvm2_lvmpolld_systemd_red_hat.service.in
index 4ad4e61990..a06cbe985f 100644
--- a/scripts/lvm2_lvmpolld_systemd_red_hat.service.in
+++ b/scripts/lvm2_lvmpolld_systemd_red_hat.service.in
@@ -2,6 +2,7 @@
 Description=LVM2 poll daemon
 Documentation=man:lvmpolld(8)
 Requires=lvm2-lvmpolld.socket
+Before=shutdown.target
 After=lvm2-lvmpolld.socket
 DefaultDependencies=no
 Conflicts=shutdown.target
diff --git a/scripts/lvm2_monitoring_systemd_red_hat.service.in b/scripts/lvm2_monitoring_systemd_red_hat.service.in
index ebc069e250..4bf87a0dd1 100644
--- a/scripts/lvm2_monitoring_systemd_red_hat.service.in
+++ b/scripts/lvm2_monitoring_systemd_red_hat.service.in
@@ -3,7 +3,7 @@ Description=Monitoring of LVM2 mirrors, snapshots etc. using dmeventd or progres
 Documentation=man:dmeventd(8) man:lvcreate(8) man:lvchange(8) man:vgchange(8)
 Requires=dm-event.socket lvm2-lvmetad.socket
 After=dm-event.socket dm-event.service lvm2-lvmetad.socket lvm2-activation.service lvm2-lvmetad.service
-Before=local-fs-pre.target
+Before=local-fs-pre.target shutdown.target
 DefaultDependencies=no
 Conflicts=shutdown.target
 
-- 
2.16.4

