diff --git a/_service b/_service
index d6719a7..e47f7b1 100644
--- a/_service
+++ b/_service
@@ -5,10 +5,10 @@
drbd-utils
- 9.13.0+git.%h
+ 9.18.0+git.%h
master
diff --git a/drbd-utils-9.14.0.tar.gz b/drbd-utils-9.14.0.tar.gz
deleted file mode 100644
index 1d87484..0000000
--- a/drbd-utils-9.14.0.tar.gz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:01fa37d6dbf4bb9e7007db11ec13d0d376f9701ab3393fe221789d5368b9a078
-size 1224291
diff --git a/drbd-utils-9.18.0.tar.gz b/drbd-utils-9.18.0.tar.gz
new file mode 100644
index 0000000..885c574
--- /dev/null
+++ b/drbd-utils-9.18.0.tar.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e4aab0d65104aac5fdb1371dc60f0b2afe80610836d8a888aec0748a6419a453
+size 1253169
diff --git a/drbd-utils.changes b/drbd-utils.changes
index 422741f..544c810 100644
--- a/drbd-utils.changes
+++ b/drbd-utils.changes
@@ -1,3 +1,36 @@
+-------------------------------------------------------------------
+Wed Jul 21 07:20:21 UTC 2021 - nick wang
+
+- Update to 9.18.0
+ * build: remove rpm related targets
+ * drbdsetup,v84: fix minor compile warnings
+ * systemd: resource specific activation
+ * systemd: drbd-reactor promoter templates
+ * doc: fix maximum ping timeout
+ * doc: add man pages for the systemd templates
+ * drbdadm,v9: fix dstate for diskless volumes
+ * build/release: use lbvers.py
+ * drbd-attr: don't leak fd to drbdsetup
+ * doc: various fixes and additions
+ * drbdsetup,events2,v9: add backing_device
+ * build,Debian: rm dh-systemd dependency
+ * drbdsetup,events2,v9: fix --poll regression
+ * drbdmeta: fix bug with ALs with small final extents
+ * build,Debian: rm mail recommends
+ * drbdsetup,events2,v9: allow --poll without --now
+ * drbdsetup,invalidate: allow bitmap based resync after verify
+ * drbdadm,sh-ll-dev: change output to "none" if diskless
+ * drbd-attr/may_promote: fixes from 9.15.1
+ * drbdadm,v9: allow set-gi in single node clusters
+ * drbsetup,events2,v9: diff(erential) output
+ * drbsetup,events2,v9: add --full output
+ * v9: allow resource rename, also in drbdmon
+ * drbdadm,v9: allow c-max-rate to be disabled
+ * New drbd-attr Pacemaker RA
+ * events2: handle mixed initial state and multicast events
+ * events2: fix regression to always print resync done
+- Add patch systemd-drbd-service-needs-network-online.patch
+
-------------------------------------------------------------------
Wed Apr 21 10:15:08 UTC 2021 - Matthias Gerstner
diff --git a/drbd-utils.spec b/drbd-utils.spec
index 04b6c33..45ad7b3 100644
--- a/drbd-utils.spec
+++ b/drbd-utils.spec
@@ -27,7 +27,7 @@
# Only need po4a to build man from git source code
%bcond_without prebuiltman
Name: drbd-utils
-Version: 9.14.0
+Version: 9.18.0
Release: 0
Summary: Distributed Replicated Block Device
License: GPL-2.0-or-later
@@ -41,6 +41,8 @@ Patch3: fence-after-pacemaker-down.patch
Patch4: 0001-Disable-quorum-in-default-configuration-bsc-1032142.patch
Patch5: move_fencing_from_disk_to_net_in_example.patch
Patch6: pie-fix.patch
+# In Upstream 9.18.0~9.19
+Patch7: systemd-drbd-service-needs-network-online.patch
Provides: drbd-bash-completion = %{version}
Provides: drbd-pacemaker = %{version}
@@ -91,6 +93,7 @@ raid 1. It is a building block for setting up clusters.
%patch4 -p1
%patch5 -p1
%patch6 -p1
+%patch7 -p1
%build
export WANT_DRBD_REPRODUCIBLE_BUILD=1
@@ -133,9 +136,25 @@ rm -rf %{buildroot}%{_sysconfdir}/xen
%pre
%service_add_pre drbd.service
+%service_add_pre drbd-lvchange@.service
+%service_add_pre drbd-promote@.service
+%service_add_pre drbd-reconfigure-suspend-or-error@.service
+%service_add_pre drbd-services@.target
+%service_add_pre drbd-wait-promotable@.service
+%service_add_pre drbd@.service
+%service_add_pre drbd@.target
+%service_add_pre ocf.ra@.service
%post
%service_add_post drbd.service
+%service_add_post drbd-lvchange@.service
+%service_add_post drbd-promote@.service
+%service_add_post drbd-reconfigure-suspend-or-error@.service
+%service_add_post drbd-services@.target
+%service_add_post drbd-wait-promotable@.service
+%service_add_post drbd@.service
+%service_add_post drbd@.target
+%service_add_post ocf.ra@.service
#May also overlap the $MAN_LINK in documentation/v9/Makefile.in
for f in drbd drbdadm drbdmeta drbdsetup; do
@@ -151,22 +170,38 @@ ln -sf drbdmon-9.0.8.gz %{_mandir}/ja/man8/drbdmon.8.gz
%preun
%service_del_preun drbd.service
+%service_del_preun drbd-lvchange@.service
+%service_del_preun drbd-promote@.service
+%service_del_preun drbd-reconfigure-suspend-or-error@.service
+%service_del_preun drbd-services@.target
+%service_del_preun drbd-wait-promotable@.service
+%service_del_preun drbd@.service
+%service_del_preun drbd@.target
+%service_del_preun ocf.ra@.service
%postun
%service_del_postun drbd.service
+%service_del_postun drbd-lvchange@.service
+%service_del_postun drbd-promote@.service
+%service_del_postun drbd-reconfigure-suspend-or-error@.service
+%service_del_postun drbd-services@.target
+%service_del_postun drbd-wait-promotable@.service
+%service_del_postun drbd@.service
+%service_del_postun drbd@.target
+%service_del_postun ocf.ra@.service
%files -n drbd-utils
-%defattr(-, root, root)
%config(noreplace) %{_sysconfdir}/drbd.conf
%config %{_sysconfdir}/bash_completion.d/drbdadm.sh
%config(noreplace) %{_sysconfdir}/drbd.d/global_common.conf
%config(noreplace) %{_sysconfdir}/multipath/conf.d/drbd.conf
%{_tmpfilesdir}/drbd.conf
-%doc %{_mandir}/man5/drbd.*
-%doc %{_mandir}/man8/drbd*
-%doc %{_mandir}/man7/ocf_linbit_drbd.*
-%doc %{_mandir}/ja/man5/drbd.*
-%doc %{_mandir}/ja/man8/drbd*
+%{_mandir}/man5/drbd.*
+%{_mandir}/man8/drbd*
+%{_mandir}/man7/ocf*
+%{_mandir}/man7/drbd*
+%{_mandir}/ja/man5/drbd.*
+%{_mandir}/ja/man8/drbd*
%license COPYING
%doc README.md
%doc ChangeLog
@@ -186,17 +221,24 @@ ln -sf drbdmon-9.0.8.gz %{_mandir}/ja/man8/drbdmon.8.gz
%attr(755,root,root) %{_sysconfdir}/xen/scripts/block-drbd
%endif
%{_prefix}/lib/ocf/resource.d/linbit/drbd
+%{_prefix}/lib/ocf/resource.d/linbit/drbd-attr
%{_prefix}/lib/ocf/resource.d/linbit/drbd.shellfuncs.sh
%{_udevrulesdir}/65-drbd.rules
%{_unitdir}/drbd.service
-%{_prefix}/lib/systemd/system/drbd.service
-%defattr(-, root, root)
+%{_unitdir}/drbd-lvchange@.service
+%{_unitdir}/drbd-promote@.service
+%{_unitdir}/drbd-reconfigure-suspend-or-error@.service
+%{_unitdir}/drbd-services@.target
+%{_unitdir}/drbd-wait-promotable@.service
+%{_unitdir}/drbd@.service
+%{_unitdir}/drbd@.target
+%{_unitdir}/ocf.ra@.service
%{_localstatedir}/lib/drbd
%{_prefix}/lib/drbd
/lib/drbd
-/lib/drbd/drbd*
%dir %{_prefix}/lib/ocf
%dir %{_prefix}/lib/ocf/resource.d
%dir %{_prefix}/lib/ocf/resource.d/linbit
+%ghost %{_rundir}/drbd
%changelog
diff --git a/systemd-drbd-service-needs-network-online.patch b/systemd-drbd-service-needs-network-online.patch
new file mode 100644
index 0000000..7e53c76
--- /dev/null
+++ b/systemd-drbd-service-needs-network-online.patch
@@ -0,0 +1,56 @@
+From b360f7680429326ba30ac94a71deec1d6ff5c6e5 Mon Sep 17 00:00:00 2001
+From: Lars Ellenberg
+Date: Fri, 16 Jul 2021 15:23:55 +0200
+Subject: [PATCH 1/2] systemd: drbd@.service needs to pull in
+ network-online.target
+
+Otherwise during early boot it may be asked to configure the IP before it is available.
+---
+ documentation/v9/drbd@.service.adoc | 6 ++++++
+ scripts/drbd@.service | 13 +++++++++++++
+ 2 files changed, 19 insertions(+)
+
+diff --git a/documentation/v9/drbd@.service.adoc b/documentation/v9/drbd@.service.adoc
+index 0358591b..d0d18b16 100644
+--- a/documentation/v9/drbd@.service.adoc
++++ b/documentation/v9/drbd@.service.adoc
+@@ -17,6 +17,12 @@ This service unit is part of **drbd@**__RESNAME__**.target**,
+ and used to configure/reconfigure/unconfigure the DRBD __RESNAME__
+ on start/reload/stop.
+
++Since we want the network to be online before configuring DRBD,
++you may need to enable one of these:
++
++`systemctl enable systemd-networkd-wait-online.service` or
++`systemctl enable NetworkManager-wait-online.service`.
++
+ See Also
+ --------
+ linkgit:drbd@.target[7],
+diff --git a/scripts/drbd@.service b/scripts/drbd@.service
+index 70832e37..5f47d4cf 100644
+--- a/scripts/drbd@.service
++++ b/scripts/drbd@.service
+@@ -3,6 +3,19 @@ Description= (Re)configure DRBD resource %I
+
+ PartOf=drbd@%i.target
+
++# We really want the network to be online.
++# You may need to do one of
++# systemctl enable NetworkManager-wait-online.service
++# systemctl enable systemd-networkd-wait-online.service
++Wants=network-online.target sshd.service
++After=network-online.target nss-lookup.target sshd.service
++# If drbd-proxy is used, we want it to be running already.
++After=drbdproxy.service
++
++# This is not intended to be combined with pacemaker,
++# but if combined, it should be ordered before pacemaker.
++Before=pacemaker.service
++
+ #
+ # in an instantiation of this service,
+ # you may want to add "BindsTo=/dev/vg/lv" and "After=" for all backing devices
+--
+2.16.4
+