Skip to contentSkip to conversation

drbd-9.3.3 and drbd-9.2.19

DISCUSSION Philipp Reisner 1 participant 1 message Jul 1

lore
Share & tools
lore
#0 lore raw

Dear DRBD-users,

With the upcoming release, we are fixing a surprisingly large number of bugs across the board. All of the issues are related to unusual timings. An example is the resize that could lock up when a write on a remote peer switched an activity log extent on the resizing machine at the "wrong time".

The other large fix is for the scenario where a diskless primary is isolated from all storage servers at once, and the storage servers are isolated from each other at the same time. E.g., a network switch failure.

During the RC phase, another round of subtle corner case fixes came in. After I merged those, we had increased failure frequencies for some tests in the nightly stability runs. Analyzing these issues to the root causes and applying fixes for those problems delayed the release by 2 days.

I recommend upgrading to this release.

9.3.3 (api:genl2/proto:86-101,118-124/transport:21)
--------
* Support adding and removing paths on established lb-tcp connections
* Fix a page-reference leak on TLS connections by copying instead of referencing pages when sending
* Reject paths that would make incoming connections ambiguous
* All fixes from 9.2.19
- Fix silent data divergence when a diskless primary creates a new current UUID that a peer never received (e.g. switch failure); the optimistic UUID is now confirmed via the data stream before being relied upon
- Fix silent data corruption when a diskless primary suppressed its current-UUID bump because a peer had been resynced by a third node
- Fix a false split-brain ("Unrelated data, aborting!") caused by pushing a peer's bitmap UUIDs into the local history
- Hold a primary-loss survivor at Consistent until it reconciles with the surviving peers, so a stale node cannot promote and serve un-reconciled data
- Reconcile two peers holding the same current UUID but still carrying out-of-sync bits toward each other, instead of silently dropping the divergence
- Fix a list corruption crash when freeing a peer_req that was still linked on the send_oos list
- Fix an AB-BA deadlock between online resize and activity-log transactions
- Fix a use-after-free of the TCP listener during connection setup
- Fix a list corruption crash and assertion failures when a peer disconnects while online-verify requests are still in flight
- Fix several races during connection teardown that could crash or hang (ack_sender requeue, pending ping work, in-progress lb-tcp connect)
- Abort a two-phase-commit on peers when the target connection fails to prepare
- Added max_parallel_resyncs module parameter to cap how many volumes may resync (or verify) in parallel
- Fix multiple RDMA transport bugs hit during racing teardown: a NULL pointer dereference, a self-deadlock, and a cm object leak
- Fix bogus resync speed/ETA reported in /proc/drbd when the out-of-sync amount grows
- Do not throttle a resync that is losing ground to ongoing writes

https://pkg.linbit.com//downloads/drbd/9/drbd-9.3.3.tar.gz
https://github.com/LINBIT/drbd/commit/97da76040a6b31aaf9e12f1a167e77ca2b3cb43e

https://pkg.linbit.com//downloads/drbd/9/drbd-9.2.19.tar.gz
https://github.com/LINBIT/drbd/commit/302e1eaf1b8fd10e2250d106dae97102d99836d2

cheers,
Philipp