Latest:
------
 For even more detail, use "git log" or visit https://github.com/LINBIT/drbd/commits/master.

9.3.3-rc.1 (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
  - 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

9.3.2 (api:genl2/proto:86-101,118-124/transport:21)
--------
 * Use genl pre_doit/post_doit for netlink request setup and teardown
 * Handle recv returning 0 (EOF) in recv_bio
 * Revert flush_send_buffer send error causing state change
 * Fix a page leak in the RDMA transport's send-page path
 * All fixes from 9.2.18
  - Fix when a diskless primary creates a new current UUID,
    fixing possible silent data divergence later
  - Fix quorum calculation upon attach/detach operations
  - Handle split-brain recovery strategies during attach
    like they are handled during connect
  - Hanle attaching of large devices (~100TiB) without triggering
    the NMI watchdog
  - Fix a race condition in the RDMA code that could lead to
    leaking a cm object
  - Skip new-region resync for zero-guarantee backends at attach
  - drbdsetup attach waits for completion of disk state negotiation
    before returning
  - Fix missing disk line in drbdsetup show while in D_NEGOTIATING state
  - A few fixes found by the static analyzer smatch

9.3.1 (api:genl2/proto:86-101,118-124/transport:21)
--------
 * Use compound pages to optimize large I/O performance
 * New option for setting the discard granularity exposed on
   diskless nodes
 * Add per-peer_device tiebreaker config flag for quorum
 * Fix compat-8.4 /proc/drbd output for connected resources
 * Fix a race that could lead that a resyncs stalls when it
   should complete.
 * All fixes from 9.2.17
  - Fix a kernel crash triggered by a crafted/invalid netlink message
  - Fix a crash when resyncing with a peer supporting proto 121,
    e.g. drbd-9.1.23
  - Fixed two corner case regressions regarding bitmap lifetime
    (introduced with 9.2.16)
  - Add a static analyzer that checks for correctly handling bitmap
    object lifetime; it identified 6 bugs
  - Correctly request BLK_FEAT_STABLE_WRITES from the kernel; Kernels
    side changes lead to this queue flag not being active
  - Fix lb-tcp to not corrupt data when it reassembles a data chunk, it
    split for sending over multiple paths in parallel
  - Add a special case to ensure LINSTOR re-provisioned nodes with thin
    volumes get the necessary incremental resync
  - Always do a two-phase-commit for attach, closes a race that could
    lead to an inconsistent repl states
  - Skip unnecessary resync when a missed end-of-resync has 0 bits;
    before that fix, DRBD could end up in inconsistent repl states
  - Fix a case where a send error was ignored on congested connections
  - Make detection of missed end-of-resync symmetric; the bug led to
    inconsistent repl states
  - Make the RDMA transport compatible with RXE (software RoCE),
    and some mainly performance-related fixes

9.3.0 (api:genl2/proto:86-101,118-123/transport:19)
--------
 * was forked off between 9.2.12 and 9.2.13
 * Implemented resync without replication and made it the default; the
   previous (drbd-9.2 and earlier) behavior is still available via a
   config option. With that, the resync operation begins with
   mirroring of application writes disabled, and it performs multiple
   resync passes, clearing bits in the bitmap. It enables application
   write mirroring when the resync is nearly complete. That reduces
   the I/O load during resync, and in most cases, it reduces resync
   time.
 * Implemented support for bitmap granularity between 4k and 1M,
   including exchanging bitmaps with peers with a different bitmap
   block size
 * Give filesystems mounted on DRBD a chance to bring their on-disk
   representations into a consistent state before suspending I/O.
 * Add support for omitting bitmap allocation for standalone devices
 * Explicit config option for drbd8-api-compatibility mode
 * Dropped support for RHEL7 and support for kernels older than 3.10.
 * All fixes from 9.2.13 to 9.2.16
 * Compatibility with Linux-6.18
