diff --git a/_service b/_service index ec2ed60..4ee288c 100644 --- a/_service +++ b/_service @@ -9,9 +9,9 @@ This will download branch first instead of tag. drbd-9.0 - 9.0.23~1 + 9.0.24~1 --> - 9.0.23~1+git.%h + 9.0.24~1+git.%h drbd-9.0 diff --git a/compat_remove_include_vermagic.patch b/compat_remove_include_vermagic.patch new file mode 100644 index 0000000..cca6fad --- /dev/null +++ b/compat_remove_include_vermagic.patch @@ -0,0 +1,17 @@ +[ 11s] In file included from /home/abuild/rpmbuild/BUILD/drbd-9.0.24~1+git.17730ea3/default/drbd_main.c:19: +[ 11s] /usr/src/linux-5.8.0-1/include/linux/vermagic.h:6:2: error: #error "This header can be included from kernel/module.c or *.mod.c only" +[ 11s] 6 | #error "This header can be included from kernel/module.c or *.mod.c only" +[ 11s] | ^~~~~ +[ 11s] CC [M] /home/abuild/rpmbuild/BUILD/drbd-9.0.24~1+git.17730ea3/default/drbd_strings.o + +diff -Naur drbd-9.0.24~1+git.17730ea3.orig/drbd/drbd_main.c drbd-9.0.24~1+git.17730ea3/drbd/drbd_main.c +--- drbd-9.0.24~1+git.17730ea3.orig/drbd/drbd_main.c 2020-08-13 14:22:17.895201728 +0800 ++++ drbd-9.0.24~1+git.17730ea3/drbd/drbd_main.c 2020-08-13 14:44:14.849369576 +0800 +@@ -16,7 +16,6 @@ + #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + + #include +-#include + #include + #include + #include diff --git a/compat_remove_kernel_setsockopt.patch b/compat_remove_kernel_setsockopt.patch new file mode 100644 index 0000000..05c5c38 --- /dev/null +++ b/compat_remove_kernel_setsockopt.patch @@ -0,0 +1,98 @@ +kernel_setsockopt removed in cb8e59cc + +[ 13s] /home/abuild/rpmbuild/BUILD/drbd-9.0.24~1+git.17730ea3/default/drbd_transport_tcp.c: In function 'dtt_nodelay': +[ 13s] /home/abuild/rpmbuild/BUILD/drbd-9.0.24~1+git.17730ea3/default/drbd_transport_tcp.c:158:9: error: implicit declaration of funct +ion 'kernel_setsockopt'; did you mean 'kernel_getsockname'? [-Werror=implicit-function-declaration] +[ 13s] 158 | (void) kernel_setsockopt(socket, SOL_TCP, TCP_NODELAY, (char *)&val, sizeof(val)); +[ 13s] | ^~~~~~~~~~~~~~~~~ [ 13s] | kernel_getsockname +[ 14s] cc1: some warnings being treated as errors + +diff -Naur drbd-9.0.24~1+git.17730ea3.orig/drbd/drbd-kernel-compat/have_kernel_setsockopt.c drbd-9.0.24~1+git.17730ea3/drbd/drbd-kernel-compat/have_kernel_setsockopt.c +--- drbd-9.0.24~1+git.17730ea3.orig/drbd/drbd-kernel-compat/have_kernel_setsockopt.c 1970-01-01 08:00:00.000000000 +0800 ++++ drbd-9.0.24~1+git.17730ea3/drbd/drbd-kernel-compat/have_kernel_setsockopt.c 2020-08-14 10:18:35.107901337 +0800 +@@ -0,0 +1,13 @@ ++#include ++ ++/* ++ * kernel_setsockopt removed in cb8e59cc ++*/ ++ ++void test(void) ++{ ++ struct socket *sock; ++ int val = 1; ++ ++ (void) kernel_setsockopt(sock, 0, 0, (char *)&val, sizeof(val)); ++} +diff -Naur drbd-9.0.24~1+git.17730ea3.orig/drbd/drbd_transport_tcp.c drbd-9.0.24~1+git.17730ea3/drbd/drbd_transport_tcp.c +--- drbd-9.0.24~1+git.17730ea3.orig/drbd/drbd_transport_tcp.c 2020-08-14 10:15:16.122125660 +0800 ++++ drbd-9.0.24~1+git.17730ea3/drbd/drbd_transport_tcp.c 2020-08-14 10:31:16.930382120 +0800 +@@ -154,8 +154,12 @@ + + static void dtt_nodelay(struct socket *socket) + { ++#ifdef COMPAT_HAVE_KERNEL_SETSOCKOPT + int val = 1; + (void) kernel_setsockopt(socket, SOL_TCP, TCP_NODELAY, (char *)&val, sizeof(val)); ++#else ++ tcp_sock_set_nodelay(socket->sk); ++#endif + } + + static int dtt_init(struct drbd_transport *transport) +@@ -889,7 +893,6 @@ + struct socket *dsocket, *csocket; + struct net_conf *nc; + int timeout, err; +- int one = 1; + bool ok; + + dsocket = NULL; +@@ -1071,9 +1074,14 @@ + dsocket->sk->sk_sndtimeo = timeout; + csocket->sk->sk_sndtimeo = timeout; + ++#ifdef COMPAT_HAVE_KERNEL_SETSOCKOPT ++ int one = 1; + err = kernel_setsockopt(dsocket, SOL_SOCKET, SO_KEEPALIVE, (char *)&one, sizeof(one)); + if (err) + tr_warn(transport, "Failed to enable SO_KEEPALIVE %d\n", err); ++#else ++ sock_set_keepalive(dsocket->sk); ++#endif + + return 0; + +@@ -1213,20 +1221,32 @@ + + static void dtt_cork(struct socket *socket) + { ++#ifdef COMPAT_HAVE_KERNEL_SETSOCKOPT + int val = 1; + (void) kernel_setsockopt(socket, SOL_TCP, TCP_CORK, (char *)&val, sizeof(val)); ++#else ++ tcp_sock_set_cork(socket->sk, true); ++#endif + } + + static void dtt_uncork(struct socket *socket) + { ++#ifdef COMPAT_HAVE_KERNEL_SETSOCKOPT + int val = 0; + (void) kernel_setsockopt(socket, SOL_TCP, TCP_CORK, (char *)&val, sizeof(val)); ++#else ++ tcp_sock_set_cork(socket->sk, false); ++#endif + } + + static void dtt_quickack(struct socket *socket) + { ++#ifdef COMPAT_HAVE_KERNEL_SETSOCKOPT + int val = 2; + (void) kernel_setsockopt(socket, SOL_TCP, TCP_QUICKACK, (char *)&val, sizeof(val)); ++#else ++ tcp_sock_set_quickack(socket->sk, 2); ++#endif + } + + static bool dtt_hint(struct drbd_transport *transport, enum drbd_stream stream, diff --git a/compat_remove_pgprot_88dca4c.patch b/compat_remove_pgprot_88dca4c.patch new file mode 100644 index 0000000..70fea47 --- /dev/null +++ b/compat_remove_pgprot_88dca4c.patch @@ -0,0 +1,42 @@ +pgprot removed in 88dca4c + +[ 139s] /home/abuild/rpmbuild/BUILD/drbd-9.0.23~1+git.d16bfab7/default/drbd_bitmap.c: In function 'bm_realloc_pages': +[ 139s] /home/abuild/rpmbuild/BUILD/drbd-9.0.23~1+git.d16bfab7/default/drbd_bitmap.c:368:15: error: too many arguments to function '__vmalloc' +[ 139s] 368 | new_pages = __vmalloc(bytes, +[ 139s] | ^~~~~~~~~ +[ 139s] In file included from /home/abuild/rpmbuild/BUILD/drbd-9.0.23~1+git.d16bfab7/default/drbd_bitmap.c:16: +[ 139s] /usr/src/linux-5.8.0-1/include/linux/vmalloc.h:111:14: note: declared here +[ 139s] 111 | extern void *__vmalloc(unsigned long size, gfp_t gfp_mask); +[ 139s] | ^~~~~~~~~ + +diff -Naur drbd-9.0.24~1+git.17730ea3.orig/drbd/drbd-kernel-compat/drbd_wrappers.h drbd-9.0.24~1+git.17730ea3/drbd/drbd-kernel-compat/drbd_wrappers.h +--- drbd-9.0.24~1+git.17730ea3.orig/drbd/drbd-kernel-compat/drbd_wrappers.h 2020-08-13 14:22:17.895201728 +0800 ++++ drbd-9.0.24~1+git.17730ea3/drbd/drbd-kernel-compat/drbd_wrappers.h 2020-08-13 14:33:13.168276614 +0800 +@@ -521,4 +521,8 @@ + void arch_wb_cache_pmem(void *addr, size_t size); + #endif + ++#ifndef COMPAT_HAVE_VMALLOC_NO_PGPROT ++#define __vmalloc(SIZE, GFP, PRGROT) __vmalloc(SIZE, GFP) ++#endif ++ + #endif +diff -Naur drbd-9.0.24~1+git.17730ea3.orig/drbd/drbd-kernel-compat/tests/have_vmalloc_no_pgprot.c drbd-9.0.24~1+git.17730ea3/drbd/drbd-kernel-compat/tests/have_vmalloc_no_pgprot.c +--- drbd-9.0.24~1+git.17730ea3.orig/drbd/drbd-kernel-compat/tests/have_vmalloc_no_pgprot.c 1970-01-01 08:00:00.000000000 +0800 ++++ drbd-9.0.24~1+git.17730ea3/drbd/drbd-kernel-compat/tests/have_vmalloc_no_pgprot.c 2020-08-13 14:29:04.930365926 +0800 +@@ -0,0 +1,15 @@ ++/* ++ * Because RHEL 7.5 chose to provide refcount.h, but not use it, we don't ++ * directly include refcount.h, but rely on the implicit include via kref.h, ++ * This way, we avoid compile time warnings about atomic_t != refcount_t. ++ */ ++#include ++ ++/* ++ * extern void *__vmalloc(unsigned long size, gfp_t gfp_mask); ++ * 88dca4c mm: remove the pgprot argument to __vmalloc ++*/ ++void test(unsigned long bytes) ++{ ++ __vmalloc(bytes, GFP_NOIO | __GFP_ZERO); ++} diff --git a/drbd-9.0.23~1+git.d16bfab7.tar.bz2 b/drbd-9.0.23~1+git.d16bfab7.tar.bz2 deleted file mode 100644 index 1dd1cab..0000000 --- a/drbd-9.0.23~1+git.d16bfab7.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:49862ab5d0f4d9ad91f1030ff111f8611af2b1a4a3e84847048bdcc53507fe2b -size 347341 diff --git a/drbd-9.0.24~1+git.17730ea3.tar.bz2 b/drbd-9.0.24~1+git.17730ea3.tar.bz2 new file mode 100644 index 0000000..88fff14 --- /dev/null +++ b/drbd-9.0.24~1+git.17730ea3.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56e28dc14bf917c105fe506a58cd0c06ef7d84245373f690804b036dec4aa18e +size 358888 diff --git a/drbd.changes b/drbd.changes index 219b126..bb9ebe9 100644 --- a/drbd.changes +++ b/drbd.changes @@ -1,3 +1,25 @@ +------------------------------------------------------------------- +Fri Aug 14 02:45:28 UTC 2020 - nick wang + +- bsc#1175257, use the latest drbd-9.0.24-1 + * fix deadlock when connecting drbd-9 to drbd-8.4 and the drbd-9 + side becomes sync-source + * fix an issue with 3 (or more) node configurations; with a diskless node + and two storage nodes; if one of the storage nodes was hard rebooted + and came back and the diskless got primary and did not issue write + requests and the returning storage node established a connection with + the surviving storage node first, DRBD failed to upgrade the disk + state to UpToDate after the resync + * detect split-brain situations also when both nodes are primary; + this is how it was in drbd-8.4; up to now drbd-9 did not realize + the split-brain since it complains about the not allowed dual + primary first; for this change a new protocol version was necessary + * verified it compiles with Linux 5.7 +- Add compatible patches to kernel v5.8.0 + Add patch compat_remove_include_vermagic.patch + Add patch compat_remove_kernel_setsockopt.patch + Add patch compat_remove_pgprot_88dca4c.patch + ------------------------------------------------------------------- Wed Jun 10 03:33:22 UTC 2020 - nick wang diff --git a/drbd.spec b/drbd.spec index ececf1c..ff2f4ee 100644 --- a/drbd.spec +++ b/drbd.spec @@ -24,7 +24,7 @@ %endif %endif Name: drbd -Version: 9.0.23~1+git.d16bfab7 +Version: 9.0.24~1+git.17730ea3 Release: 0 Summary: Linux driver for the "Distributed Replicated Block Device" License: GPL-2.0-or-later @@ -37,7 +37,9 @@ 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 -#In 61ff72f401680(v5.5-rc2), pr_warning is removed +Patch4: compat_remove_pgprot_88dca4c.patch +Patch5: compat_remove_include_vermagic.patch +Patch6: compat_remove_kernel_setsockopt.patch Patch99: suse-coccinelle.patch #https://github.com/openSUSE/rpmlint-checks/blob/master/KMPPolicyCheck.py BuildRequires: coccinelle >= 1.0.8 @@ -74,6 +76,9 @@ installed kernel. %patch1 -p1 %patch2 -p1 %patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 %patch99 -p1 mkdir source diff --git a/drbd_git_revision b/drbd_git_revision index c6411d6..e0b3bb0 100644 --- a/drbd_git_revision +++ b/drbd_git_revision @@ -1 +1 @@ -GIT-hash: d16bfab7a4033024fed2d99d3b179aa6bb6eb300 +GIT-hash: 17730ea36f2aa2137cfdd11fb2770d748e04116e