diff --git a/_service b/_service
index 88cca9a..acf2f53 100644
--- a/_service
+++ b/_service
@@ -7,11 +7,12 @@
To update to a new release, change "revision" to the desired
git commit hash and bump "version" if necessary
+ This will download branch first instead of tag.
drbd-9.0
- 9.0.19~1
+ 9.0.20~1
-->
- 9.0.19~1+git.%h
- 8e93a5d93b62db7cb3657557e0dafa1c8a1b0cc6
+ 9.0.20~1+git.%h
+ drbd-9.0
diff --git a/drbd-9.0.19~1+git.8e93a5d9.tar.bz2 b/drbd-9.0.19~1+git.8e93a5d9.tar.bz2
deleted file mode 100644
index 16a7832..0000000
--- a/drbd-9.0.19~1+git.8e93a5d9.tar.bz2
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:3578c155c748ec0485d64a15d39734805278ba267302fe41f075fd74e367e6f5
-size 338041
diff --git a/drbd-9.0.20~1+git.7dce3c8b.tar.bz2 b/drbd-9.0.20~1+git.7dce3c8b.tar.bz2
new file mode 100644
index 0000000..ffc6e0f
--- /dev/null
+++ b/drbd-9.0.20~1+git.7dce3c8b.tar.bz2
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d8e52116da1c4e6b4150251740944e1a0558ca69420785306c8492f6b40c58d1
+size 341239
diff --git a/drbd.changes b/drbd.changes
index cd46fa3..9cb0627 100644
--- a/drbd.changes
+++ b/drbd.changes
@@ -1,3 +1,46 @@
+-------------------------------------------------------------------
+Fri Oct 11 02:32:09 UTC 2019 - nick wang
+
+- Update to drbd-9.0.20-1
+ * fix a case of false split brain detection if a diskless node promotes
+ multiple times, by aligning the rules for generating a new current-UUID
+ on a diskless nodes with them on a node with disk
+ * check if we still have quorum by exchanging a drbd-ping with peers
+ before creating new current UUID after loosing one peer
+ * fix after weak handling to not interfere with reconciliation resyncs
+ * retry connect when one of the relevant flags changes during UUID exchange
+ * fix reconciliation resync if one of the secondary got an current-UUID update
+ * fix resync to make progress after it was paused by an other resync operation
+ * fix false split-brains when a resync source changes current-UUID during
+ resync operation
+ * fix restore of D_OUTDATED when the resource first only attached and
+ then the peer objects are created (in contrast to the usual, new-peer,
+ attach, connect)
+ * abort creating new current-UUID when writing to meta-data fails in
+ the moment where the new-current-UUID should be written
+ * removed DRBD marking itself as read-only when secondary; this flag
+ was exposed using the BLKROGET ioctl; that should be left to user-land
+ use; recent KVM checks that flag, and does not dare auto-promote when
+ set by DRBD
+ * fix a small memory-leak when creating peer devices
+ * fix a possible information leak of kernel memory that pads net-link packets
+ * completing implications of "allow-remote-read=no"; i.e. when not to
+ create a new-current-UUID as read-write access to the data set was lost;
+ also fail both reads and writes if reads are no longer possible
+ * new option value "rr-conflict=retry-connect"; that helps in scenarios with
+ quorum where stopping a service takes longer than a temporarily network
+ outage and DRBD's reconnect
+ * code cleanups, introduced enums for remaining magic numbers
+ * new kernel-backward-compatibility framework based on spatch/coccinelle,
+ replacing an unmaintainable moloch of C preprocessor hell; Merged the
+ complete kernel-compat submodule
+ * ships with pre-computed compat-patches for main distros' kernels; in case
+ an other kernel is found it tries to use local spatch, if that is not
+ installed the build process tries to use a LINBIT hosted web service
+ to create the compat patch ("spatch-as-a-service").
+ * compat with up to Linux-5.3-rc2
+- Modify patch suse-coccinelle.patch to adopt spaas
+
-------------------------------------------------------------------
Wed Sep 20 08:22:12 UTC 2019 - nick wang
diff --git a/drbd.spec b/drbd.spec
index db74b48..7f48254 100644
--- a/drbd.spec
+++ b/drbd.spec
@@ -23,7 +23,7 @@
%endif
%endif
Name: drbd
-Version: 9.0.19~1+git.8e93a5d9
+Version: 9.0.20~1+git.7dce3c8b
Release: 0
Summary: Linux driver for the "Distributed Replicated Block Device"
License: GPL-2.0-or-later
@@ -86,14 +86,16 @@ ln -s ../scripts obj/
export WANT_DRBD_REPRODUCIBLE_BUILD=1
export CONFIG_BLK_DEV_DRBD=m
export EXTRA_CFLAGS='-DVERSION=\"%{version}\"'
-export ALWAYS_WANT_SPATCH='yes'
+# Unset SPAAS or set as 'true' will use `spatch-as-a-service` from drbd.io
+# when "coccinelle" not installed. Set SPAAS to 'false' to force an ERROR.
+export SPAAS='false'
for flavor in %{flavors_to_build}; do
rm -rf $flavor
cp -r source $flavor
cp %{_sourcedir}/Module.supported $flavor
export DRBDSRC="$PWD/obj/$flavor"
- make %{?_smp_mflags} -C %{kernel_source $flavor} modules M=$PWD/$flavor
+ make %{?_smp_mflags} -C %{kernel_source $flavor} modules M=$PWD/$flavor SPAAS=${SPAAS}
#Check the compat result
cat $PWD/$flavor/compat.h
diff --git a/drbd_git_revision b/drbd_git_revision
index b9c8c62..b44ca2b 100644
--- a/drbd_git_revision
+++ b/drbd_git_revision
@@ -1 +1 @@
-GIT-hash: 8e93a5d93b62db7cb3657557e0dafa1c8a1b0cc6
+GIT-hash: 7dce3c8be99f4912f1490f9bb37f5aff6c873335
diff --git a/suse-coccinelle.patch b/suse-coccinelle.patch
index 6b6e149..6c88918 100644
--- a/suse-coccinelle.patch
+++ b/suse-coccinelle.patch
@@ -1,44 +1,44 @@
-diff -Naur drbd-9.0.19~1+git.8e93a5d9.orig/drbd/Makefile drbd-9.0.19~1+git.8e93a5d9/drbd/Makefile
---- drbd-9.0.19~1+git.8e93a5d9.orig/drbd/Makefile 2019-09-23 13:27:35.397783666 +0800
-+++ drbd-9.0.19~1+git.8e93a5d9/drbd/Makefile 2019-09-23 13:30:43.378710223 +0800
-@@ -170,6 +170,9 @@
- ifeq ($(DRBD_BUILD_FROM_GIT),yes)
- sources := $(filter-out drbd_strings.c drbd_buildtag.c,$(wildcard *.c))
- sources += $(wildcard drbd-headers/linux/*.h)
-+else ifeq ($(ALWAYS_WANT_SPATCH),yes)
-+ sources := $(filter-out drbd_strings.c drbd_buildtag.c,$(wildcard *.c))
-+ sources += $(wildcard drbd-headers/linux/*.h)
- else
- sources :=
- endif
-@@ -196,9 +199,27 @@
- fi \
- done
- @echo " SPATCH $(chksum)"
-- @spatch --sp-file $(incdir)/.compat.cocci \
-- $(sources) \
-- --macro-file drbd-kernel-compat/cocci_macros.h > $@.tmp 2> $(incdir)/.spatch.stderr
-+ $(eval libpath := $(shell rpm -ql coccinelle|grep standard.h|xargs dirname))
-+ @echo " sources: $(sources)"
-+ @echo " libpath: $(libpath)"
-+ @touch $@.tmp
-+ @if [ -e $(incdir)/.compat.cocci ]; then \
-+ echo " GENCOCCIRULES .compat.cocci"; \
-+ cat $(incdir)/.compat.cocci; \
-+ spatch --sp-file $(incdir)/.compat.cocci \
-+ $(sources) \
-+ --macro-file drbd-kernel-compat/cocci_macros.h \
-+ --macro-file-builtins $(libpath)/standard.h \
-+ --iso-file $(libpath)/standard.iso >> $@.tmp 2> $(incdir)/.spatch.stderr; \
-+ fi
-+ @if [ -e $@.tmp ]; then \
-+ echo " GENSPATCHFILE $@.tmp"; \
-+ cat $@.tmp; \
-+ fi
-+ @if [ -e $(incdir)/.spatch.stderr ]; then \
-+ echo " GENSPATCHERR .spatch.stderr"; \
-+ cat $(incdir)/.spatch.stderr; \
-+ fi
- @if [ -e $(incdir)/.compat.patch ]; then \
- cat $(incdir)/.compat.patch >> $@.tmp; \
- fi
+diff -Naur drbd-9.0.20~0rc3+git.9c642cce.orig/drbd/drbd-kernel-compat/gen_compat_patch.sh drbd-9.0.20~0rc3+git.9c642cce/drbd/drbd-kernel-compat/gen_compat_patch.sh
+--- drbd-9.0.20~0rc3+git.9c642cce.orig/drbd/drbd-kernel-compat/gen_compat_patch.sh 2019-10-09 15:10:24.932509799 +0800
++++ drbd-9.0.20~0rc3+git.9c642cce/drbd/drbd-kernel-compat/gen_compat_patch.sh 2019-10-10 17:51:46.280918975 +0800
+@@ -41,6 +41,15 @@
+ < drbd-kernel-compat/cocci/debugfs_compat_template.cocci.in \
+ >> $incdir/.compat.cocci;
+ done;
++
++ echo " APPLIED_COCCI_FILES ";
++ cat $incdir/applied_cocci_files.txt;
++ coccilibpath=$(rpm -ql coccinelle|grep standard.h|xargs dirname);
++ echo " SPATCH_SOURCES: "$*;
++ echo " COCCI_LIBPATH: "$coccilibpath;
++ echo " GENCOCCIRULES .compat.cocci";
++ cat $incdir/.compat.cocci;
++
+ echo " SPATCH $chksum "$K;
+ # Note: $* (or $@) is NOT make magic variable now, this is a shell script
+ # make $@, the target file, was passed as $1, and is now $compat_patch
+@@ -49,7 +58,8 @@
+ # argument away this is shell $@ respectively $* now.
+ # we know we don't have white-space in the argument list
+
+- command="spatch --sp-file $incdir/.compat.cocci $* --macro-file drbd-kernel-compat/cocci_macros.h --very-quiet > $compat_patch.tmp 2> $incdir/.spatch.stderr;"
++ command="spatch --sp-file $incdir/.compat.cocci $* --macro-file drbd-kernel-compat/cocci_macros.h --macro-file-builtins $coccilibpath/standard.h --iso-file $coccilibpath/standard.iso --very-quiet > $compat_patch.tmp 2> $incdir/.spatch.stderr;"
++ echo " SPATCH COMMAND $command ";
+
+ if test -t 0; then
+ $SHELL -c "$command"
+@@ -59,6 +69,14 @@
+ # They may ignore INT and TERM; if you have to, use HUP.
+ /dev/null script --append $incdir/.spatch.tty.out --return --quiet --command "$command"
+ fi
++
++ echo " GENSPATCHFILE $compat_patch.tmp ";
++ cat $compat_patch.tmp;
++ if [ -e $incdir/.spatch.stderr ]; then
++ echo " GENSPATCHERR .spatch.stderr";
++ cat $incdir/.spatch.stderr;
++ fi
++
+ if [ -e $incdir/.compat.patch ]; then
+ cat $incdir/.compat.patch >> $compat_patch.tmp;
+ fi;