2 - fix: watchdog cannot do its job if it is cleaned up to early
3 - fix: clear sa_flags and sa_mask before use, although ignored
6 - added option --pid to print PID of current process
7 - updated usage to include option -W
8 - man page formatting fixes
10 - support compiling on systems that do not define PATH_MAX
13 - added memory advise for buffer memory
14 - compatibility fix for Solars st driver
15 - prevent buffer overflow attack via defaults file
16 - ignore defaults file from other users
17 - updated documentation for use with cron
21 - new feature: set option defaults in ~/.mbuffer.rc
22 - enhancement: write status to the log file
23 - enhancement: added option to suppress status logging
24 - fix: formatting fix for summary message
27 - reverted incorrect fix for -P 100, which may lead to data corruption
28 - reenable hash libraries (no correlation with data corruption)
29 - bail out if any output fails to initialize
30 - refixed hang on -P 100
31 - reduced sending overhead
32 - fixed handling of option -f
35 - hash names should be compared case insensitive for convenience
36 - safeguard against missing argument to option --hash
37 - support for hash calculation withdrawn, due to potential data
38 corruption, when the buffer runs full
41 - build fix for some platforms
42 - several minor code cleanups (removed some warnings)
43 - support float values as argument to memory options
44 - added a watchdog that terminates mbuffer if input
45 or output activity stalls (option -W)
48 - fixed IPv6 client initialization on FreeBSD
49 - fix: suppress summary on stderr if -q is used with -l
50 - fix: option -P 100 may lead to hang
53 - fix: garbage might be written after input error
54 - enhancement: prompt for additional volumes for argument "-n 0"
55 - enhancement: prompt for next volume on I/O error if -n is set
56 (some tape devices incorrectly return -1/EIO instead of 0)
57 - enhancement: added option to append to output file
58 - update: remove use of deprecated interface sigignore
61 - fix: terminate ASAP if no working output is available
62 - enhancement: added option to terminate on any error
63 - fix: mbuffer blocks on SIGTTIN when started in background
64 - fix: display correct dimensions (e.g. kiB instead of kB)
67 - Anniversary: 10 years of mbuffer
68 - fix for building on cygwin in a separate directory
69 - fix: incorrect sanity check concerning hashing and multivolume support
70 (patch by Sean Walmsley)
73 - enhancement: hash should show up in log file
74 - enhancement: report last block number on volume
75 - enhancement: report times for each volume and tape changes
76 - cosmetic fix: need to convert thread ids to long for linux
77 - build enhancement: better cygwin and packaging environment support
80 - fix: potential deadlock on SIGINT related to watermark algorithm
81 - fix: high watermark algorithm interferes with rate limitation
84 - fix: hash calculation is omitted if no output is set
85 - fix: test procedure doesn't wait on Solaris 8
86 - some cosemtic fixes for the man page
87 - summary output to logfile should be independet of quiet mode
90 - enforceSpeedLimit must use monotonic time source to prevent being
92 - made test suite configurable and clean-up itself
93 (submitted by Peter Pentchev)
94 - made IPv6 code optional
95 - added check for block size of input device
96 - only determine 64bit compile flag if no CFLAGS given
97 - fix lockup on input error
98 - don't cancel non-existing thread in quiet mode
99 (caused SegV on Linux)
100 - BSD header inclusion update
101 - SIGINT cancellation fixes (systems other than Solaris need a hack)
104 - fix superfluous ai_flags causing error on Solaris 8
105 - fix assertion failure after rejected connection
106 - configure fix for 64-bit builds
108 - added workaround for cancellation issues on Solaris 8/9
111 - fix SIGINT hanging when input is idle
113 - compile for 64 bit by default if available
116 - hash calculation is faster if done in a separate thread
117 - new option --hash to select other algorithms of libmhash than md5
118 - omit creation of superfluous inputThread in absence of status output
119 - fix potential race condition during startup in high watermark code
120 [reported by Michal Soltys]
121 - reduce number of semaphore calls in high watermark code
122 - fix a potential deadlock on SIGINT
123 - fixed a typo in watermark example
127 - added support for port name lookup
128 - added another verbosity level for I/O messages
129 - refix libmhash initialization
132 - fix status thread hang on very small transfer sizes
133 - fix libmhash initialization
134 - -q should not suppress output of -H
135 - reduced termination latency with status display running
136 - update for summary display
137 - changed default shell make shell to /bin/sh
140 - fix for assertion failure of 64bit binaries in network code
143 - BSD compatibility update
144 - replace use of deprecated atoi with strtol
145 - better argument checking for numeric options
146 - enhanced semaphore limits checking
150 - fixed some typos in man page
151 - TCP buffer tuning could be a little bit more intelligent
152 - fixed formating of some info messages
153 - tuneable TCP buffer with option --tcpbuffer
156 - tune send and receive buffer of TCP stack to match block size
157 - added target check to Makefile
158 - fix: don't mix up file during open
159 - code cleanup/unification for MD5
160 - sendfile should also be used for writing to files
161 - sync cleanup on output thread instead of input thread
162 - fix: access to dest_t after free()
163 - unified summary and join between verbose and silent mode
164 - minor code cleanups
167 - mbuffer should not abort on SIGTERM
168 - mbuffer should not segv on invalid arguments for options -m, -s
169 - transfer statistics should wait for the first block to be received
170 - minor code path optimization
171 - option -n should accept -n1
174 - FIX REGRESSION: stdout may be corrupted by mbuffer
175 (This regression was the result of a patch to redirect
176 stdout of autoloader commands)
179 - redirect autoloader stdout to mbuffer's stderr
180 - added support for O_DIRECT (use option --direct)
181 - options -o and -i should recognize "-" as stdin/stdout
182 - direct use Solaris' native semaphore implementation
183 - fixed cancellation issues
184 - manpath needs to be created
185 - sendfile should fallback to write if unsupported
186 - fixed maximum addressable memory message
190 - new feature: support for multiple ouptuts
192 - fixed a race-condition in logging
193 - adjusted CFLAGS for gcc
194 - warn about LD_LIBRARY_PATH interfering with build process
195 - the exitcode of autoloader command should be checked
196 - changed default buffer size to use 2% of available memory
197 - changed default block size to system pagesize
198 - added make target for lint
201 - memory locking for file fails if -L is passed before -T
202 - use MAP_SHARED instead of MAP_PRIVATE to simplify fork in system
203 - missing arguments may cause a SegV
204 - $(LIBS) should be after $(OBJECTS)
207 - better support for device special files
208 (files under /dev shouldn't need -f to write to)
209 - update to always handle largefile correctly
210 - fix configure script for sendfile functionality
211 - allow in-memory locking of file based buffers
214 (compile with -c -O, mbuffer.o is dependent on Makefile)
217 - configure should check if ST_BLKSIZE feature is available
218 - compile with -O instead of -g per default
219 - hostnames may have underscores and/or dash
221 - use inline and restrict if available
222 - honor --disable-assert
223 - use directio for input, too
226 - fixed a race-condition causing incorrectly written last block
229 - fix wrong assertion on dup2
230 - fix 'make distclean' to also remove mbuffer.exe
231 - fix installation of manpage
234 - updated status display
235 - POSIX conformance update: read from stderr instead of relying on
236 /dev/tty exists, fallback to /dev/tty if stderr is unreadable
237 - update to build on HPUX.11 (thanks go to testdrive.hp.com)
238 - several configure fixes and updates
239 - fixed invalid exitcode without console (Alex Kramarov)
240 - correction for full/empty report
243 - bugfix: search for MD5 functions with correct function names
246 - bugfix: search for MD5 functions in libcrypto instead of libssl
247 - bugfix: search for MD5 functions in libmd5 using different function
248 to avoid incorrect caching of results
251 - bugfix: misplaced ifdef could lead to failures for options -d and -b
252 on systems that do not support device block size determination
253 - fixed possible hang on SIGINT without status thread
254 - write summary to stderr if no tty is available
257 - added support for setting the output device's volume size explicitly
258 (patch by Sean Walmsley)
260 - make locking more solid
261 (in theory [only], a deadlock could have occurred)
262 - assert() everything
265 - prefix name of executable before every message
266 - added some missing newlines
267 - set dependency for "make install" on "make"
268 (i.e. "make install" also builds mbuffer)
271 - fix: mbuffer erroneously return with EXIT_SUCCESS when it got
272 interrupted by SIGINT or SIGTERM
275 - changed signal handling to prevent syscalls returning with EINTR in
277 - fix for warnings, fatals, and errors getting truncated
278 - sleep before printing I/O rates for the first time to prevent showing
282 - use condition variables to safely signal crossing of watermarks
283 - include times full/empty (crossing of low/high watermark) in summary
284 (proposal by Alex Kramarov)
285 - enhanced status and summary output to be display stats with a higher
289 - bugfix and enhancement for rate limitation code
290 - fixed regressions caused by switching from float to double
291 - make sure outputThread doesn't start initially if -P is set
292 - write debug logs a little bit more thread friendly
293 (i.e. switched from stream- to normal file ops)
296 - added speed limiting (options -r and -R)
297 - fix errormessage in calcint
298 - show option -d in usage output only if it is available
299 - use of float really doesn't make any sense nowadays;
300 changed all floats to double
303 - set exitcode to failure whenever an error occures
307 - added option -c to enable synchronous data integrity I/O:
308 This was enabled by default until now, but may cause a decrease in
309 performance as it requires a higher number of I/O ops. On systems
310 without full synchronous data integrity support, no difference will
311 be observable concerning performance. Systems that support it, will
312 gain increased performace without -c, but error reporting will be
313 more precise with -c.
314 - changed errormessages to include offset
315 - added support for Solaris' directio hinting
316 - made memlock support an automagic option (compiled in if available)
317 - simplify CFLAGS overriding
318 - more portable largefile support solution
319 - minimized configure script
320 - default to native compiler instead of gcc
323 - made signal handling more standards conforming
324 - use deferred cancellation instead of asynchronous
325 - fixed some debug messages
326 - use sendfile only for sockets
329 - clarified some errormessages
331 - updated README file
334 - added support for sendfile
335 (AFAIK only the Solaris version supports sending from buffers)
336 - added memory locking support
337 - added support to set buffer size as percentage of physical memory
338 - open file with O_LARGEFILE per default
339 - added some command-line options for existing functionality
341 - compile as 64bit executable on opteron and sparc architectures by
343 - defaulting to /var/tmp for buffer files, as /tmp is a swap based
344 filesystem on some operating systems
345 - use TMPDIR environment variable if available to determine where
349 - increased maximum value of number of blocks
351 - openssl build fixes
352 - fixed some warnings
353 - install man page to correct location
354 - reuse networking sockets
355 - do not bail out if output does not support syncing
356 (thank you to Wolfgang Denk for some suggestions)
359 - made mbuffer.c lint clean
361 - Makefile fix for install
364 - added support for openssl based md5 hashing
365 - support of transfer summary in gigabyte
366 - support for passing buffer size in gigabyte (G)
367 (please pass the relevant CFLAGS for 64Bit executables for
368 your compiler to configure)
369 - added support for passing command to autoloader
370 (patch submitted by Wolfgang Denk)
371 - enhanced network parameter parsing
372 - FIX: transient error in status display
373 - FIX: mbuffer could hang on first SIGINT (chance 1/3)
374 - fixed a bug in network client verification code
375 - pass CFLAGS also to link phase
376 - unlink tmpfile as early as possible
377 - check close for errors
378 (see Chris Gerhard's Weblog concerning close on
379 http://blogs.sun.com/roller/page/chrisg?anchor=did_that_close_succeed)
380 - additional sanity checks for buffer limits
383 - fixed possible lockup upon SIGINT
384 - fixed displayed time
385 - updated display to change to MB instead of kB when > 3072kB
388 - compile time fix for gentoo and suse 9.2
389 - made --enable-debug and --enable-md5 work
390 - gcc optimization flag set to -O2, -O as default
393 - fixed operation of low watermark (-p)
394 - made printf formating more standard conforming
395 - start output before input thread
398 20050124 (unannounced interims version):
399 - fixed summary bug reported
401 - removed locale support (too much work to support properly)
402 - changed debugmsg to a C99 macro, if debugging is switched off
403 - fix: final newline of statusThread was printf()ed to stderr instead
405 - fix: potential incorrect written last block
406 - fixed warnings: comparison of signed and unsigned
408 - added low watermark (request by Greg Freemyer)
409 (restarts reading if dropped below - needed for FAST streamers;
410 I don't have such a beast and I never expected such a thing to exist...)
411 WARNING: changed argument -p to represent low watermark (was high watermark)
412 so that both options are easier to remember
413 - eliminated dead code
414 - changed status of networking code to stable
415 - removed NDEBUG from config.h and configure, because assert()s are
416 always "a good thing TM"
417 - encapsulated Terminal I/O within Mutex
418 - md5 hashing option added (disabled by default, proposal by Greg Freemyer),
419 using either mhash or md5 library, whatever is available
423 - more detailed errormsg for host name resolving
424 - beautified some messages
428 - update for networking code: added client host checking
434 - fixed option -q to not block out usage of multi
437 - minor debug message update
438 - more autoloader sanity checks
439 - changed status for networking stuff to BETA
440 i.e. new configure option "--enable-networking"
443 - fixed possible termination hang on write error
444 - fixed debugmessage for input thread
445 - added support for autoloaders
446 - update for experimental networking code
450 - update for debug messages
451 - update for experimental network code
452 (interface selection is now possible,
453 hostnames are resolved correctly and more;
454 seems like getting stable...)
457 - corrected message for mem-allocation
458 - added warning message for certain multi-volume use
459 - enhanced debugging messages
460 - (hopefully) last bugfix for multi-volume code
463 - added Option -d to use blocksize of output device
464 for write (was default behaviour, but isn't needed
465 in most cases and slows data transfer down)
466 - changed statusline (proposal by Dan Hollis)
467 - minor bugfix for handling read errors (size of
468 writable block fragment is now set correctly)
469 [probably nobody ever cares anyway]
470 - updates for experimental networking (configure)
473 - bugfix: mbuffer didn't work anymore with pipes due
474 to incorrect set Outsize (0)
477 - added experimental networking code
478 - bugfix for multivolume-code which might have caused
479 problems on devices which have a size which is
480 no multiple of Blocksize
484 - architecture switches for x86 changed to match gcc-3.0
485 - 64 Bit updates for huge data amounts
489 - bugfix for option -T
492 - multi-volume support is now enabled by default
494 - fix for configure to work on Solaris 5.1
497 - semantic fix for option -p to be consistend with buffer
498 - bugfix: for dropped blocks in multi-volumen code
499 - fix for lockup if SIG_BRK is sent during a volume request
502 - Bugfix: multi volume output now should work
503 (bugreport by Dan Hollis)
505 - added some extra checks after running lint...
508 - Docu update concerning usage of multi volume support
509 - multi volume options consistency checking added
512 - summary is now also displayed upon break and terminate
513 - Bugfix: summary overflow
514 - experimental feature: input of multiple volumes
517 - status messages are now printed to the terminal not to stderr
518 - Bugfix: for output blocksize code
519 - documentation update
520 - new: summary information
521 - experimental feature: output to multiple volumes
524 - Bugfix: fixed sleep, which limited the performace to 1MB/s
525 (credits go to Padraig Brady <padraig@antefacto.com>)
526 - Bugfix: fixed incorrect display of total datatransfer for >2GB
527 - Cosmetic: on sighup print newline on stderr
531 - Bugfix: option -p did not work
532 - reworked option flags (-h is now -t, -t is now -T)
533 - output is now done with the blocksize of the output stream
534 otherwise direct writing to a tape device failed under Linux
537 - Bugfix: outputThread terminated too early in certain cases
538 - Fix for correct termination if an error occured
539 - added install rule in Makefile
540 - status messages are now indebendend of other messages
541 - a little bit more verbose debugging info