-
Notifications
You must be signed in to change notification settings - Fork 14
/
ChangeLog
993 lines (934 loc) · 47.7 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
Latest:
------
For even more detail, visit https://github.com/LINBIT/drbd-8.4/commits/master
8.4.12-1 (api:genl1/proto:86-101)
-------
* Ship public kmod signing key. LINBIT customer RHEL7 rpms get signed with it
8.4.11-1 (api:genl1/proto:86-101)
-------
* New efficient ZEROES command on the wire,
to clearly distinguish zero-out from trim/discard/unmap.
* compatibility with Linux kernels up to 4.17 (and RHEL up to 7.5)
* runtime sanity check for silent RHEL 7.5 kABI breakage
* Fix bug in compat code: Without this fix large bios are not split.
The user visible behavior is then a hanging DRBD.
* skip spurious timeout (ping-timeo) when failing promote
* don't retry connection if peers do not agree on "authentication" settings
* avoid spurious self-outdating with concurrent disconnect / down
* do not block when adjusting "disk-options" while IO is frozen
* fix various corner cases when recovering from multiple failure cases
8.4.10-1 (api:genl1/proto:86-101)
-------
* fix a race condition between attaching and writing meta-data. The impact
of the bug was destructing an object to early which leads to a crash
* fix cleanup of debugfs at rmmod time
* fix potential deadlock when trying to detach during handshake
* fix race between handshake and admin disconnect/down
* new config option "disable-write-same". That helps with backing devices that
claim to support write-same, but fail every write-same request
* compatibility with Linux kernels up to 4.12
8.4.9-2 (api:genl1/proto:86-101)
-------
* Fix kernel_sendmsg() usage - potential NULL deref
Relevant for kernel >= 4.0
8.4.9-1 (api:genl1/proto:86-101)
-------
* compat fixes for linux kernels up to 4.8
8.4.8-1 (api:genl1/proto:86-101)
-------
* compat fixes for linux kernels up to 4.7
* fix potential deadlock with many parallel request on kernels >= 4.3
* fix potential data divergence after write error on secondary
with non-synchronous replication
* performance improvement for kernel >= 2.6.39
use request plugging again to help backends with merging batches
8.4.7-2 (api:genl1/proto:86-101)
-------
* compat: don't trigger BUG_ON on flush in kernel < 2.6.24 (e.g. RHEL 5)
* al_write_transaction: skip re-scanning of bitmap page pointer array.
Improves performance of random writes on "huge" volumes
by burning less CPU and avoiding CPU cache pressure.
8.4.7-1 (api:genl1/proto:86-101)
-------
* introduce WRITE_SAME support
* introduce discard-capable (or thinly allocated) device friendly resync
* improve latency on certain kernel versions and usage patterns
* improve latency of disk flushes with multiple volumes
* fix recovery handling of certain multiple error scenarios,
including possible deadlocks after certain multiple failure sequences
* introduce unfence-peer handler,
to close possible races if the replication link is flaky
* avoid potential spurious full resync by
* improve discard support, reliably zero-out/discard even with discard_zeroes_data=0
* update wrapper defines for linux 4.3
* fix latency regression introduced with 8.4.5
protocol A was sometimes synchronous, C sometimes double-latency
* avoid potential deadlock during handshake
* avoid potential deadlock in disconnect during resync
with fencing resource-and-stonith
* allow IO during some bitmap bulk IO operations
* fix "endless" transfer log walk in protocol A
8.4.6 (api:genl1/proto:86-101)
-------
* fix failing of user space helpers since kernel 3.13. This bug is known as
'out of mem, failed to invoke fence-peer helper'
* fix connection timeouts for resources with multiple volumes
* fix an issue with DRBD on linux software raid by properly remapping
bi_bdev
* fix a (hard to trigger) race condition between promoting to primary an
connection handshake. In case the bug was hit the Primary got stuck in
WFBitmapS connection state
* Fix a NULL deref when resuming IO on a diskless primary
* Fix compile issues with uncommon architectures
* improvements to asender performance. With high end backing storage and
networking equipment you may see IOPS improvements between 25% to 50%.
Highest number on a single drbd seen by LINBIT so far: 160000 IOPS
* backport of events2 and status commands from drbd9. This allows to be
DRBD9 compatible starting with this release, and to get used to DRBD9
compatible status reporting
* support for lsblk in drbd
8.4.5 (api:genl1/proto:86-101)
-------
* fix potential BUG_ON in mempool_alloc for older kernels (<2.6.23)
* fix cornercase of resync finished detection
* fix drbd_ldev_destroy to run exactly once and in worker context
* fix spurious detach/disconnect: don't announce WRITE_SAME
* fix NULL pointer deref in blk_add_request_payload
(DISCARD/TRIM handling in sd)
* fix regression: potential NULL pointer dereference
* fix regression: potential list corruption
* fix regression: potential deadlock in adm functions (drbdsetup)
* fix regression: /sbin vs /usr/sbin in scripts
* fix race stopping the worker thread
* new debugfs presence expose oldest requests and other details
* userspace moved to own repository
* linux 3.13 and 3.14 compatibility
* improve adaptive resync controler
* reduce bitmap IO during resync
* allow write-ordering policy to be bumped up again
* trigger tcp_flush_pending_frames() for PING/PING_ACK
* fix potential segfault in drbdadm adjust
* drbdsetup improvements: fix netlink socket buffers; detect modprobe failure
8.4.4 (api:genl1/proto:86-101)
--------
* Changes from 8.3.16
* fix potential deadlock when concurrently fencing and establishing a connection
* fix potential distributed deadlock during verify or resync
* fix decoding of bitmap vli rle for device sizes > 64 TB
* fix for deadlock when using automatic split-brain-recovery
* only fail empty flushes if no good data is reachable
* avoid to shrink max_bio_size due to peer re-configuration
* fix resume-io after reconnect with broken fence-peer handler
* crm-fence-peer: less cib polling, peer-alive detection using crmadmin,
and other improvements
* OCF RA: avoid too tight pacemaker driven recovery loop on failed promote,
implement adjust_master_score parameter
* fix too large bursts for very slow resync rates
* don't let application IO throttle resync to a stall
* Fixed a hole in the challenge-response implementation
* Fixed a theoretical IO deadlock (Only triggers with unusual small AL i.e. 7)
* Fixed attaching to disks with fixed size external meta-data
(This regressions was introduced with 8.4.3)
* Fixed a crash when the connection broke at a very exact point in
time while a graceful disconnect executes
* Support for REQ_DISCARD
* Allow parallel promote/demote
* Allow online changing of al-stripes and al-stripe-size with the
resize command
* drbdadm adjust now deals with IP-address changes correctly
* Align the internal object model with drbd-9.0 (away from drbd-8.3)
* New drbd-proxy option "bwlimit"; allow proxy options on host level
* Compiles on Linux v3.10
8.4.3 (api:genl1/proto:86-101)
--------
* Changes from drbd-8.3.14 and drbd-8.3.15
* Do not end up in Unconnected state if the connection breaks at a
certain point during the handshake (was introduced with 8.3.12)
* Closed a race condition between promoting and connection handshake,
that could lead to an inconsistent view of the peer's UUIDS
* Fixed a race condition that could lead to a full sync, if connection
breaks at a certain point while starting a regular resync
* Fixed crm-fence-peer.sh for pacemaker 1.1.8
* Fixed a list corruption for read requests that complete with an error
after they were aborted
* Fixed a kernel panic if the device size was an exact multiple of 128MiB
* Fixed a potential memory allocation during deadlock online resize
* Improve the handling of read-errors: Make sure that sectors that had a
read error are overwritten with data from the peer on the next resync
* Expose the data-generation-uuids through /sys/block/drbdXX/drbd/
* The new flag --peer-max-bio-size for drbdmeta create-md is of use
if you plan to use the device for long time without peer
* Fixed a potential protocol error and resulting disconnect/reconnect,
when a disk fails on the secondary node. (Introduced with 8.4.2)
* Do not fail empty flushed on diskless, primary node
* Fixed calculation of master scores for single volume and
unconfigured resources in the drbd.ocf RA
* When the connection breaks during a grace full disconnect DRBD failed
to call the eventually configured fence-peer handler. Fixed.
* Obey md-barrier setting when changed via the disk-options command
* Non blocking queuing of AL-updates; This change significantly
improves the number of IOPs in case the workload does not fit into
the configured AL size. (Backport from drbd-9)
* New options for drbdmeta create-md --al-stripes and --al-stripe-size
to create a larger and striped AL
* Fixed drbdadm adjust of max-bio-bvecs
* Fixed a memory leak of 336 byte per attach/detach cycle
* Fix a potential null-pointer deference when configuring invalid
resync after dependencies
* Compiles on Linux v3.7
8.4.2 (api:genl1/proto:86-101)
--------
* Fixed IO resuming after connection was established before fence
peer handler returned
* Fixed an issue in the state engine that could cause state lockup
with multiple volumes
* Write all pages of the bitmap if it gets moved during an
online resize operation. (This issue was introduced with 8.3.10)
* Fixed a race condition could cause DRBD to go through a
NetworkFailure state during disconnect
* Fixed a race condition in the disconnect code path that
could lead to a BUG() (introduced with 8.4.0)
* Fixed a write ordering problem on SyncTarget nodes for a write to a block
that gets resynced at the same time. The bug can only be triggered with a
device that has a firmware that actually reorders writes to the same
block (merged from 8.3.13)
* Fixed a potential deadlock during restart of conflicting writes
* Disable the write ordering method "barrier" by default, since it is not
possible for a driver to find out if it works reliably since 2.6.36
* All fixes that went into 8.3.13
* Removed a null pointer access when using on-congestion policy on a
diskless device
* In case of a graceful detach under IO load, wait for the outstanding
IO. (As opposed to aborting IOs as a forcefully detach does)
* Reinstate disabling AL updates with invalidate-remote (8.4.0 regression)
* Reinstate the 'disk-barrier no', 'disk-flushes no', and 'disk-drain no'
switches (8.4.0 regression)
* Backported the request code from DRBD-9. Improves handling of many corner
cases.
* Support FLUSH/FUA bio flags
* Made the establishing of connections faster
* New option 'al-updates no' to disable writing transactions into the
activity log. It is use full if you prefer a full sync after a primary
crash, for improved performance of a spread out random write work load
* Expose the data generation identifies via sysfs
* "--stop" option for online verify to specify a stop sector
8.4.1 (api:genl1/proto:86-100)
--------
* Fixed a bug that might cause in kernel list corruption triggered by
simultaneous IO on multiple volumes in a single resource
* Fixed a bug that might cause a kernel OOPS in the worker thread while
the receiver tied to establish a connection (drbd-8.4.0 regression)
* Fixed an issue in the receiver that could cause connection triggered by
simultaneous IO on multiple volumes in a single resource
* Consider the discard-my-data flag for all volumes
* Fixed attaching to backing devices that do not support barriers/flushes,
when barriers/flushes are not disabled by the configuration.
(drbd-8.4.0 regression)
* Fixed a rare compatibility issue with DRBD's older than 8.3.7
when negotiating the bio_size
* Fixed a rare race condition where an empty resync could stall with
if pause/unpause events happen in parallel
* Made the re-establishing of connections quicker, if it got a broken pipe
once. Previously there was a bug in the code caused it to waste the first
successful established connection after a broken pipe event.
* crm-fence-peer.sh: Can now deal with multiple DRBD instances being in
a master/slave group
* Optional load balancing for read requests: new keyword "read-balance"
8.4.0 (api:genl1/proto:86-100)
--------
* Fixed handling of read errors during online verify
* Fix for connecting on high latency network links
* Fixed state transitions if fence-peer handler returns after connection was
established again
* Go into inconsistent disk state with on-io-error=pass-on policy
* Timeouts for requests processing on the peer (previously that
worked only if the data socket was congested)
* Reworked Linux backward compatibility mechanism
* Conflicting write detection is now based on an interval tree,
removed the hash-tables (necessary for the unlimited BIO sizes)
* Removed the tracing framework
* Support for multiple volumes (minors, block devices) per connection;
up to 65536 volumes per connection supported
* Reduced IO latencies during some state changes (esp. start resync)
* New on disk format for the AL: double capacity; 4k aligned IO; same space
* Multiple AL changes in a single transaction (precondition for
unlimited BIO sizes)
* DRBD no longer imposes any limit on BIO sizes
* Removed DRBD's limits on the number of minor devices
* DRBD's minors can now be removed (not only unconfigured)
* Switched the user space interface form connector to generic netlink
* drbdadm, configuration changes: volume sections; syncer section removed;
bool options got yes/no values, that improves option inheritance;
resource options
* drbdsetup: new commands for creating and removing resources
and minors
* drbdsetup: new commands for changing disk options while the disk
is attached; ...for changing net options while the connection is
established
* drbdsetup/drbdadm the wire-protocol is now a regular connection option
* Removed drbdadm option --force
* IO freezing/thawing is done on connection (all volumes) level
* fencing is done on connection (all volumes) level
* Enforce application of activity log after primary crash in user space
* Features from drbd-8.3: Allow detach from frozen backing devices with the
new --force option; configurable timeout for backing devices by the new
disk-timeout option
* Renamed --dry-run of connect to --tentative; plus alias in drbdsetup
* drbdadm got a "help" sub command, that shows the specific options
* drbdadm now knows all drbdsetup options, and verify ...
* drbdadm can now process all options in random order, and ignores the "--"
separator; compatibility aliases with the old calling conventions; now it
is compatible with the pre 8.4 way of calling.
* New default values (compared to drbd-8.3) for: minor-count, ko-count, al-extents,
c-plan-ahead, c-fill-target, c-min-rate, use-rle, on-io-error
8.3.10 (api:88/proto:86-96)
--------
* Fixed a subtle performance degradation that might affected synchronous
work loads (databases) (introduced in 8.3.9)
* Fixed a locking regression (introduced in 8.3.9)
* Fixed on-no-data-accessible for Primary, SyncTarget nodes (Bugz 332)
* Progress bar for online verify
* Optionally use the resync speed control loop code for the online verify
process as well
* Added code to detect false positives when using data-integrity-alg
* New config option on-congestion and new connection states ahead and behind
* Reduced IO latencies during resync, bitmap exchange and temporal states
* Only build a single kernel module package on distributions that provide
the infrastructure to have kernel version independent modules
* On 64bit architectures allow device sizes up to one petabyte
8.3.9 (api:88/proto:86-95)
--------
* Fix for possible deadlock on IO error during resync
* Fixed a race condition between adding and removing network configuration.
Lead to a BUG_ON() when triggered.
* Fixed spurious full syncs that could happen after an empty resync and
concurrent connection loss.
* Fixed spurious full syncs that happened when connection got lost while
one node was in WFSyncUUID state (Bugz 318)
* Fixed a race in the meta-data update code path, that could lead to forgotten
updates to the meta-data. That in fact could lead to unexpected behavior
at the next connect
* Fixed potential deadlock on detach
* Fixed potential data divergence after multiple failures
* Implicitly create unconfigured devices which are referenced in sync-after
dependencies.
* OCF RA now also works with pacemaker 1.1
* Allow BIO sizes of up to 128kByte. Note: In case drbd-proxy is used, at least
version 1.0.16 of drbd-proxy is required.
* New configuration keyword on-no-data-accessible. Possible values
io-error, and suspend-io. The default is "io-error", which matches the
previous behavior.
* If the fencing policy is set to resource-and-stonith, the primary node
will creates the new current UUID _after_ the fencing handler
returned. (Before it did immediately)
* Rewrote the resync speed control loop code. New configuration parameters
c-plan-ahead, c-fill-target, c-delay-target, c-max-rate, c-min-rate.
* Disable activity log updates when all blocks of an unconnected device is
are out of sync. That can be activated by using "invalidate-remote" on an
unconnected primary.
* Improved IPv6 support: link local addresses
* Improved resync speed display in /proc/drbd
8.3.8 (api:88/proto:86-94)
--------
* Do not expose failed local READs to upper layers, regression introduced
in 8.3.3
* Fixed support for devices with 4k hard sector size (again)
* Fixed a potential Oops in the disconnect code
* Fixed a race condition that could cause DRBD to consider the peers disk
as Inconstent after resync instead of UpToDate (Bugz 271)
* Fixed a reace condition that could cause DRBD to consider the peers disk
as Outdated instead of Inconsistent during resync (Bugz 277)
* Disallow to start a resync with invalidate / invalidate-remote when the
source disk is not UpToDate
* Forcing primary works now also for Consistent, not only for Outdated and
Inconsistent (Bugz 266)
* Improved robustness against corrupt or malicous sector addresses when
receiving data
* Added the initial-split-brain, it gets called also if the split-brain gets
automatically resolved
* Added the --assume-clean option for the resize command, it causes drbd to
not resync the new storage after an online grow operation
* drbdadm: Do not segfault if stacked-on-top-of refers to an undefined res
* drbdadm: Do not consider configs with invalid after statements as invalid
* drbdadm: Do not segfault if the peer's proxy section is missing
* drbdadm: Allow nullglob in include statement
* drbdadm: Fixed the use of waitpid
* init script: fix insserv headers (Debian 576901)
* Gave the receiving code the ability to use multiple BIOs for writing a
single data packet; now DRBD works with BIOs up to 32kByte also on LVM
devices; from now on the use_bmbv config option does nothing
* New command check-resize, that allows DRBD to detect offline resizing
and to move internal meta-data accordingly
* Added a control loop, that allows DRBD to find auto tune the resync
speed, on connections with large queues (drbd-proxy)
* --dry-run option for connect; disconnects after sync handshake
* --overwrite-data-of-peer got an alias named --force
* Improvements to crm-fence-peer
* Fixed option parsing and stacking in snapshot-resync-target-lvm.sh
* Compiles on 2.6.33 and 2.6.34
8.3.7 (api:88/proto:86-91)
--------
* Lots of fixes to the new RPM packaging
* Lots of fixes to the autoconfig stuff
* Following the rename of CONFIG_LBD to CONFIG_LBDAF
* Silenced an assert. Could trigger after changing write ordering (Bugz 261)
* Fixed a race condition between detach and ongoing IO. Very hard to
trigger, caused an OOPS in make_request/drbd_make_request. (Bugz 262)
* Fixed a regression in the resync handshake code introduced before 8.3.3.
That bug causes DRBD to block during the initial handshake when a partial
resync is not possible but a full resync is necessary. Happens very rarely.
(Bugz 260)
* Do not drop into StandAlone mode when connection is lost during authentication
* Corrected a null test in the authentication code, found by conccinelle,
thanks to upstream integration. The chance to trigger that was probably 10^-9.
* crm-fence-peer.sh is now also usable if DRBD is managed from the xen block
helper script
* Fixes to the init script's dependencies
* Backported cleanups that where contributed to the in kernel DRBD
* Allow online resizing of disconnected devices, new option to drbdsetup
drbdsetup /dev/drbdX resize --assume-peer-has-space
* Allow multiple after options in the syncer section for stacked setups
* Correctly process relative paths in include statements in drbd.conf
* New option (-t) for drbdadm to test syntax of config snippets
* Following Linux upstream changes 2.6.32 (SHASH and in_flight issues)
* New /etc/drbd.conf example that suggests the use of /etc/drbd.d/xxx.res
8.3.6 (api:88/proto:86-91)
--------
* Make sure that we ship all unplug events
* Introduced autoconf, new RPM packaging
8.3.5 (api:88/proto:86-91)
--------
* Fixed a regression introduced shortly before 8.3.3, which might
case a deadlock in DRBD's disconnect code path. (Bugz 258)
* Fixed drbdsetup X resume-io which is needed for the recovery
from the effects of broken fence-peer scripts. (Bugz 256)
* Do not reduce master score of a current Primary on connection loss,
to avoid unnecessary migrations
* Do not display the usage count dialog for /etc/inti.d/drbd status
8.3.4 (api:88/proto:86-91)
--------
* Fixed a regression in the connector backport introduced with 8.3.3.
Affected only kernels older than 2.6.14. I.e. RHEL4 and SLES9.
8.3.3 (api:88/proto:86-91)
--------
* Correctly deal with large bitmaps (Bugz 239, 240)
* Fixed a segfault in drbdadm's parser for unknown sync-after dependencies
* DRBD_PEER was not set for handlers (introduced in 8.3.2) (Bugz 241)
* Fixed a bug that could cause reads off diskless DRBD devices to get very slow
* Fixed a deadlock possible when IO errors occure during resync (Bugz 224)
* Do not do a full sync in case P_SYNC_UUID packet gets lost (Bugz 244)
* Do not forget a resync in case the last ACK of a resync gets lost
* The UUID compare function now handles more cases when connection/disk got
lost during UUID updates (Bugz 251, 254)
* If a resource gets renamed (only) update its /dev/
* drbdsetup get-gi/show-gi sometimes warned about unknown tags (Bugz 253)
* Autotune sndbuf-size and rcvbuf-size by default
* Fixed many spelling errors
* Improvements on the crm-fence-peer Pacemaker integration
* Do not upgrade a Consistent disk to UpToDate when the fence-peer handler
can not reach the peer (Bugz 198)
* Support for Infiniband via SDP (sockets direct protocol)
* Install bash completion stuff on SLES11
* Following Linux upstream changes 2.6.31
8.3.2 (api:88/proto:86-90)
--------
* Fixed the "Not a digest" issue for hash functions already ported to shash
* Fixed a race condition between device configuration and de-configuration
* Fixed: The sync-after logic modified flags of an unconfigured
device. This caused very weird symptoms later. (Bugz 214)
* Fixed a possible imbalance of the 'pe' counter during online verify
* Fixed activity-log reading; could have been (partially) ignored,
leading to incomplete resync after primary crash.
* Fixed a deadlock when using automatic split brain recovery
* Fixed a possible kernel crash in DRBD on highmem kernels. Was triggered by
reading in the bitmap on one device, and writing data to an other, disconnected
devices at the same time.
* Fix for potential segfaults in drbdadm's sh-status & status commands
* Correctly clean up resync status if a detach interrupts a resync (Bugz 223)
* Reasonable error reporting if 'drbdadm invalidate' fails because resync already runs
* New module parameter: disable_sendpage. Workaround for a Xen on DRBD issue
* Allow detach while being SyncTarget (Bugz 221)
* Optional RLE compression of the bitmap exchange ('use-rle' keyword)
* Rewrite of the LRU code
* Allow to skip initial resync: 'drbdadm -- --clear-bitmap new-current-uuid'
* Upon request of Dolphin NICS: The 'sci' keyword is now called 'ssocks'
* Allow more than two host ('on' keyword) sections, new drbdadm option '--peer'
* New, alternate keyword 'floating' for host sections, for matching by ip-address
* An OCF resource agent for pacemaker [Marked as BETA for this release]
* crm-fence-peer.sh: A fence peer handler using pacemaker constraints
* /etc/init.d/drbd stop now works completely independent of the config file
* arbitrary custom device names (prefix drbd_ required)
* Code cleanups for Linux mainline submission (no functional change)
* Using Linux's own tracing framework instead of our own
* Compatibility with Linux 2.6.30 and 2.6.31-rc1
8.3.1 (api:88/proto:86-89)
--------
* Fixed drbdadm invalidate on disconnected devices (reg in 8.2.7)
* Fixed a hard to trigger spinlock deadlock when using device stacking
with the upper device having a smaller minor number than the lower device.
(Bugz 210)
* Adding a missing range check in ensure_mdev()
* Implemented a congested_fn; the kernel can keep its pdflushes running now
* Improvements the connection code for high latency links
* Fix for several potential memory leaks when allocating a device
* Use an additional meta data bit to store the fact of an old crashed primary
* Udev rule that populates /dev/drbd/by-res/ and /dev/drbd/by-disk/
* New timeout option: outdated-wfc-timeout
* New drbdmeta option: --ignore-sanity-checks
* Include statement for drbd.conf
* Improvements to drbd-overview.pl
* Fixed snapshot-resync-target-lvm.sh to work with more than 10 devices
* Do not force a full resync after a detach on a primary node
* Compatibility with Linux 2.6.27, 2.6.28 and 2.6.29
8.3.0 (api:88/proto:86-89)
--------
* Fixed 'sleep with spinlock held' in case online verify found a difference
* Fixed error code pathes in request processing.
* Fix for stack smashing in drbdmeta
* Fixed a bug that could lead to a crash when detaching/attaching
on the primary under heavy IO (Bugz 171)
* Fixed a bug in the new epoch code (introduced with 8.2.7).
Might cause crash at reconnect after connection loss during heavy IO
(Bugz 160)
* Fixed a bug in drbdsetup that could cause drbdsetup wait-connect to
miss the connection event.
* Fixed a race condition in the new barrier code. (Reordered barrier ACKs)
* Do not rely on blkdev_issue_flush() returning ENOTSUPP
* bitmap in unmapped pages = support for devices > 4TByte (was DRBD+)
* checksum based resync (was DRBD+)
* support for stacked resource (was DRBD+)
* Added support for stacked resources to the bash completion stuff
* Added missing documentation (manpages)
* Fixed drbdadm handlers for stacked resources
* Support of drbd-proxy in stacked setups
* RedHat cluster suite (rgmanager) integration scripts
* Renamed 'state' to 'role'
* More build compatibility with older vendor kernels
* Added drbd-overview.pl to the packages
8.2.7 (api:88/proto:86-88)
--------
* Fixed possible Oops on connection loss during sync handshake
* Fixed various possible deadlocks in the disconnect/reconnect and
online-verify code
* Fixed possible access-after-free
* Added support for TCP buffer autotuning
* Added support for AF_SCI aka "Super Sockets"
* Added support for IPV6
* latency improvements
* Support for using barriers to enforce write ordering on the secondary
node. New config options: no-disk-barrier, no-disk-drain
* Merged all changes from 8.0.12 -> 8.0.14 into 8.2
8.2.6 (api:88/proto:86-88)
--------
* The details of the LRU data structures is now hidden from
/proc/drbd but can be re-enabled by echoing 1 to
/sys/module/drbd/parameters/proc_details
* Bash completion support for drbdadm (Installs on all distributions
but RedHat, since they lack the /etc/bash_completion.d directory)
* Fixed the out-of-sync handler it never fired.
* Added the before-resync-target handler, and a default
implementation of a handler that snapshots the target
of a resynchronisation in case it is a LVM2 logic volume.
* Improved error messages and documentation in regards to
false positives of online verify and data-integrity-alg
mechanisms in the presence of ReiserFS or the Linux
swap code.
* Added the max-bio-bvecs option to workaround issues in
a stack of DRBD/LVM/Xen.
* Merged all changes from 8.0.11 -> 8.0.12 into 8.2
* Fixed online resizing in case it is triggered from the
secondary node.
8.2.5 (api:88/proto:86-88)
--------
* Fixed a race between online-verify and application writes.
It caused drbd to report false positives, and very likely
deadlocked immediately afterwards.
* When DRBD is build for kernels older than 2.6.16 mutexes are
provided by a wrapper include file which is shipped with DRBD.
We had a bug in there that caused one of DRBD's threads to
lockup after the first connection loss. Fixed.
* Merged all changes from 8.0.8 -> 8.0.11 into 8.2
8.2.4 (api:88/proto:86-88)
--------
* Fixed the online-verify and data-integrity-alg features.
While preparing DRBD for Linux-2.6.24 a bug was introduced
that rendered most digest based functionality in DRBD useless.
8.2.3 (api:88/proto:86-88)
--------
* Released the online-verify feature from DRBD+ into drbd-8.2
* Fixed the data-integrity-alg feature to work correctly
in 'allow-two-primaries' mode.
* Significant latency improvement: Implemented sane default
CPU bindings (affinity mask) of threads, and added the tuning
option 'cpu-mask'.
* A completely new drbdmeta - finally dealing with
all drbd-0.7 to drbd-8.x conversion cases correctly.
* Merged all changes from 8.0.7 -> 8.0.8 into 8.2
8.2.1 (api:86/proto:86-87)
--------
* Fixed the OOPS when _not_ using a shared secret on kernel
before Linux-2.6.19 (=old crypto API).
* Support for drbd-proxy's configuration directives in drbdadm.
* Look for /etc/drbd-82.conf before drbd-08.conf before drbd.conf
* drbdadm now allows one to move the device, disk and meta-disk
statements out of the host ("on") sections into the resource
section. This allows you to shorten your config files.
* Merged all changes from 8.0.6 -> 8.0.7 to 8.2
8.2.0 (api:86/proto:86-87)
--------
* Branch for new features after 8.1 and 8.0. We will do a number of
features that do not fiddle with the general architecture of DRBD.
This will be like the the current Linux-2.6 development model.
* Implemented the data-integrity-alg option. When this is set to
one of the kernel's hash algorithms, such a hash is shipped with
every user-data carrying packet. In case user-data is corrupted
on the network DRBD protests by dropping the connection.
Changelog for fixes propagated from 8.0.x:
------------------------------------------
8.0.16 (api:86/proto:86)
--------
* Fixed the init script to work with all flavors of LSB
8.0.15 (api:86/proto:86)
--------
* Adding a missing range check in ensure_mdev()
* Fix for several potential memory leaks when allocating a device (Bugz 135)
* Fixed error code pathes in request processing (Bugz 149)
* Fixed an minor issue with the exposed data UUID logic (Bugz 164)
* Fixed tight attach/detach loops (Bugz 171)
* Fixed drbdadm adjust, when a running config contains "--discard-my-data" (Bugz 201)
* Fix stack smashing in drbdmeta
* Adding a missing range check in ensure_mdev() (Bugz 199)
* Compatibility with Linux 2.6.27 and 2.6.28
8.0.14 (api:86/proto:86)
--------
* fixed some access-after-free corner cases
* fixed some potential deadlocks on state changes
* don't use bounce buffers (reduce unnecessary buffer page bounces on 32bit)
* properly serialize IO operations on the whole bitmap
* reduce race possibilities in our thread restart code
* linux 2.6.27 compatibility
* latency improvements using TCP_QUICKACK
* reduced spurious coding differrences between drbd-8.0 and drbd-8.2
* drbdsetup now checks for /proc/drbd instead of playing netlink ping-pong
to determin whether the drbd kernel module is present.
* fixed (harmless but annoying) stack corruption in drbdadm
* adjusted timeouts on 'detach' and 'down'
* fixed unit conversion of disk size configuration parameter
* fixed drbdadm/drbdsetup default unit mismatch
for disk size configuration parameter
* drbd.spec file update
* documentation update
8.0.13 (api:86/proto:86)
--------
* Fixed online resizing if there is application IO on the fly when the
resize is triggered.
* Fixed online resizing if it is triggered from the secondary node.
* Fixed a possible deadlock in case "become-primary-on-both" is used, and
a resync starts
* Fixed the invocation of the pri-on-incon-degr handler
* Fixed the exit codes of drbdsetup
* sock_create_lite() to avoid a socket->sk leak
* Auto-tune socket buffers if sndbuf-size is set to zero
* Made it to compile on Linux-2.6.26
8.0.12 (api:86/proto:86)
--------
* Corrected lock-out of application IO during bitmap IO.
(Only triggered issues with multi-terrabyte volumes)
* If an attach would causes a split-brain,
abort the attach, do not drop the connection
* A node without data (no disk, no connection) only accepts data
(attach or connect) if that data matches the last-known data
* Fixed various race conditions between state transitions
* Various bugfixes to issues found by using the sparse tool
* Corrected the exit codes of drbdsetup/drbdadm to match
the expectations of dopd (drbd-outdate-peer-daemon)
* Corrected the online changing of the number of AL extents while
application IO is in flight.
* Two new config options no-disk-flushes and no-md-flushes to disable
the use of io subsystem flushes and barrier BIOs.
* Make it compile on Linux-2.6.25
* Support for standard disk stats
* Work on stalling issues of the resync process
* drbdsetup /dev/drbdX down no longer fails for non-existing minors
* Added wipe-md to drbdadm
8.0.11 (api:86/proto:86)
--------
* If we had no IO while a device was connected it could happen that
the pending count was erroneously decreased to -1 at disconnect.
Fixed.
* Fixed a race that could deadlock worker and receiver while
disconnecting a diskless node from a primary peer.
* Fixed a minimal meory leak, upon each module unload of DRBD.
8.0.10 (api:86/proto:86)
--------
* Fixed a race condition in the disconnect code path that could cause
the pending count to not return to zero. This means that the
next role change will block forever.
8.0.9 (api:86/proto:86)
--------
* In case our backing devices support write barriers and cache
flushes, we use these means to ensure data integrity in
the presence of volatile disk write caches and power outages.
* Fixed DRBD to no longer log
"Sync bitmap getting lost (drbd_bm_set_bits_in_irq: (!b->bm))"
endlessly after the local disk was lost.
* Fixed protocol A for BIOs larger than the page size. If you
hit the bug, DBBD would simply lose connection.
* Don't accidentally truncate the device in case a secondary with
a too small disk gets connected.
* Changed state processing so that state changes visible
via the drbdsetup events interface are always in the right order.
* Made drbddisk's exit codes more LSB compliant.
* Back-ported the new drbdmeta to drbd-8.0 (from drbd-8.2).
* More robustness to the code that establishes connections.
* Made '/etc/init.d/drbd status' to print a nice overview.
* Made it to compile on Linux-2.6.24.
8.0.8 (api:86/proto:86)
--------
* Improvements to the bitmap code. (The old code might re-enable
interrupts by accident)
* Fixed a endianness issue in the write protocol. C bit-fields are
might by laid out differently on little/big endian machines.
* Drbdadm's adjust forgot sometimes to adjust options values that
where inherited from the common section, fixed that.
* Removed dopd. It gets (and should be) shipped with heartbeat.
* When peer authentication is enabled, you could trick drbd to send
a state report packet before it authenticated itself. Fixed that.
* Added robustness to resync pause/continue.
* Drbdsetup should not report a random error if no netlink
answer is received from the drbd module.
* Fixes to error code paths. ( drbd_drain_block() and lc_alloc() )
* Fixed a possible OOPS in case one manages to loose disk and
network concurrently. (iSCSI disk and network over same switch)
* Fixed the broadcasting of state change events to userspace.
8.0.7 (api:86/proto:86)
--------
* Fixed drbdmeta's conversion of 07 style meta data.
* Handle the failure of vmalloc() in the bitmap code more gracefully.
* Do not pause resync on unconfigured devices.
* Added missing pieces of the implementation of the "pri-lost" handler.
* Added the "split-brain" handler.
* Drop the network config after failure to authenticate.
* Made it to compile on Linux-2.6.24-rc1.
* Fixed an unlikely race that could cause a device to get stuck
in SyncPause.
* Online resizing failed to start resync properly (although it
set up all the meta data correct). Fixed that.
* Minor improvements to documentation and error messages.
8.0.6 (api:86/proto:86)
--------
* Fixed DRBD to not deadlock while doing bitmap updates on Linux
2.6.22 and later.
* Make it compile on Linux-2.6.22 and later.
* Removed a hard coded path to docbook DTDs from our SGML files,
maybe improving the situation with building the documentation.
* When a drbd connect attempt gets accepted onto a other program,
that simply closes the socket, drbd stays for some seconds in the
"BrokenPipe" network state. When one removed the network
config during that time, drbd OOPSed. This is fixed now.
* drbdmeta can now also initialize meta data on meta devices
smaller than 128MB.
* Added an explicit NULL argument to our ioctl() calls in drbdmeta.
* Added scripts/block-drbd, which is a nice way hand over DRBD
role assignment to Xen, allowing one to do Xen live migrations
in a sane way.
* Added scripts/pretty-proc-drbd.sh
* Added an option to drbd.conf which instructs the init script
to promote DRBD devices to primary role upon machine start up.
8.0.5 (api:86/proto:86)
--------
* Changed the default behavior of the init script. Now the init
script terminates in case the devices refuse to because they
had a split brain. Introduced an option to preserve the old
behavior.
* Fixed a bug where the local_cnt could get imbalanced upon a
state change.
* Fixed an bug in the UUID algorithm, that could lead to both
sides in cs:WFBitMapT state. It was triggered when the disk
on the SyncTarget gets detached and attached.
* Implemented proper size checking on strings that get communicated
with DRBD's netlink protocol.
* Changed the maximal length of device names from 32 characters to
128 characters. (udev based disk names might be very long nowadays)
* Fixed the after-sb-0pri policies discard-younger/discard-older
* When the resync speed was changed to a considerably lower
value while resync was running, it could happen that we erroneously
decremented the local_cnt too often.
* Fixed a bug in the UUID code, that caused drbd to erroneously report
a split brain after changing the role of a diskless node multiple
times.
* Both nodes ended up in SyncSource when a state change occurred on
one node while the disk state on the other node is in the temporal
'Negotiating' state. Fixed got fixed.
* drbdmeta's parse/scan code for meta-data dumps got fixed for
huge devices, and an improved error reporting.
* drbdadm had difficulties with option values of type string that
start with an digit. Fixed.
* Fixed a code path that should it make possible to unload the
module even in case some of our receive buffers leaked.
* The usermode helper program is now user definable. It is no
longer hardcoded set to 'drbdadm'.
8.0.4 (api:86/proto:86)
--------
* Fixed an OOPS in case you do an invalidate on an diskless device. And
made invalidates on diskless devices possible by using drbdmeta.
* Fix for an possible OOPS in drbd_al_to_on_disk_bm().
* Fix for a possible OOPS. This issue was triggered when you do an
attach very soon (ms) after the disk was dropped.
* Fix for a race condition in receive_state(). Symptom was that the
resync stalls at 100% on a node.
* Some block devices fail requests by clearing the BIO_UPTODATE flag
(that is ok), but not returning an error (that is strange).
We now deal with that correctly.
* Drbdadm's parser will now reject config files with resources with
missing "on" sections. (Instead of segfaulting)
* Init script continues in case the setup of a single resource fails.
* Improvements to the "drbdsetup events" interface: Updates about
the resync progress and initial state of all devices if called with "-a".
* The benchmark/dm program can now also create custom bandwidth loads.
8.0.3 (api:86/proto:86)
--------
* Fixed a race condition that could cause us to continue to traverse a bio
after it was freed. (led to an OOPS)
* Fixed a race condition that could cause us to use members of an ee, after
it was freed. (led to various weirdness)
* Language fixes for the man pages.
* The drbdsetup commands (events, wait-connect,...) release the lock now.
* Minor fixes and updates to the user land tools and to the peer outdater.
8.0.2 (api:86/proto:86)
--------
* Removed a bug that could cause an OOPS in drbd_al_to_on_disk_bm()
* Improved the robustness of the UUID based algorithm that decides
about the resync direction.
* Fixed the error handling in case a the open() of a backing
block device fails.
* Fixed a race condition that could cause a "drbdadm disconnect" to hang.
* More verbosity in we can not claim a backing block device.
* More verbosity and paranoia in the bitmap area.
* On some vendor kernels 8.0.1 did not load because of kzalloc. fixed.
* Fault injection can now not only be turned on or off, but can be
enabled on a per device basis.
* Fixed the scripts and files needed to build drbd into a kernel.
8.0.1 (api:86/proto:86)
--------
* Fixed some race conditions that could trigger an OOPS when the local disk
fails and DRBD detaches itself from the failing disk.
* Added a missing call to drbd_try_outdate_peer().
* LVM's LVs expose ambiguous queue settings. When a RAID-0 (md) PV is
used the present a segment size of 64k but at the same time allow only
8 sectors. Fixed DRBD to deal with that fact correctly.
* New option "always-asbp" to also use the after-after-split-brain-policy
handlers, even it is not possible to determine from the UUIDs that
the data of the two nodes was related in the past.
* More verbosity in case a bio_add_page() fails.
* Replaced kmalloc()/memset() with kzmalloc(), and a wrapper for older kernels
* A fast version of drbd_al_to_on_disk_bm(). This is necessary for short
(even sub-second) switchover times while having large "al-extents" settings.
* Fixed drbdadm's array overflows (of on stack objects)
* drbdsetup can now dump its usage in a XML format
* New init script for gentoo
* Fixed Typos in the usage of /proc/sysrq-trigger in the example config.
8.0.0 (api:86/proto:86)
--------
* No effective changes to rc2.
8.0rc2 (api:86/proto:86)
--------
* Added the well known automagically adjust drbd_config.h to
make drbd compile on every by vendor's backports defaced
kernel. ( Linux-2.6.x only of course )
* Fixed races with starting and finishing resync processes
while heavy application IO is going on.
* Ported DRBD to the new crypto API (and added a emulation of the
now API on top of the old one for older 2.6.x kernels)
* Code to perform better on Ethernet networks with jumbo
frames.
* Bugfixes to our request code (race conditions).
* Every error code that is returned by drbdsetup has a
textual description by now.
8.0rc1 (api:86/proto:85)
--------
* The drbd-peer-outdater got updated to work in multi node heartbeat
clusters. (But we still not succeeded to get this into Heartbeat's
repository accepted.)
* Fixed resync decision after a crash in a pri-pri cluster.
* Implemented the ping-timeout option for "sub-second" failover clusters.
* Implemented all the "violently" options in the reconnect handling.
* Updated man pages of drbd.conf and drbdsetup.
* Removed the "self-claiming" on secondary nodes.
* Fixed an uncountable number of bugs.
8.0pre6 (api:85/proto:85)
--------
* All panic() calls where removed from DRBD.
* IO errors while accessing the backing storage device are now handled
correct.
* Conflict detection for two primaries is in place and tested.
* More tracing stuff
* Lots of bugs found and fixed
8.0pre5 (api:84/proto:83)
--------
* The request code was completely rewritten.
* The write conflict detection code for primary-primary is currently
broken, but will be fixed soon.
* drbdsetup is no longer based on IOCTL but works now via
netlink/connector.
* drbd_panic() is on its way out.
* A runtime configurable tracing framework got added.
* A lot of effort was put into finding and fixing bugs.
8.0pre4 (api:83/proto:82)
--------
* Added the "drbd-peer-outdater" heartbeat plugin.
* New ("cluster wide") state changes. (Cluster wide serialization of
major state changes, like becoming primary, invalidating a disk etc...)
* Write requests are now sent by the worker instead out of the process's
context that calls make_request().
* The worker thread no longer gets restarted upon loss of connection.
* A test suite developed by students of 'FH Hagenberg' was added.
8.0pre3 (api:82/proto:80)
--------
* Now it works on device mapper (LVM) as well as on "real" block devices.
* Finally (after years) a sane "drbdadm adjust" implementation, which is
really really robust.
* Fixes for 64bit kernel / 32 bit userland environments
* Fixes in the sys-v init script
* Renamed "--do-what-I-say" to "--overwrite-data-of-peer". Hopefully
people now understand what this option does.
8.0-pre2 (api:81/proto:80)
--------
* removed the "on-disconnect" and "split-brain-fix" config options and
added the "fencing" config option instead.
* Updated all man pages to cover drbd-8.0
* /proc/drbd shows the whole drbd_state_t, as well the logging of state
changes shows every field of drbd_state_t now.
* Deactivated most of the TCQ code for now, since it changed again
in the mainline kernel.
* Minor other fixes.
8.0_pre1 (api:80/proto:80)
--------
* Removed support for Linux-2.4.x
* Cleanup of the wire protocol.
* Added optional peer authentication with a shared secret.
* Consolidated state changes into a central function.
* Improved, tunable after-split-brain recovery strategies.
* Always verify all IDs used in the protocol that are used as pointers.
* Introduced the "outdate" disk state, and commands for managing it.
* Introduced the "drbdmeta" command, and require the user to create
meta-data explicitly.
* Support for primary/primary (for OCFS2, GFS...)
* Replaced the sync-groups with the sync-after mechanism.
* The "common" section in the configuration file.
* Replaced the generation counters (GCs) with data-generation-UUIDs
* Improved performance by using Linux-2.6's BIOs with up to 32k per
IO request. Before we transferred only up to 4k per IO request.
* A Warning if the disk sizes are more than 10% different.
* A connection teardown packet to differentiate between a crash
of the peer and a peer that is shut down gracefully.
* External imposable SyncPause states, to serialize DRBD's resynchronization
with the resynchronization of backing storage's RAID configurations.
* Backing storage can be hot added to disk less nodes.
* Prepared for advanced integration to Heartbeat-2.0
* Changed internal APIs so that missed writes of the meta-data super
block are reported as they happen.
* The http://usage.drbd.org sub project.
* Rewrote the scanner/parser of drbd.conf. 10 times smaller/faster and
easier to maintain.
* Asynchronous meta-data IO [ Code drop from the DRBD+ branch ]