Mailing List Archive

drbd-9.0.20-1
Hi,

With this release the big news is the new way we deal with compatibility
for older linux kernels. It used to be a mechanism based of #IFDEFs that
tainted the main drbd code more and more.
Now the DRBD code is clean Linux-upstream compatible code. In order that
you can compile it against older and distribution kernels the build
process automatically applies a compat-patch. These compat-patches are
computed using coccinelle/spatch semantic patches. See here for more
information:

https://www.linbit.com/en/how-to-make-drbd-compatible-to-the-linux-kernel/

During the long release-candidate phase of this release we had the idea to
offer spatch as a service. I.e. make sure your build environment may connect
to the internet, building should work and you do not need to care about
installing coccinelle/spatch into your build environment.

Other than that the number of bug-fixes that landed in this release is
higher than in any previous releases. What started as a loosely knit group
of open source uses is now a group of serious enterprise users. This time
we got a lot of feedback during the RC phase that allowed us to iron out
more issues than with any previous releases.

A big thank you to our community!



Here is the changelog:

9.0.20-1 (api:genl2/proto:86-115/transport:14)
--------
* 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

https://www.linbit.com/downloads/drbd/9.0/drbd-9.0.20-1.tar.gz
https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack
https://github.com/LINBIT/drbd/commits/7dce3c8be99f4912f1490f9bb37f5aff6c873335

cheers!
--
LINBIT | Keeping The Digital World Running

DRBD? and LINBIT? are registered trademarks of LINBIT, Austria.



_______________________________________________
drbd-announce mailing list
drbd-announce@lists.linbit.com
https://lists.linbit.com/mailman/listinfo/drbd-announce
Re: [DRBD-user] drbd-9.0.20-1 [ In reply to ]
On Thu, Oct 10, 2019 at 01:19:53PM +0200, Philipp Reisner wrote:
> Hi,
>
> With this release the big news is the new way we deal with compatibility
> for older linux kernels. It used to be a mechanism based of #IFDEFs that
> tainted the main drbd code more and more.
> Now the DRBD code is clean Linux-upstream compatible code. In order that
> you can compile it against older and distribution kernels the build
> process automatically applies a compat-patch. These compat-patches are
> computed using coccinelle/spatch semantic patches. See here for more
> information:
>
> https://www.linbit.com/en/how-to-make-drbd-compatible-to-the-linux-kernel/

Some additional hints/tl;tr:

1. It tries to find a patch in the local cache (shipped in the tar
ball).

2. If not in cache, try to generate with spatch. You need to have at
least version 1.0.8 (latest release, as of about 2 weeks ago). Earlier
version might generate patches, put they might be invalid! AFAIK no
distri packaged 1.0.8 so far.

3. If spatch is not installed, it fetches the patch from a web service.
For that you need access to the web, and you need `curl`. I forget to
add it as explicit dependency for the dkms. Most systems should have it
- PVE is a famous exception - or the build process will complain anyways.

Best, rck
_______________________________________________
drbd-announce mailing list
drbd-announce@lists.linbit.com
https://lists.linbit.com/mailman/listinfo/drbd-announce