DRBD 9.2.17 / DRBD 9.3.1 support
Support compound pages (used by DRBD 9.3.1)
Fixed several memory leaks
Fixed use after free in drbd_destroy_device / workqueue
Fixed start sector out of range check
Fixed synchronize RCU if called before driver unload
Fixed signal pending on task creation
Compile binary packages with clang
DRBD reactor support - see LINBIT SDS repo
Integrated Linux kernel's crypto framework in WinDRBD
Support sha1 crypto algorithm
Do not wait forever for still running tasks on unload
Fixed a bug that caused connection to Linux DRBD fail.
DRBD 9.3.0 support
DRBD 9.2.16 / DRBD 9.3.0-rc6 / drbd-utils 9.33.0+ support
Makefile: keep windrbd.sys and windrbd.pdb for each build
Fixed a race in completion implementation
clang support (to produce WinDBG symbol/PDB files)
DRBD 9.2.15 support
stability fixes (spin lock in DRBD, cancel_work_sync fix)
Update drbd-utils
Lots of unused code removed (remote booting, ...)
Minor fixes (UL -> ULL, ...)
Implemented multi-threaded workqueues
Removed much commented out code
Installer: clean up driver store
Installer: removed cmd scripts
Merged changes from 1.1.20
Removed last occurance of SEH (structured exception handling)
Workaround for BrokenPipe when peer disconnects bug found by testsuite
DRBD 9.2.14 support
Prepared support for DRBD 9.3 branch
Use wait_event_XXX in windrbd_winsocket.c
Drain send buffer before closing a socket
Fixed waiting forever on user mode helper daemon
Made KMALLOC_DEBUG optional (default off)
Fixed a bug that caused VMs with specific Windows versions to crash when booting
Disconnect gracefully
Fixed a bug that caused a BSOD on some older Windows versions
Have a ring buffer for accepting sockets (backlog parameter to listen()) This solves one reasons for connection establishment failure.
Support WinDRBD disks as "physical" backing disks for Hyper-V VMs. A new ioctl IOCTL_SCSI_PASS_THROUGH/IOCTL_SCSI_PASS_THROUGH_DIRECT was implemented
Fixed online resize It never working in 1.2 branch before
Removed netlink mutex. DRBD is much more responsive now.
Fixed a BSOD on Windows Server 2003 SP2
even more NETIO.SYS fixes
NETIO.SYS fixes
Windows Server 2003 32-bit support.
DRBD 9.2.13
Connection problems in 3 node setups fixed.
Compiles and runs stable with DRBD 9.0, DRBD 9.1 and DRBD 9.2. First 'real' release canidate.
Lots of stability fixes, with DRBD 9.0 as HA backend it works pretty stable already. Also merged 1.1.19 in. Also this version runs fine on ReactOS, too (ReactOS is the default debugging platform due to WinDBG limitations).
Compiles with DRBD 9.1
Reworked DRBD patching system
ReactOS support
Fix for BSOD on Primary
generate-cat-file project: inf2cat replacement for Linux (no external libraries required).
Sign driver and cat file with osslsigncode
make docker image for building WinDRBD
alternativlely make pull-docker
drbd-utils as submodule
make builds everything (inside a container)
updated documentation (INSTALL.md)
Removed lots of unused files / directories
Can compile WinDRBD driver with gcc (mingw-w64).
Installer: Flush registry at the end of install/remove bus device This should solve driver half installed we observe when the system is reset shortly after the installer ran.
Log rotation for windrbdlog and windrbdumhelper services.
Log kernel IDs for user mode helper requests.
Fixed adding volumes while connected.
Installer checks if bus device is there and tries to fix that if not.
Disabled backing device I/O corking which was introduced in WinDRBD 1.1.8. This caused I/O to hang longer than expected (several minutes). Expect bitmap I/O (initial read of bitmap) being slower now (as in pre-1.1.8 releases).
Cygwin update: fix for console close. Before that sometimes processes (like drbdadm, ...) took several seconds to exit and sometimes they never exited at all. This should be fixed with this version.
WinDRBD now has its own timer to detect disk timeouts. This fixes disk timeout on secondaries, during resync and also for meta data. The DRBD disk timeout timers have been removed. This solves many issues we had in conjunction with disk timeouts.
Initialize bios_event also for upper block devices. This should fix a BSOD that might trigger after 4 billion I/O requests on the upper device.
Kernel threads are now running with stack swapping disabled. This should fix some very rare BSODs when another thread accesses the stack (for example an event structure) of a thread whichs stack is swapped out.
downgrade cygwin DLL 3.5.3 -> 3.4.10
Fix for drbdadm create-md: clear whole device for external metadata
update cygwin DLL 3.4.10 -> 3.5.3
Ensure that at most one fencing script is running at the same time
Thaw I/O also when peer is outdated (when there is a valid connection we can exit fencing mode)
Fix for exiting fencing mode on drbdadm disconnect
No timeout on reading boot sector (when probing for existing file systems on backing disks)
Eliminated a Warning message regarding bio still on some list
update cygwin DLL 3.4.5 -> 3.4.10
Memory pressure fixes
Fixed a drbdadm primary hang when I/O is still suspended by the resync stalled logic introduced in 1.1.8.
Handles disk timeout on Primary's data backing device gracefully. WinDRBD will fail I/O to DRBD so DRBD thinks that the disk failed.
Fixed BSOD on drbdadm adjust network config. Reason was that DRBD_ADM_DISCONNECT returned before drbd-receiver was restarted (and a followup DRBD_ADM_DELPATH freed the drbd_path still in use by this receiver.
LINSTOR support
Driver locking via windrbd tool: allows to recreate the bus device when an update fails. As a consequence of this patch, downgrading from 1.1.8 to 1.1.7 or older requires a reboot.
Backing device I/O corking: Simple disk scheduler that accumulates I/O requests that are adjacent on disk into a single I/O request. This speeds up reading the bitmap on drbdadm attach by a factor of 10.
Polling for netlink packets: there is a new ioctl() that returns if a netlink packet is ready for being read without consuming it. This allows drbd-utils to poll for I/O on stdin and for netlink packets at the same time.
Disk timeout: DRBD was fixed at certain places to allow I/O completion after disk timeout has elapsed. Disk timeout now should work on the Primary side.
Suspend/Resume application I/O: WinDRBD now can suspend application I/O on the upper (SCSI disk) I/O interface. This can be controlled by a windrbd command.
Automatically suspend/resume on resync stuckness: When an application writes the same block all the time, DRBD will detect this (via a timeout) and suspend application I/O by itself until resync continues. This patch lives in the DRBD repository.
Resizing virtual partition table: Online resize of WinDRBD disks that have a virtual partition table (generated by WinDRBD for a backing device containing a file system) now works as expected. In paticular the partition size is not changed by WinDRBD any more.
Fixed panic() implementation
Fixed a drbdsetup status hang (was an endless loop in the netlink layer).
Fixed a BSOD in the network driver when memory allocation failed.
Fixed a performance bug (TCP/IP nodelay option was not set) that increased latency with protocol C (20ms instead of 0.5ms)
Implemented ioctl for polling for netlink packets (without consuming them). This makes poll_hup in drbd utils work (which is used by drbd reactor).
Also stop and start drbd reactor service on install / upgrade.
Updated cygwin DLL and binaries (Feb 3 2023)
Add PATH component to programs run by installer. This enables running the installer from a background service.
Fixed ReFS support (was broken since 1.1.0, works in 1.0.2)
Add ReFS support for existing data partitions (virtual partition table).
Fixed bug with large disks (>2TB) introduced with 1.1.4
Virtual partition table for existing NTFS data partitions.
Fixed a BSOD on upgrade if stopping the old driver fails
stop logger after driver (if possible) so we see driver unload messages.
Fixed a BSOD when REMOVE_DEVICE timed out: we now always wait for REMOVE_DEVICE being sent, drbdadm secondary may take 40 seconds.
Release for upgrading from 1.1.0 without official certificate
Secureboot support
Many smaller fixes (see previous entries below)
Fixed drbdadm adjust: Don't always detach / attach
Fixed drbdsetup hang: there is a timeout in stable_state_change now
Quit drbdsetup events2 processes on upgrading.
Fixed a BSOD on I/O while removing the Windows Disk device. (there was an issue with remove locks).
Fix a DRBD issue that causes a resource to be stucked in Negoiating on attach when there were 3 nodes.
Workaround for a (possible) Windows bug when reusing data of NTFS partitions larger than 1.3TB. (You will have to specify a drive letter where to mount the WinDRBD device)
Short timeout of drbdadm defaults to 30 seconds for Windows systems.
Implemented disk statistics thereby fixing the resync rate controller (setting c-max-rate had no effect before).
Installer: stop and restart LINSTOR satellite if present
Can install self-signed WinDRBD driver via ssh
Improve sync speed when sync source
Fixed a WinDRBD stuckness on drbdadm secondary when there was more than one Volume.
Fixed online resize while connected.
SecureBoot support
Do not fill log file when drbdadm status is run periodically.
Updated config sample.
Wait forever for user mode helper scripts to complete.
Minor JSON output fix in drbd-utils.
Production readiness
Do not generate a new current UUID wile IO is frozen
Fixed a bug that triggered invalid page chain assertion and lead to connection abort at the beginning of sync. This also fixed a hang when changing the role (primary / secondary) while sync was going on.
Fixed several memory leaks.
Upgrade to DRBD 9.0.32
Fixed a BSOD when syncing large volumes (This fix unveiled a PTE BSOD when writing from upper device to lower disk which was also fixed)
Fixed a BSOD on hard network shutdown (unplug network cable, this was actually an upstream DRBD bug)
Fixed a BSOD bug in writing to event log introduced in 1.0.0-rc14
Installer: no reboot on upgrade should work now also in corner cases.
Installer: Always start user mode services (windrbdlog, windrbdumhelper)
Userland services (umhelper, log) are started on boot
Upgrade to 9.0.31
Fix for install userland errors message box
Driver unloading (no reboot on Upgrade/Uninstall)
Upgrade to latest cygwin distribution
/VERYSILENT install
Setup logging
Upgrade to 9.0.30
online resize works
dynamic disks as backing devices work
Fixed a bug that caused volumes with size 1-2 TB not to work properly.
installer supports selection of windrbd root
fixed a bug that caused creation of lots of receiver threads when in state Connecting (and never terminate them).
Bundle basic cygwin tools so that truck based replication works without having to install cygwin
Config key feature
Windows Event Log Support
Fixed many (but not all) BSODs with verifier on.
Upgrade to DRBD 9.0.29
Fixed a blue screen on disconnect: Reason was sock_really_free called wait_event while in APC (in interrupt) and wait_event tried to sleep.
Fixed a missing mutex_lock in delete_multicast_elements_and_replies_for_file_object() which caused a BSOD from time to time.
Fixed deadlock in recursive calls to rcu_read_lock (which are legal) (rcu_read_lock (A) / synchronize_rcu (B) / rcu_read_lock (A) where the inner rcu used to hang forever at DISPATCH_LEVEL.
WinDRBD root directory is now relocatable (currently registry key WinDRBDRoot in HKLM/system/CurrentControlSet/services/WinDRBD must be edited manually, no installer support yet)
Updated DRBD from 9.0.25 to 9.0.28.
Fixed a system hang on disconnect: Reason was mod_timer returning a wrong value which later caused a use-after-free of the DRBD connection object.
Print deprecation warning when using block device interface. This is going to be removed with the next (1.0.0-rc12) release.
Fix a NESSUS vulnerability warning: Executable path must be quoted (in windrbdumhelper and windrbdlogger services).
Make sure there is no error 50 warning on drbdadm up.
Optimization on the network side ("receiver cache"): receive from socket in larger chunks (defaults to 128K), this speeds up secondary writes by a factor of 2 to 4.
Fix in wait_event: wait_event should not be interruptible. Also wait_for_completion should not be interruptible. This fixes lots of BSODs at various places (process_sender_todo, ...) which mainly occured at disconnecting a resource.
There is also an optimization at the backing device side (backing device cache) but this implementation is currently broken and probably will be abandoned (it does not give a speedup). It is disabled by default.
Use device ejection API on drbdadm secondary (or down). This should solve a BSOD on drbdadm secondary a client had.
Force open counts to 0 on drbdadm secondary (or down). This should solve a handle leak (peer cannot be promoted to Primary) a client had.
Updated drbd-utils shipped to 9.15.0 (was 9.12.0). Amongst other things this makes the disconnected user mode helper work.
Use big pages for receiving sync packets (when sync target). This speeds up sync by a factor 5 when WinDRBD is SyncTarget.
Fixed disconnect while sync bug: On disconnect wait until all bios are completed.
Fixed bug in wait_queue which caused some operations (drbdadm down right after drbdadm up, drbdadm attach) to hang forever.
Fixed bug in backing device interface that caused I/O on backing devices larger than 2TB to fail.
Eliminated spin_lock_irq calls
Fixed return value of timeout case in wait_event_XXX_timeout
Upgraded DRBD to 9.0.25
Fixed several bugs in workqueue implementation (fixes most BSODs on disconnect while sync).
Fixed ko count mechanism (connection is more stable)
Use SHA256 for signing files (EXE, SYS and CAT)
Fixed connection loss bug
Reengineered workqueues (improves system stability)
Fixed boot failure introduced with 1.0.0-rc2
(Probably) Fixed BSOD on upgrade as reported as issue #2 on github
Fixed fio BSOD as reported as issue #2 on github
Stability fixes
Refactored locking
Online verify
drbdadm status and drbdsetup events2 as non-Adminitrator user.
windrbd create-resource-from-url command
Installer creates WinDRBD bus device
Don't lose network printk's on boot.
windrbd set-syslog-ip command
Upgraded DRBD version from 9.0.17 to 9.0.22
Can set syslog-ip via boot parameters (no need to hack the registry).
Key/Value based DRBD URI syntax
Minor changes to iPXE and drbd.cgi (you might want to update those).
WinDRBD boot device survives network outage (sometimes).
Stability fixes (ran 26 days with continuous I/O).
For older changelog summaries see the version history at the end of README.md