forked from LINBIT/drbd-0.7
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathChangeLog
542 lines (485 loc) · 22.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
Latest:
------
ChangeLog last updated: $LastChangedRevision$
$LastChangedDate$
Cumulative changes since last tarball.
For even more detail, use "svn log" and "svn diff".
0.7.25 (api:79/proto:74)
-----
* Made it to compile on Linux-2.4 again.
* Backported a fix to not deadlock on 2.6.22 and later.
0.7.24 (api:79/proto:74)
-----
* Fixed leakage of bios in case we are diskless.
* A fix to the device name guessing code.
* Made it to compile on 2.6.21 and gcc-4.1 without warnings.
0.7.23 (api:79/proto:74)
-----
* Made it to compile on 2.6.19.
0.7.22 (api:79/proto:74)
-----
* Fixed bugs in the implementation of protocol A and B.
we noticed that in protocol A and B, on connection loss,
we could "forget" to set certain areas out of sync.
so resync in those protocol has been broken all along!
* Fix races between failure in drbd_send_dblock
and concurrently running tl_clear
* Fix potential access-afer-free in drbd_dio_end
* Fix possible list corruption respective resulting deadlock in
receive_DataRequest
* Improved the drbd_thread_stop / start code
* Gracefull removal of devfs and other updates.
* Implemented the "freeze_io" option for "on-disconnect"
0.7.21 (api:79/proto:74)
-----
* Fixed the "syncer stalled" after reconnect symptom.
* Fixed the "stalled in WFParams" after reconnect symptom. The cause
of this bug was actually a misuse of the data socket.
* Allow to set the uplug_watermark to 1, only usefull for very strange
cases.
0.7.20 (api:79/proto:74)
-----
* The GC comparison code failed to start a resync in case the two
cluster node failed simultaniously (common power failure).
* Fixed DRBD's code to start kernel threads to work on 2.6.17 also.
* IOCTL return codes fixed for 32bit userland - 64 bit kernel
setups.
* New config option "unplug-watermark".
* Released the drbd_alloc_ee() / drbd_free_ee() implementation from
the DRBD+ branch to the main branch.
0.7.19 (api:78/proto:74)
-----
* Fixed a bug where lc_del() left a list poison in an LRU chache's
hash table. The only way to trigger this bug was:
up (>>200M), primary, mkfs, resize to 200M, down, up
* DRBD now propagates the backing storage's read ahead properties
to upper layers. With devices that read very fast, this is
important.
* GFP_KERNEL was changed to GFP_NOIO in a few places, to make it
more save against deadlocks in the memory subsystem.
0.7.18 (api:78/proto:74)
-----
* Under high memory pressure it was possible to hit a deadlock
on a kmalloc(). Changed the GFP mask, it is no longer possible to
deadlock it with memory pressure.
* With very unlucky network timing during connect DRBD falls into
a connect / drop-connection loop, that as soon as DRBD is in this
loop is very stable. This is fixed now, DRBD detects this situation
an breaks out of it.
* Fix to the init-script. Now it waits until udev has created
the device nodes of _all_ resources.
* A small fix for the 32bit userland 64bit kernel people, running
older kernels.
* Improved handling of IO errors during initial read in of the
activity log.
0.7.17 (api:77/proto:74)
-----
* There was a bug that could cause the activity log to be not applied
after a primary crash, when an other size than 127 elements was configured.
* There was a bug in the activity log code, that could cause that the
latest update to the AL is omitted at recovery time.
* The "Marked additional XXKB as out-of-synced based on AL." message
showed one one eighth of the real amount, fixed.
0.7.16 (api:77/proto:74)
-----
* DRBD no longer shrinks an consistent device if it gets connected to
an smaller peer or attached to a smaller disk.
* There was a bug related to the degr-wcf-timeout config option, it was
never used in recent DRBD releases. Fixed.
* Made DRBD work with Neil Brown's patch, that serializes recusive
ralls to generic_make_request(). FC4 included that patch in its
later kernels.
* Minor fixes to drbdadm
* Compiles now also with Linux-2.6.16-rc1
* Updates to documentation and example config file to make it more
clear that we talk about byte/second and not bit/second.
0.7.15 (api:77/proto:74)
-----
* Fixed a bug in the GC code that could cause a resync attempt
in the wrong direction.
* Made DRBD's compat_ioctls work with kernels higher than 2.6.14. This
means DRBD builds on AMD64/x86_64 with 2.6.15 and higher again.
* drbdadm no longer looks in the current directory for its
backend programs (=drbdsetup), but instead looks in the directory
of the drbdadm executable and in $PATH.
* Removed the examples from manpage, added a pointer to the HA-wiki.
0.7.14 (api:77/proto:74)
-----
* Fixed a SMP race condition introduced in 0.7.12, that could cause
a lockup on a busy node in Primary/SyncSource state.
* In case a disc failes during a read requests, the read requests
is reissued to the peer. Now it also tells the peer that the disk
broke.
Without that fix this bug could cause a resync in the wrong direction
after a cluster restart.
* Some improvements to the documentation.
0.7.13 (api:77/proto:74)
-----
* Fixed a SMP race condition that caused the resync process to stall
after a few seconds to minutes.
* The sync speed display is replaced by the word "stalled" in case the
syncer makes no progress within 20 seconds.
* Some improvements to the documentation.
0.7.12 (api:77/proto:74)
-----
* The /proc/drbd code used a fixed single page buffer. This breaks
at about 30 configured devices. Changed that to use the seq_file
interface.
* Bind the source of TCP connections to the IP address that is
mentioned in the configuration.
* Fixed a connection flip-flop bug when the two peers used different
user provided sizes.
* Various fixes in the online-resize code path, including online shrinking
and handling the case that the memory allocation for the new bitmap
failed.
* Random improvements to drbdadm:
* The "size" option is now allowed in the disk section
* A new "disable-ip-verification" option for the global section
* The "disable-io-hints" option is not longer available.
* Allow "drbdadm -- --size=XXX resize r0".
* Fixed a potential very unlikely race condition that in the end would
trigger an ERR in drbd_actlog.c:607. Actually I never saw this trigger.
* Fixed a logic bug in _drbd_process_ee() that, paired with a race condition
could trigger a "ASSERT(b->n_req == set_size)" upon disconnect.
* Removed the "disable_io_hints" module parameter.
* Added the "disable_bd_claim" module parameter, to allow users, WHO
KNOW WHAT THEY DO, to read-access the data on the secondary node.
* Allow "drbdadm invalidate" only in StandAlone and Connected states.
* DRBD no longer goes into StandAlone mode, if there is an random network
error during the handshake phase, instead it retries the to connect.
Only critical problems, e.g. incompatible protocols will cause it
to go into StandAlone mode.
0.7.11 (api:77/proto:74)
-----
* The upper limit of the runtime tuning parameter max_buffers
was ways too low for today's IBM storage controllers.
Was 32 - 10000 ; Now it is 32 - 131072 ( Now one could
allow DRBD to allocate up to half a gigabyte of memory as
receive buffers)
* A fix to the Makefiles to make building of RPMs work on RAHS4.
* A workaround to have DBRD running on PPC64 with Linux-2.4.x kernels,
on Linux-2.6.x everything was fine already.
* Removal of dead code (busy_blocks).
* LINBIT drbd rpms now conflict with km_drbd
(SuSE's kernel module source hook)
* possibly existing /lib/modules/*/extra/drbd.ko are renamed to .orig in the
post-install scripts to avoid conflicts with existing modules from
distribution kernel packages
* fixed flex input buffer overflow
drbdadm_scanner.fl produced tokens of arbitrary length due to excessive use
of "+" and "*" modifiers. Now these are replaced with "{x,y}" modifiers, so
it should no longer segfault, which was actually observed e.g. with long
continuous comment blocks (~5k).
0.7.10 (api:77/proto:74)
-----
* 0.7.9 had a memory corruption bug and memory leakage (BIOs).
This time I did the clone_bio() fix myself, and this release is
supposed to work with SLES9 SP1, Linux-2.6.11 and Linux-2.6.12.
0.7.9 (api:77/proto:74)
-----
* A fix that makes DRBD work on SLES9 SP1 kernel, and
probabely will be also necessary for Linux-2.6.11
0.7.8 (api:77/proto:74)
-----
* Fixed a bug that caused the syncer to starve on devices
bigger than 2 TB on 32bit systems (=CONFIG_LBA).
* Made online resizing actually work. Now it makes a lot
more sense to put DRBD on top of LVM.
* Made the user dialog to work on RedHat based distributions.
* A small optimization that improves the performance of the
syncer when woking with IBM's ServRaid Controllers (ips).
May have a positive effect with other Controllers as well.
* Made epoch_size atomic. This removes a SMP race condition that
could lead on some Xeon CPUs to an ASSERT printk, but did no other
harm than printing messages to the syslog
* Fixed write_gc.pl to work with the perl version delivered
with RHAS3.
* Made the initscript to abort if one of the setup commands fails.
0.7.7 (api:77/proto:74)
-----
* "drbdadm adjust [res...]" now does the calls to drbdsetup
in an improved order, first the disk config of all devices,
then the syncer and net config last. With the old scheme
drbdadm run in a timeout when setting up more than about
6 devices at once (startup script...).
* New progress indication in the startup script.
* Bugfix to a race that could cause a OOPS on a BUG() macro
in mod_timer while starting resync. The more devices you have
the higher the probability to hit this race condition.
* Fixed a bug in the sync-groups conde, that only showed up
when you have more than 4 resources in your config.
The resync process was continued too early on the node in
SyncTarget state.
* Fixed a stupid typo in the range-check code, that was intoduced
in 0.7.6. Drbdsetup allowed "max-buffers" to be in the range
from 32 to 32.
* Makefiles are gcc-2.95 compatible again.
0.7.6 (api:77/proto:74)
-----
* Fixed bug that could cause a lockup of the receiver and
asender threads, the visible outcome was that the syncer
starves.
* Fixed a bug that under specific circumstandes caused that the
SyncSource node did not recognised that a resync process was
finished.
* "drbdadm invalidate [res]" was not working correct, while
"drbdadm invalidate_remote [res]" works. Fixed the former.
* Make DRBD work on Linux-2.6.10-rc2 and newer: Replaced
sock_alloc() by sock_create(), replaced TASK_ZOMBIE by
EXIT_ZOMBIE.
* Range checks in drbdadm for all numeric configure parameters.
* A fix to make ioctl()s work on machines with 64bit kernel space
and 32bit user space.
* Ioctl()s are only allowed if the caller has CAP_SYS_ADMIN set.
* Removal of warnings on 64bit architectures.
* Backport of find_first_bit() for x86_64 aka AMD64 for use on
that architecture under Linux-2.4.x
* Changed drbdadm to do the syncer config before the net config.
* Changed the way drbdadm determines the minor_count parameter for
module loading.
* Improvements to the drbddisk script, to do the right thing
in case Heartbeat is configured with a small timeout than DRBD.
* On request of the debian package maintainers, the debian directory
from SVN is not longer included in the tar.gz releases.
0.7.5 (api:76/proto:74)
-----
* Fix a bug that could case read requests to return wrong data
on a node in Primary/SyncTaget state. (A very unlikely race,
it is not known that this ever triggered; It was found by an
ASSERTION in the code)
* Removed the 30MB/sec speeding limit for the syncer. (this was
intended as a debugging aid, but it was not removed in time)
* A fix to drbdsetup, to make drbdadm adjust work if a resource
is diskless.
* Got rid of the compiler warning when build on a kernel with
CONFIG_LBD not set.
* Now the device nodes are created with sane permissions.
* The debian package is now named "drbd0.7"
* set_fs() is now also done for sendpage()
* Better compatibility with early 2.4.x kernels (BH_Launder, min()/max())
* Touch /var/lock/subsys/drbd, needed for RedHat based distros.
* Improvements to the INSALL document
* Removed HOWTO, ja, pt_BR ... all hopelessly outdated.
disabled benchmark/run.sh
0.7.4 (api:76/proto:74)
-----
* Fixed a critical bug with Linux-2.4.x and HIGHMEM!
* Fixed a bug that only showed up with the HIGHMEM problem on
Linux-2.4.x -> It caused the resync process to starve.
* The drbd.spec file now creates /dev/drbd in the post-install stage.
* Fixed support for more than 2TB storage. Now DRBD supports up to
3.99TB storage. It will also tell you, that it is not supported if
you try to set up a bigger device.
* Debian's build rules file now knows about the adjust_drbd_config_h.sh
file.
* DRBD_DISABLE_SENDPAGE available in drbd_config.h
0.7.3 (api:75/proto:74)
-----
* Fixed minor bugs in the handling of the generation counters.
* prevent possible in-kernel buffer overflow in drbd_proc.c
* Fixed debian's postinst script to create /dev/drbd? instead of /dev/nb?
* drbd status:
be nice to heartbeat, include "OK" in output.
* added FullSync meta data flag to read/write gc.pl
* make the RHEL3 happy (page_count no longer in mm.h, but in mm_inline.h)
* [Patch by Pavel Semerad]. Also use the drbd_devfs_name on Linux-2.4.x
* fix missing dependencies on drbd_config.h
0.7.2 (api:75/proto:74)
-----
*) Proper handling of backing storage devices that occasionally fail
READA (=read ahead) requests. (E.g. LVM and MD)
*) DRBD now fails READA requests itself, if a resynchronisation is running
and it would need to fetch the block from its peer.
*) "drbdadm adjust" had a race, which caused random errors. ( Missing
waitpid() ). Fixed now.
*) Proper subtract SyncPause times from the syncer performance numbers.
*) Fix to the syncer progress bar in /proc/drbd.
*) Fix to debian build rules.
0.7.1 (api:75/proto:74)
-----
*) Upgrade instructions for 0.6.x -> 0.7.0 and 0.7.0 -> 0.7.1
*) Workaround for XFS' IO requests with page count of zero.
*) Handle the human and the timeout count correctly in the new init script.
*) The implementation of the incon-degr-cmd was missing, added.
*) Fix for integer overflow in /proc/drbd syncer progress display
*) Longer timeouts in drbdadm for drbdsetup commands witch operate on
meta data.
*) New major number 147 (officially registered at lanana.org).
*) Added a missing w_resume_next_wg() in case we stop syncing because
of connection loss.
*) Fixed a Linux-2.2-ismus in recieve_data_tail(). Should considerably
speed up protocols A and B.
*) Some work on vendor kernel compatibility
0.7.0 (api:74/proto:74)
-----
Drbd-0.7 was actually forked off from drbd-0.6.1 (actually -pre18).
*) Complete new way of doing resynchronisation. Does no longer need
to do tricks with the nice value, and delivers very good performace.
*) Decoupling of role assignment (primary/secondary) from the direction
of resynchronisation. (Necessary for primary/primary)
*) All "ack" and "ping" packets now go through the msock.
(Prerequisite for primary/primary)
*) Reworked a lot of internals to work with sector_t instead of
blocknumbers. DRBD works now with XFS, and will be complete
immune to changes in the block size.
*) Reworked the tl_ code, the user no longer has to specify the size
for a preallocated transfer-log.
*) Improved metadata; Ao the device size is now stored in metadata,
users no longer need to configure it.
*) Online resizing via "drbdsetup resize"
*) Resynchronisation groups "drbdsetup syncer -g"
*) New (very short!) sys-v init scripts, new userland tool "drbdadm"
*) Changes to the way we allocate memory. We want to survive hard OOM
situations. (partially done, partially ongoing work)
*) Implemented the Activity-Log and the persistent bitmap.
0.6.1 (api:58/proto:61)
-----
Since the last one should have been 0.6, this is 0.6.1:
*) Rewrote the receiver code. This one eliminates inter-device deadlocks,
as far as I can tell (and is a big step in the direction of active/active)
*) Introduced a new Packet into the protocol. The "WriteHint" drastically
improves performace of protocol C in conjunction with a FS with mount
option "sync".
*) Fixed a bug that could cause a OOPS on the primary if the connection
is lost when the send queue is not empty.
*) Fixed a bug that could cause data corruption on the secondary if you
put high IO-load on the primary during resynchronisation.
*) Fixed a bug that could cause the secondary to "forget" to send some
ack packets if it is under high load during resynchronisation.
*) devfs support by Lelik P.Korchagin <[email protected]>.
*) Fixed a bug that could crash a task in kernel space on the primary
in the moment the secondary leaves the cluster.
*) A few SMP-only bugs removed.
*) The state files are now written with O_SYNC.
*) Droped the postponepackets; Checkeing the liveliness via a second
TCP connection (msock). -- No more timeout in case of the standby
node has high load.
*) If an application which is writing to a drbd device receives a signal
while it sleeps in DRBD's send_msg call, the connection is dropped.
-- Fixed this bug. (You could observe this with tiobench)
*) Fixed serious bugs in the meta-data handling.
*) Split the code of the module into 7 files
*) Added reasonable support for Linux-2.4.x.
Yes you can put in on top of RAID/LVM and you can even stack
multiple drbd devices.
*) Completely removed the SYNC-LOG and implemented a better scheme
*) Removed the mbdh.h interface since it was useless
*) Implemented correct signal sending (not longer done from interrupt time)
Based on a patch from Ard van Breemen <[email protected]>
*) Implemented correct removing of requests from the transfer log
*) Fixed a "can not guess name" bug in drbdsetup
*) implemented /etc/init.d/drbd XXX status
*) From now on the drbd wire protocol and the ioctl interface carry
interface version numbers, which are independend of the release
number. E.g. You can combine a drbd device of release 0.6.1 and
0.5.8, since both have protocol version 58. You can even use
drbdsetup of 0.5.8 to configure the module of the 0.6.1 release.
0.5.8
-----
A lot of new features: (This release should be named 0.6)
*) codecleanup of the on-the-fly counters
*) drbdsetup is not splitted into a disk and a net part / syntax changed
*) syncer rewritten. Now a lot faster but currently only woking with
4K based file systems. (mkfs -b 4096)
*) Meta-data management implemented. => DRBD is now able to select
the node with the up-to-date data to become primary after a cluster
restart.
*) datadisk / drbd scripts rewritten two times :) Now they are in
perl and we have a new configuration file named /etc/drbd.conf
0.5.7
-----
Bugfix release:
*) Fixed the bh_count > 0 bug.
*) Fixed the multiple-timeouts-bug.
*) Fixed a bug when working with a fs with a blocksize other than 4096
*) Applied the patch from Juri Haberland against the datadisk script.
0.5.6
-----
No updates to the mirroring core. (It seems to be stable)
A lot of updates to the "user interface"
*) Better log-messages and better messages of drbdsetup.
*) Fixed a few crashes of drbdsetup/ioctl interface.
*) It is not longer possible to use an already mounted partition.
*) It's possible to unconfigure a drbd device now.
*) Fixed the "infinite error messages" when a wrong disk size was given.
A better datadisk script (Thomas Mangin contributed this, thanks)
Some work on the protocol:
*) Cleanup
*) Added automatic reconnect
*) An intace connection is monitored by "ping" packets, thus
a secondary will notice a broken connection immediately.
Found and fixed a 64 Bits problem in the bitmap based syncer.
0.5.5
-----
SMP and ext3 fixes to the module.
Scripts should work on RedHat distributions now.
(Automatic) support for more than two devices.
0.5.4
-----
No more zombies, when a connection is canceled.
An important SMP fix. (It seems to work on SMP now)
A lot of small improvments.(benchmarking, stress testing... )
0.5.3
-----
More sanity checks.
Fix to protocol C.
Script for automatic benchmarking.
New heartbeat scripts.
0.5.2
-----
Improved the behaviour upon loss of connction. Now it
always goes into WFConnection state instead of Unconnected.
Added a command to drbdsetup to force a run of the basic syncer.
Things to be fixed: Heartbeat scripts, protocol C on SMP machines.
0.5.1
-----
Fixed the lockup upon loss of connection on SMP machines.
Added a kludge to make use with heartbeat possible.
Added scripts for use with heartbeat.
0.5
---
The code was considerably changed and enlarged.
There are now three wire protocols.
A) A write operation is complete as soon as the data is
written to disk and sent to the network.
B) A write operation is complete as soon as a reception
acknowledgement arrived.
c) A write operation is complete as soon as a write
acknowledgement arrived.
The basic syncer was replaced by a bitmap-based syncer. The new
one only updates the blocks which were modified during the
absence of the newly joined node.
A huge load of bug fixes.
Finally I cleaned up the drbdsetup utility. Now all the
features are accessible with command line options.
0.4
---
There is a basic syncer now. It will bring a newly joined
secondary node up to date by copying each block.
It is working at 250KB/second (hard coded in drbdsetup for now).
IO errors on the local disk are now reported as if there
was an io error on drbd.
0.3
---
There is a new timeout. If the primary node cannot send (TCP!)
within the timeout, it falls back into unconnected operation.
You can also disable the timeout (by setting it to zero), but in
case of a failure of the secondary node, your primary node will block!
Currently the timeout is hard coded into drbdsetup (3 Seconds).
0.2
---
This time I worked a lot looking into all possible deadlocks...
I think if you do not use any loop-back device it should
work without deadlocking. It is not working on top of the loop
block device and it is not working via the loop-back network!
This time it should handle all block size issues, and thus
reiserfs is feeling happy on top of drbd.
Status of drbd-0.1.tar.gz
-------------------------
This is a proof-it-is-no-vapo-ware-release and not more!
It is the first time it is somehow working without immediately crashing
my machine (you can "even" unload the module). It is not able to
handle block sizes other than 1024 and there is not a single line of code
of the sync-a-new-secondary stuff yet.
The used port is hard coded into drbdsetup (7788) for now.
I have tested it on an Intel box and an alpha machine.