Skip to contentSkip to conversation

drbd-9.2.20-rc.1

DISCUSSION Philipp Reisner 1 participant 1 message Sep 7

lore
Share & tools
lore
#0 lore raw

Hi,

This is an unusual release. This time, we fixed more issues than in any previous development cycle. This is because the team has used ClaudeCode since the start of the Year. It took about half a year, from our first experiments with it, to get to the point where we can do much more in a cycle than before.

It helps extract the important needle from a haystack of loglines. It also helps us write reproducers super quickly using our testing framework. It enabled us to create new static analyzers tailored for DRBD. It enabled us to create a simulator that lets us test the DRBD code deterministically against unusual timings that are very hard to reproduce on regular VMs.

Last but not least, it is much quicker than a human at coming up with patch proposals. Even if you have to reject three, you may be impressed by the solution when you review the fourth proposal.

The drbd-9.3.4-rc.1 will follow as soon as possible. I hope tomorrow.

This is a release candidate. Please test it.

9.2.20-rc.1 (api:genl2/proto:86-101,118-124/transport:21)
--------
* Fix a sync target overwriting acknowledged writes with older resync data when the sync source lost the diskless primary; such writes are now held back or postponed (new feature flag WRITE_POSTPONE) instead of being silently rolled back
* Fix data corruption when a peer bitmap that is being cleared by a running resync was copied for a second peer
* Fix several ways a Primary lost its obligation to start a new data generation after losing a peer, each ending in silent divergence, and a spurious I/O error when a deferred generation resumes; the obligation is now tracked per volume and logged
* Fix a diskless Primary losing a peer: rotate the current UUID so the stale peer resyncs on return, outdate far-away members before resuming I/O, and keep the sole UpToDate survivor UpToDate; also fixes promotions freezing I/O on nodes not connected to every member
* Fix a resync target ending with stale data or an old data generation when a crashed primary rejoins or a diskless primary announces a new generation mid-resync
* Fix al-updates=no: honour it at attach time, and mark all bitmap slots out of sync after a primary crash
* Fix kernel memory corruption by a malicious or man-in-the-middle peer sending out-of-range payload, drain or digest sizes, and a divide error caused by bogus peer block sizes
* Fix a use-after-free of the resource when a connections dump is interrupted, and a refcount imbalance flooding the log with put_ldev assertions after a resync request allocation failure
* Fix soft lockups: the sender thread pinning a CPU while its connection is down, and IRQ-disabled bitmap scans on multi-TiB volumes
* Fix several deadlocks and hangs: whole-bitmap IO vs clear_peer_slot() or online resize, WFBitMapS on an equal-UUID reconnect with leftover out-of-sync bits, demotion starved by a failing connect handshake, and connection teardown blocked behind an unacknowledged resync conflict
* Fix many two-phase-commit issues: stale replies answering the wrong transaction, prepared peers that disconnected, forwarding node handling, a state_sem leak on timeout, and unbounded connect retries; log which volume a connect is waiting for
* Fix resyncs stalling short of completion, and a connection dropping to StandAlone when a crashed primary rejoins during a resync
* Fix drbd_suspend_io() not waiting for in-flight writes; a detach hanging on a dead backing device stays interruptible
* Fix restoring quorum after a reboot when the remaining members are diskless
* Fix connection losses: online resize ending in ProtocolError, volume-less connections reconnecting every ping-timeout, lb-tcp "drbdadm down" stalling for a connect-int, and a TLS control socket close going unnoticed

https://pkg.linbit.com//downloads/drbd/9/drbd-9.2.20-rc.1.tar.gz
https://github.com/LINBIT/drbd/commit/b997b6c56d8b88223a7d29f3dbb77c8ea15b9498

cheers,
Phil