[DRBD-user] drbd-9.1.15 and drbd-9.2.4

Philipp Reisner philipp.reisner at linbit.com
Mon Jun 5 11:20:24 CEST 2023


Hello DRBD users,

I am glad to announce yet another release, drbd-9.1.15 and drbd-9.2.4.

Our 'eat your own dog food' policy led to another bug we were able to
fix shortly before the release (during the rc.1 phase). It reproduces on
drbd-9.2. On drbd-9.1 it reproduces only with a non-default CPU mask
configured.

I know that users of recent kernels are eagerly waiting for this
release. Even if a previous DRBD release was compile-time compatible
with Linux-6.2 and later, the resulting module crashed your
system. This got fixed.

You find bug fixes at the top of the changelog with bitter
consequences, like locking up a resource or causing an OOPS. What they
have in common is that they are about very rare edge cases. The bugs
have been in the code for a very long time.

As usual, when fixing these bugs, we improved the test-suite as well,
which runs 82 tests on every commit by now. Recently I learned that by
running these tests, we cover 92.1% of all functions of the DRBD
kernel code and 78.6% of all code lines. It might be that the real
number is even higher since that first coverage analysis did not
include the test runs, where we test protocol compatibility with older
DRBD releases.

Due to the number of fixes of bugs that have severe consequences,
I recommend upgrading.

9.1.15 (api:genl2/proto:110-121/transport:17)
--------
 * fix how flush requests are marked when submitted to the Linux IO
   stack on the secondary node
 * when establishing a connection failed with a two-pc timeout, a
   receiver thread deadlocked, causing drbdsetup calls to block on
   that resource (difficult to trigger)
 * fixed a NULL-ptr deref (a OOPS) caused by a rare race condition
   while taking a resource down
 * fix a possible hard kernel-lockup, can only be triggerd when a
   CPU-mask is configured
 * updated kernel compatibility to at least Linux head and also fixed
   a bug in the compat checks/rules that caused OOPSes of the previous
   drbd releases when compiled with Linux-6.2 (or on RHEL 9.2 kernel).
 * fix an aspect of the data-generation (UUID) handling where DRBD
   failed to do a resync when a diskless node in the remaining
   partition promotes and demotes while a diskful node is isolated
 * fix an aspect of the data-generation (UUID) handling where DRBD
   considered a node to have unrelated data; this bug was triggered by
   a sequence involving removing two nodes from a cluster and readding
   one with the "day-0" UUIDs.
 * do not block specific state changes (promote, demote, attach, and
   detach) when only some nodes add a new minor

9.2.4 (api:genl2/proto:110-122/transport:18)
--------
 * fix a possible deadlock when disconnecting during a resync
 * fix a possible hard kernel-lockup
 * changes merged from drbd-9.1.15
  - fix how flush requests are marked when submitted to the Linux IO
    stack on the secondary node
  - when establishing a connection failed with a two-pc timeout, a
    receiver thread deadlocked, causing drbdsetup calls to block on
    that resource (difficult to trigger)
  - fixed a NULL-ptr deref (a OOPS) caused by a rare race condition
    while taking a resource down
  - updated kernel compatibility to at least Linux head and also fixed
    a bug in the compat checks/rules that caused OOPSes of the previous
    drbd releases when compiled with Linux-6.2 (or on RHEL 9.2 kernel).
  - fix an aspect of the data-generation (UUID) handling where DRBD
    failed to do a resync when a diskless node in the remaining
    partition promotes and demotes while a diskful node is isolated
  - fix an aspect of the data-generation (UUID) handling where DRBD
    considered a node to have unrelated data; this bug was triggered by
    a sequence involving removing two nodes from a cluster and readding
    one with the "day-0" UUIDs.
  - do not block specific state changes (promote, demote, attach, and
    detach) when only some nodes add a new minor


https://pkg.linbit.com//downloads/drbd/9/drbd-9.1.15.tar.gz
https://github.com/LINBIT/drbd/commit/b6d225583f833dc02d3e13cd92864b30f2fd442a

https://pkg.linbit.com//downloads/drbd/9/drbd-9.2.4.tar.gz
https://github.com/LINBIT/drbd/commit/460cfc1025ba5abb63ac9ed2895d6cec178bb39c


More information about the drbd-user mailing list