[DRBD-user] drbd-9.0.20-1

Philipp Reisner philipp.reisner at linbit.com
Thu Oct 10 13:19:53 CEST 2019


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


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


LINBIT | Keeping The Digital World Running

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

More information about the drbd-user mailing list