diff --git a/_service b/_service
index acf2f53..7319e84 100644
--- a/_service
+++ b/_service
@@ -9,9 +9,9 @@
This will download branch first instead of tag.
drbd-9.0
- 9.0.20~1
+ 9.0.21~1
-->
- 9.0.20~1+git.%h
+ 9.0.21~1+git.%h
drbd-9.0
diff --git a/drbd-9.0.20~1+git.7dce3c8b.tar.bz2 b/drbd-9.0.20~1+git.7dce3c8b.tar.bz2
deleted file mode 100644
index ffc6e0f..0000000
--- a/drbd-9.0.20~1+git.7dce3c8b.tar.bz2
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d8e52116da1c4e6b4150251740944e1a0558ca69420785306c8492f6b40c58d1
-size 341239
diff --git a/drbd-9.0.21~1+git.449d6bf2.tar.bz2 b/drbd-9.0.21~1+git.449d6bf2.tar.bz2
new file mode 100644
index 0000000..aab0ba5
--- /dev/null
+++ b/drbd-9.0.21~1+git.449d6bf2.tar.bz2
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e0a590f00b1c419cac0cd9bd961579cace01ccc54ff1a213f96a018d4f47a9ed
+size 341938
diff --git a/drbd.changes b/drbd.changes
index f311664..01a21f8 100644
--- a/drbd.changes
+++ b/drbd.changes
@@ -1,3 +1,26 @@
+-------------------------------------------------------------------
+Tue Feb 25 07:03:39 UTC 2020 - nick wang
+
+- Update to drbd-9.0.21-1, require coccinelle >= 1.0.8
+ * fix compat for write same on linux 4.9 and the Debian users
+ * fix kernel compat for linux 4.8 and 4.9; this mainly affected Debian
+ users; The symptoms where slow resync and resync getting stuck always at
+ the same point
+ * enable resync of lost and re-created backing devices (think lost node) when
+ the backing device was thinly provisioned and its current uuid is pre-set
+ to a 'day0 UUID' (by LINSTOR); that works by copying a unused bitmap slot
+ which tracks all changes since day 0
+ * fix attach when bitmap is on PMEM; before it was set to
+ 'all blocks out-of-sync' upon attach
+ * avoid doing reconciliation resync multiple times by updating the
+ resync target's dagtag after if completed successfully
+ * return disk-state from Outdated to UpToDate when it loses connection
+ while in WFBitMapT and we have a stable and UpToDate peer
+ * new option --force-resync flag can be passed to new-current-uuid, that
+ can be used to trigger initial resync without touching the role
+- Remove upstream drbd-update-resync-target-s-dagtag.patch
+- Modify patch suse-coccinelle.patch to adopt spaas
+
-------------------------------------------------------------------
Fri Jan 3 08:52:14 UTC 2020 - nick wang
diff --git a/drbd.spec b/drbd.spec
index 3845fd9..ef314b8 100644
--- a/drbd.spec
+++ b/drbd.spec
@@ -23,7 +23,7 @@
%endif
%endif
Name: drbd
-Version: 9.0.20~1+git.7dce3c8b
+Version: 9.0.21~1+git.449d6bf2
Release: 0
Summary: Linux driver for the "Distributed Replicated Block Device"
License: GPL-2.0-or-later
@@ -36,12 +36,11 @@ Source3: drbd_git_revision
Patch1: fix-resync-finished-with-syncs-have-bits-set.patch
Patch2: rely-on-sb-handlers.patch
Patch3: drbd-fix-zero-metadata-limit-by-page-size-misaligned.patch
-Patch4: drbd-update-resync-target-s-dagtag.patch
#In 61ff72f401680(v5.5-rc2), pr_warning is removed
-Patch5: without_pr_warning.patch
-Patch6: suse-coccinelle.patch
+Patch4: without_pr_warning.patch
+Patch99: suse-coccinelle.patch
#https://github.com/openSUSE/rpmlint-checks/blob/master/KMPPolicyCheck.py
-BuildRequires: coccinelle
+BuildRequires: coccinelle >= 1.0.8
BuildRequires: kernel-source
BuildRequires: kernel-syms
BuildRequires: libelf-devel
@@ -76,8 +75,7 @@ installed kernel.
%patch2 -p1
%patch3 -p1
%patch4 -p1
-%patch5 -p1
-%patch6 -p1
+%patch99 -p1
mkdir source
cp -a drbd/. source/. || :
diff --git a/drbd_git_revision b/drbd_git_revision
index b44ca2b..afaff3e 100644
--- a/drbd_git_revision
+++ b/drbd_git_revision
@@ -1 +1 @@
-GIT-hash: 7dce3c8be99f4912f1490f9bb37f5aff6c873335
+GIT-hash: 449d6bf22b01af7d14a297a4ed3e281aa84c94a5
diff --git a/suse-coccinelle.patch b/suse-coccinelle.patch
index 5e07dc2..4c2b814 100644
--- a/suse-coccinelle.patch
+++ b/suse-coccinelle.patch
@@ -1,60 +1,73 @@
-diff -Naur drbd-9.0.20~1+git.7dce3c8b.orig/drbd/drbd-kernel-compat/gen_compat_patch.sh drbd-9.0.20~1+git.7dce3c8b/drbd/drbd-kernel-compat/gen_compat_patch.sh
---- drbd-9.0.20~1+git.7dce3c8b.orig/drbd/drbd-kernel-compat/gen_compat_patch.sh 2020-01-09 13:38:00.998984586 +0800
-+++ drbd-9.0.20~1+git.7dce3c8b/drbd/drbd-kernel-compat/gen_compat_patch.sh 2020-01-09 13:38:10.407036976 +0800
-@@ -41,6 +41,15 @@
+diff -Naur drbd-9.0.21~1+git.449d6bf2.orig/drbd/drbd-kernel-compat/gen_compat_patch.sh drbd-9.0.21~1+git.449d6bf2/drbd/drbd-kernel-compat/gen_compat_patch.sh
+--- drbd-9.0.21~1+git.449d6bf2.orig/drbd/drbd-kernel-compat/gen_compat_patch.sh 2019-12-16 14:42:10.832866579 +0800
++++ drbd-9.0.21~1+git.449d6bf2/drbd/drbd-kernel-compat/gen_compat_patch.sh 2019-12-16 15:11:08.209750606 +0800
+@@ -56,29 +56,49 @@
< drbd-kernel-compat/cocci/debugfs_compat_template.cocci.in \
- >> $incdir/.compat.cocci;
- done;
+ >> $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
+ if [ -e $incdir/.compat.cocci ]; then
+- 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
+- # make $^, the source (and header) files spatch should operate on,
+- # are "the rest of the shell argument array", so after shifting the first
+- # 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;"
+-
+- if test -t 0; then
+- $SHELL -c "$command"
+- else
+- # spatch is broken in a way: it "requires" a tty.
+- # provide a tty using "script", so I can have several spatch in parallel.
+- # 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 " 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
++ # make $^, the source (and header) files spatch should operate on,
++ # are "the rest of the shell argument array", so after shifting the first
++ # 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 --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"
++ else
++ # spatch is broken in a way: it "requires" a tty.
++ # provide a tty using "script", so I can have several spatch in parallel.
++ # 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
+ else
+- echo " SPATCH $chksum "$K" - nothing to do"
+- touch $compat_patch.tmp
++ echo " SPATCH $chksum "$K" - nothing to do"
++ touch $compat_patch.tmp
++ 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
+ fi
+
if [ -e $incdir/.compat.patch ]; then
- cat $incdir/.compat.patch >> $compat_patch.tmp;
- fi;
-diff -Naur drbd-9.0.20~1+git.7dce3c8b.orig/Makefile drbd-9.0.20~1+git.7dce3c8b/Makefile
---- drbd-9.0.20~1+git.7dce3c8b.orig/Makefile 2020-01-09 13:38:00.994984563 +0800
-+++ drbd-9.0.20~1+git.7dce3c8b/Makefile 2020-01-09 13:41:50.512262670 +0800
-@@ -310,9 +310,11 @@
- endif
-
- coccicheck: coccinelle/*.cocci
-+ $(eval coccilibpath := $(shell rpm -ql coccinelle|grep standard.h|xargs dirname))
- @for file in $^ ; do \
- echo " COCCICHECK $$(basename $${file} .cocci)"; \
-- spatch --very-quiet drbd/drbd_*.c -D $(MODE) --sp-file $${file}; \
-+ spatch drbd/drbd_*.c --macro-file-builtins $(coccilibpath)/standard.h \
-+ --iso-file $(coccilibpath)/standard.iso -D $(MODE) --sp-file $${file}; \
- done
-
- Makefile: ;
+ cat $incdir/.compat.patch >> $compat_patch.tmp
+ fi