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. _______________________________________________ Star us on GITHUB: https://github.com/LINBIT drbd-user mailing list [email protected] https://lists.linbit.com/mailman/listinfo/drbd-user
