Blob Blame History Raw
V1.0 (capps):
Capps:
	Beginning of the code base.
Isom:
	Added reread
	Added rewrite
	Added read backwards
	Added lseek+read
	Added lseek+reread

Capps:
	Added more accurate time collection method.
	Added alignment in the on chip Cache code.
	Added change step when passing 16 Meg size file.

Capps:
	Added auto+ to purge on chip cache.

kcollins:
	replaced the lseek+read &reread test with random reads and writes

Capps:
	Replaced reverse re-read with record rewrite. This gives
	both source and destination on chip cache hits.

Capps:
	added auto+multi
	Support for multiple buffers in the iozone.

Capps:
	Removed the recursion through main().
	Cleaned up the printout when not in auto mode.
	Added support for stride-read. ( Manual mode only )

Capps:
	Cleanup so it will build for bsd4_2 ( C series machines )

Capps:
	Cleanup on frontend. Now uses getopt() and has a real parser.
	Cleanup on error handling.
	Added throughput tests.
	Eliminated page faults in the throughput tests.

Capps:
	Made all perf tests table driven.
	Add back Bill's Copyright.
	ansify, prototypes, scope limitations.

V2.1 (kcollins):
	Simplified auto mode logic.  auto test now runs from
	MEGABYTES_START to MEGABYTES_END and from RECLEN_START
	to RECLEN_END with values multiplied by MULTIPLIER 
	each iteration.  Range set to (4K...16M) for RECLEN
	and (1M...512M) for MEGABYTES.  (the physical I/O
	tests for RECLEN <4K take several hours on a 1200).

	Enlarged MAXBUFFERSIZE to 16MB for large record tests.

	Added error checking for mallocs (!-).

	Changed multibuffer code to use all of MAXBUFFERSIZE
	as a circular buffer, with the number of buffers
	varying as MAXBUFFERSIZE/reclen.  This corrects 
	problems where MAXBUFFERSIZE*MAXBUFFERS was very large.
	Also modified auto mode so that tests where
	reclen>filesize are skipped.

	Modified preadv code to vary the number of buffers as
	necessary such that they will fit in min(MAXBUFFERSIZE,filesize).
	This fixes problems where the number of buffers in
	the i/o vector exceeded the size of mainbuffer.

	Added bzero for buffer when it is first malloc'd.  This
	ensures that it is initialized before use.

	Created a script (profile.fs) that runs a series of tests
	to generate a "box" around common application variables
	such as filesize, buffer size, buffer encachement, and
	number of concurrent processes.  This is intended to serve
	as the "standard" filesystem profile.

	buffer reset to mainbuffer before each test loop

V2.3 (kcollins):

	added -F option to write to specify pathnames for throughput
	tests (allowing throughput tests to multiple filesystems).

V2.4 (capps):
	Changed preadv/pwritev to use a non-sequential access pattern.
	Changed the version number.
	Moved all user interface values to KB. This simplifies
	the user interface. (consistant scaling) and it also
	allows one to start with 512kb file. This is very important
	since the first indirect block causes a significant
	slowdown in the initial write cases.

V2.5 (capps):
	Re-structure and cleanup.

V2.6 (kcollins)
	Bug fix for the throughput tests.

V2.7 (capps):
	Added -o flag. This makes all file opens for writes
	have the O_SYNC flag set. This makes all writes go
	to disk before competion. This is useful for seeing
	what the media can do without the buffer cache helping.

V2.8 (capps):
	Added -V flag. This turns on pattern verification. If
	the user were to type:
	-V 165
	Then bit pattern 0xa5 would be placed in every byte in the
	buffer and when read back from buffer cache, or disk, 
	it will be verified to be correct. If it fails then
	the error handler will specify the byte location of the
	miscompare.

V2.9 (capps):
	Added fread/re-fread, fwrite/re-fwrite to list of tests.
	Added -E to allow the user to run pread and friends as an option.

V2.10 (capps):
	Added -R. This will generate Excel compatible files that
	can then be imported into Excel and graphed.
	Added support for 5 targets to the makefile.
	Added -M  This prints out the uname -a stuff about a machine.
	Added -O  This gives all results in operations/sec instead of KB/sec.
	More code cleanup. Update comments.

V2.11 (kcollins)
	added -A.  Auto mode with no crossover and read/write tests only
	changed default record size to 64KB (from 512 bytes)

V2.12 (capps)
	Added shared memory barrier sync for throughput mode. This
	provides much finer control over the actual timeing 
	of the children.
	Added mmap() for BSD (Convex) machines that do not 
	have System V shared memory.
	Added two ways of showing throughput results. The second
	method takes into consideration children that lag behind
	due to slow devices, and gives results that are more accurate.
	Cleanup of some tab problems in throughput results.
	Cleanup of floating point output taking to much space.
	Added -d to allow a variable delay comming out of the barrier 
	in the throughput tests.
V2.12	(kcollins)
	added declaration for create_list to make ansi c compiles work
	several fixes to some of the SPPUX 5.x make targets
	added date run to banner (hope this doesn't break your scripts $-)

V2.13	(capps)
	Added "stone walling". During throughput tests, if one process
	finishes then all others are sent a signal to tell them 
	to stop. (The parallel region has finished). This provides 
	better numbers for throughput.  
	Only bzero or fill min(reclen,CACHE_SIZE) this saves a bunch
	of paging on workstations with small memory systems.
	Fixed broken target in the makefile.
	Note: use of -d is not advised. It makes the children not run 
	in parallel.
V2.14   (capps)
	Bug fix to avoid anomaly in SPP-UX. In SPP-UX the filesystem
	code preallocates meta-data to improve initial file writes.
	The first indirect block allocation was causing a block 
	of zeros to be written syncronously. In SPP-UX the filesytem
	code preallocates zero filled blocks when the first writer
	touches a filesystem after a sync. A pool of on disk zero'd 
	blocks are created asynchronously and handed out to writers
	when they cross the boundry into the first level indirect
	and would have had to stop and wait for the zero filled 
	block to be written. Iozone's testing methodology was not
	allowing the OS to have any time to complete the async
	pre-allocation and was not showing the speed up that real
	applications would see.

V2.15   (capps)
	Improve throughput testing mode.

V2.16	(capps)
	Added -U option. This allows the filesystem to be unmounted
	and remounted between tests. This guarentees that the buffer
	cache is cold.

V2.17	(capps)
	Added -T option. This makes the throughput tests use 
	threads instead of processes.  Currently using pthread_create(),
	pthread_self(), and pthread_exit(). 
	Cleaned up file cleanup mechanism. Control C will now cause
	all temp files to be deleted.  Removed all signals used to
	control sub-processes.

V2.18	(capps)
	Cleanup. Added read stride, read backwards to the throughput
	tests. Various bug fixes

V2.19	(capps)
	Removed all calls to malloc() and all use of system V shared 
	memory. mmap() is much easier to deal with. As for malloc()
	HP programs are very limited on the ammount of malloc() space
	and not nearly so constrained on mmap() memory. It was necessary
	to move to mmap() since multiple threads all need buffers in
	the processes address space. 
	Removed dependency on first thread being number 2. Iozone now
	probes to find out what the thread library will return for 
	the first thread.  This makes the switching thread libraries
	much easier.

V2.20	(capps)
	Children now set stop_flag and shutdown all other children.There
	is no further need to tell the parent to distribute the stop_flag.
	verify, purge, and osync are now supported in the throughput
	tests. Fixed bug where pthreads stack size was causing 
	segmentation violation when purgeit() was called for buffer
	that were greater than 256kb.

V2.21	(capps)
	Enhanced throughput reporting. Now provides:
	Child throughput, Parent throughput, Minimum throughput for
	any child in the group, Maximum throughput for any child in the 
	group, and Minimum transfer count. Due to stone walling
	not all children write the full requested size. This 
	minimum transfer count provides the user with knowledge of 
	how much work was performed by the slowest child. 
	Added -C flag. This allows the user to see all of the transfer
	counts for each child. Had to add system 5 shared memory back.
	Linux does not support mmap(MAP_ANONYMOUS|MAP_SHARED). So it
	must use SYSV shared memory get get sharing working.

V2.22	(capps)
	Made changes to make iozone work correctly on Linux on a 
	PC. Changes are just scaling down the test to fit on a 
	pc, and scaling down shared segments to < 16 Meg so it
	can run on an Intel 386 class machine.
	Added: -L #   Set the processor cache line size in bytes.
	Added: -S #   Set the processor cache size in kbytes.
	Removed spin wait in parent waiting for threads to 
	finish each throughput test. Code not uses thread_join().
	Fixed -O (operations/sec) mode to work in throughput tests.

V2.23	(capps)
	Close small timing hole where thread/process has set stop flag
	and others are in a system call. The hole allowed threads/processes
	to continue to increment work done after one had finished and
	told the others to stop. The result was that the children would
	report slightly high numbers as they were not truely parallel
	at the finish line. Added random read throughput test.
	Fixes for VxFS small extents being created by prime_zb() functions.
	Provides more details about the throughput run.

V2.24	(capps)
	Added support for -R (Excell chart generation) to the throughput
	tests. Also added support for the -O (ops/sec) to the throughput
	Excell chart.

V2.25	(capps)
	Added support for selecting which test to run. -i #
	-i 0 -i 3 
	will run write and read-backwards tests only. For a list
	of the test numbers type iozone -h.
V2.26	(capps)
	Added support for LARGE_FILES for the hpux-11.0 target.
	

V2.27	(capps)
	All tests now verify one long word of data from each page
	written/read to/from the file. This is to level the 
	playing field with systems that do not move data 
	when "read" or "write" is called, but instead just
	map the file and perform the I/O when the address space
	is touched. Benchmarks that do not validate the data
	,at least touch each page, do not measure the read/write
	times just the map times.
	Note: The -V option still verifies each byte of the buffer,
	the default is now to verify one long from each page.

V2.28	(capps)
	Added support for benchmarking mmap() files.
	Added more command line options. -B -G -D
		B = Use mmap() files for the benchmark.
		G = Use msync(MS_SYNC) for mmap files.
		D = Use msync(MS_ASYNC) for mmap files.

V2.29	(capps)
	Bug fixes for:
		Combination of running individual tests and mmap() files support.
		Stride read bug that caused only portions of the total file to be 
		examined.
	
V2.30	(capps)
	Fixups for build under SPP-UX

V2.31	(capps)
	Fixups for build under Linux.
	Added -j ### to support user setting the stride size for the 
	stride read benchmark.

V2.32 	(capps)
	Add support for IRIX and IRIX64.

V2.33 	(capps)
	Add support for POSIX async I/O benchmarking. Uses a library
	to interface to POSIX async I/O model. The library provides
	and extended async_read() interface. It takes the standard
	calling options of read() but also allows the application to
	perform read-ahead with a stride. (positive or negative)
	and allows the user to specify how much read ahead to 
	perform. 
	Tested on HP-UX 11.0, Linux, SGI Origin.

V2.34 	(capps)
	Added -k. This allows POSIX async I/O to utilize the buffer
	specified and not to perform any bcopys. Fixes to make
	multi-threadedness work on SGI Origin.

V2.34 	(capps)
	Added [-k #]. This allows POSIX async I/O to utilize the buffer
	specified and not to perform any bcopys. Fixes to make
	multi-threadedness work on SGI Origin.

V2.36 	(capps)
	Iozone is now a 64 bit application. It may be compiled for either
	64 bit or 32 bit machines. The makefile supports 64 and 32 bit
	targets for machines that support 32 & 64 bit targets.
	All version numbers are now automatically generated by
	RCS. This is the last time we have to bump the version
	number by hand.


-----------------------------------------------------------------------------------
Changed over to RCS source control here:
Version Numbers are reset at this point back to Version 1.1.
-----------------------------------------------------------------------------------


RCS file:        iozone.c,v;   Working file:    iozone.c
head:            1.94
locks:           ;  strict
access list:   
symbolic names:
comment leader:  " * "
total revisions: 94;    selected revisions: 94
description:
Initial rcs version of Iozone
----------------------------
Revision 1.94        
date: 99/01/18 13:02:57;  author: capps;  state: Exp;  lines added/del: 7/2
Call msync if writer wants sync in timing and terminates early in multi thread test case.
----------------------------
Revision 1.93        
date: 99/01/18 11:46:11;  author: capps;  state: Exp;  lines added/del: 309/126
Cleanup for include_flush and include_close for single and multi threaded operations.
----------------------------
Revision 1.92        
date: 99/01/15 10:53:58;  author: capps;  state: Exp;  lines added/del: 40/11
Add include_close support for throughput testing
----------------------------
Revision 1.91        
date: 98/12/07 09:26:22;  author: capps;  state: Exp;  lines added/del: 43/24
For Windows: Use the high resolution timers instead of timeofday();
Fix a few casting problems.
----------------------------
Revision 1.90        
date: 98/11/30 14:49:46;  author: capps;  state: Exp;  lines added/del: 24/17
Update the copyright and names and places
----------------------------
Revision 1.89        
date: 98/10/30 09:04:51;  author: capps;  state: Exp;  lines added/del: 1/2
An extra close(fd) causes HP-UX to fail future unmounts... 
----------------------------
Revision 1.88        
date: 98/10/29 09:47:25;  author: capps;  state: Exp;  lines added/del: 17/17
Cleanup the help screen
----------------------------
Revision 1.87        
date: 98/10/28 23:31:11;  author: capps;  state: Exp;  lines added/del: 7/6
Spelling error fix.
----------------------------
Revision 1.86        
date: 98/10/14 11:21:50;  author: capps;  state: Exp;  lines added/del: 23/68
Unified the time method to only have 2 ways to get time.
----------------------------
Revision 1.85        
date: 98/10/14 09:22:09;  author: capps;  state: Exp;  lines added/del: 91/91
Added code to remove the latency of gettimeofday() from the file performance measurements.
----------------------------
Revision 1.84        
date: 98/10/12 11:44:50;  author: capps;  state: Exp;  lines added/del: 107/8
Add time resolution output, and fix the divide by zero when the time in
a system call turns out to be Zero. This will introduce distortion for machines
that have very fast system calls and very poor time resolution. Windows 
has a 50 Milli second resolution on gettimeofday(). So... to fix it 
all calls that take less than 50 Milli seconds will be rounded up to 
cost 50 milliseconds.
----------------------------
Revision 1.83        
date: 98/10/06 09:58:16;  author: capps;  state: Exp;  lines added/del: 46/2
Add support for Windows build
----------------------------
Revision 1.82        
date: 98/09/23 09:48:02;  author: capps;  state: Exp;  lines added/del: 2/2
Fix bug where -i # was leaving tmp files after throughput test.
----------------------------
Revision 1.81        
date: 98/09/23 09:41:12;  author: capps;  state: Exp;  lines added/del: 1/3
Remove debug printf
----------------------------
Revision 1.80        
date: 98/09/23 09:29:01;  author: capps;  state: Exp;  lines added/del: 23/1
Add my_nap(). This allows the threads to switch processors to their
new bound processor before performing any work.
----------------------------
Revision 1.79        
date: 98/09/22 11:57:20;  author: capps;  state: Exp;  lines added/del: 8/8
Change xx back into an int so the modulo will work better.
----------------------------
Revision 1.78        
date: 98/09/18 16:27:05;  author: capps;  state: Exp;  lines added/del: 18/15
Remove create in rewrite path.
----------------------------
Revision 1.77        
date: 98/08/17 16:44:06;  author: capps;  state: Exp;  lines added/del: 23/1
Fixes for Solaris and the new processor bind feature.
----------------------------
Revision 1.76        
date: 98/08/17 16:17:45;  author: capps;  state: Exp;  lines added/del: 1/2
Remove debug code.
----------------------------
Revision 1.75        
date: 98/08/17 16:16:15;  author: capps;  state: Exp;  lines added/del: 92/5
Add support for binding procs/threads to cpus.
----------------------------
Revision 1.74        
date: 98/08/07 16:51:41;  author: capps;  state: Exp;  lines added/del: 4/3
Add fsync to the fwrite test case when the user specifies -e
----------------------------
Revision 1.73        
date: 98/08/07 16:47:38;  author: capps;  state: Exp;  lines added/del: 178/208
Add -c and -e to allow closes and fsyncs to be inside the timing calculations.
----------------------------
Revision 1.72        
date: 98/08/06 22:40:15;  author: capps;  state: Exp;  lines added/del: 9/1
Add setvbuf to fwrite and fread tests so that the internal fwrite and fread
buffer size is the same as the record size. This is what a well tuned application 
would do.
----------------------------
Revision 1.71        
date: 98/08/06 09:03:06;  author: capps;  state: Exp;  lines added/del: 2/3
Fix fsync filename problem in fwrite_perf_test
----------------------------
Revision 1.70        
date: 98/08/05 18:06:41;  author: capps;  state: Exp;  lines added/del: 6/2
Add fsync after fwrite test case so the fread will start with a 
clean buffer cache and no writes in progress.
----------------------------
Revision 1.69        
date: 98/08/03 10:45:49;  author: capps;  state: Exp;  lines added/del: 3/3
Bug fix for -V option not filling the entire buffer.
----------------------------
Revision 1.68        
date: 98/07/30 22:11:11;  author: capps;  state: Exp;  lines added/del: 2/3
Fix for solaris
----------------------------
Revision 1.67        
date: 98/07/30 22:08:19;  author: capps;  state: Exp;  lines added/del: 2/2
Fix for solaris
----------------------------
Revision 1.66        
date: 98/07/30 22:05:02;  author: capps;  state: Exp;  lines added/del: 43/15
Add support for Solaris
----------------------------
Revision 1.65        
date: 98/07/01 14:19:19;  author: capps;  state: Exp;  lines added/del: 80/82
Move end_async inside the timing loops as in async I/O it counts.
----------------------------
Revision 1.64        
date: 98/06/16 17:04:36;  author: capps;  state: Exp;  lines added/del: 13/2
Correct problem where user specifies pread tests on hpux... which does not 
support these operations. The test now prints an error message and exits.
----------------------------
Revision 1.63        
date: 98/06/16 16:54:22;  author: capps;  state: Exp;  lines added/del: 1/2
Remove exit from auto_test. This allows the message "iozone test complete" to 
be printed when in auto test mode.
----------------------------
Revision 1.62        
date: 98/06/10 10:54:28;  author: capps;  state: Exp;  lines added/del: 175/173
All exit()s now have a unique exit value.
----------------------------
Revision 1.61        
date: 98/05/18 13:34:03;  author: capps;  state: Exp;  lines added/del: 17/18
Move .dat file descriptors to global data. Needed to prevent re-opens.
----------------------------
Revision 1.60        
date: 98/05/18 13:24:22;  author: capps;  state: Exp;  lines added/del: 6/3
Bug fix. Prevents re-opending .dat files when in auto mode.
----------------------------
Revision 1.59        
date: 98/05/08 13:03:02;  author: capps;  state: Exp;  lines added/del: 21/3
Enhance throughput tests to follow the -i test number to run options.
----------------------------
Revision 1.58        
date: 98/05/07 14:15:49;  author: capps;  state: Exp;  lines added/del: 109/39
Make VXFS a define in the make command. This makes moving to other targets
easier. It removes the binding of HPUX and VXFS.
Also, Added -Q to support offset/latency file generation for later use
as inputs to plot program.
----------------------------
Revision 1.57        
date: 98/05/06 15:09:43;  author: capps;  state: Exp;  lines added/del: 100/27
Add -N to provide results in microseconds per operation.
----------------------------
Revision 1.56        
date: 98/05/05 13:23:29;  author: capps;  state: Exp;  lines added/del: 3/10
If the user specifies -i 0 then run both write and rewrite tests.
----------------------------
Revision 1.55        
date: 98/04/30 15:19:02;  author: capps;  state: Exp;  lines added/del: 1/1
No change
----------------------------
Revision 1.54        
date: 98/04/30 15:09:58;  author: capps;  state: Exp;  lines added/del: 2/2
Unlink the vxfstest when the test fails.
----------------------------
Revision 1.53        
date: 98/04/30 13:07:21;  author: capps;  state: Exp;  lines added/del: 7/5
Cleanup help output.
----------------------------
Revision 1.52        
date: 98/04/30 12:58:29;  author: capps;  state: Exp;  lines added/del: 21/4
Add async I/O with no bcopy to throughput tests.
----------------------------
Revision 1.51        
date: 98/04/29 15:29:29;  author: capps;  state: Exp;  lines added/del: 5/1
Fixes so it will compile on the SGI Origin.
----------------------------
Revision 1.50        
date: 98/04/29 11:57:58;  author: capps;  state: Exp;  lines added/del: 5/1
Do not need to limit async ops. Fix is in libasync.c
----------------------------
Revision 1.49        
date: 98/04/29 10:45:19;  author: capps;  state: Exp;  lines added/del: 61/3
Add async I/O to throughput testing for writes
----------------------------
Revision 1.48        
date: 98/04/28 11:57:13;  author: capps;  state: Exp;  lines added/del: 5/1
Limit max async operations to 60. Beyond this there be dragons.
----------------------------
Revision 1.47        
date: 98/04/28 10:16:09;  author: capps;  state: Exp;  lines added/del: 108/21
Completed support for no_bcopy POSIX async I/O in the async_write_no_copy path.
This allows write tests to perform async I/O with buffers released when 
the write is completed.
----------------------------
Revision 1.46        
date: 98/04/27 16:58:38;  author: capps;  state: Exp;  lines added/del: 43/10
Add aio_write() to the write and re-write tests. This provides
POSIX async I/O for the those tests.
----------------------------
Revision 1.45        
date: 98/04/25 09:53:39;  author: capps;  state: Exp;  lines added/del: 3/2
direct_flag is an int. Was a char in one place and
an int in another.
----------------------------
Revision 1.44        
date: 98/04/25 09:17:42;  author: capps;  state: Exp;  lines added/del: 27/15
More support for vx_direct support in the write path
----------------------------
Revision 1.43        
date: 98/04/24 16:33:44;  author: capps;  state: Exp;  lines added/del: 115/77
Move VX_DIRECT to libasync. But keep the VX_DIRECT support also
in iozone. So one can use VX_DIRECT with and without async I/O
----------------------------
Revision 1.42        
date: 98/04/24 16:20:34;  author: capps;  state: Exp;  lines added/del: 127/60
Move VX_DIRECT to the libasync module.
----------------------------
Revision 1.41        
date: 98/04/24 15:50:54;  author: capps;  state: Exp;  lines added/del: 190/7
Add support for VxFS VX_DIRECT 
Idea is to use VX_DIRECT and POSIX async I/O together
----------------------------
Revision 1.40        
date: 98/04/22 16:38:25;  author: capps;  state: Exp;  lines added/del: 5/5
Sppux wants ail_gettimeofday variables to be unsigned int. 
----------------------------
Revision 1.39        
date: 98/04/22 16:19:50;  author: capps;  state: Exp;  lines added/del: 7/3
Fix -M option not printing cleanly
Fix -R in 32 bit mode printing garbage.
----------------------------
Revision 1.38        
date: 98/04/22 15:56:02;  author: capps;  state: Exp;  lines added/del: 1/1
Change to only disply revision not full header.
----------------------------
Revision 1.37        
date: 98/04/22 15:52:19;  author: capps;  state: Exp;  lines added/del: 1/1
Add RCS Header to support versioning.
----------------------------
Revision 1.36        
date: 98/04/22 15:38:26;  author: capps;  state: Exp;  lines added/del: 1/1
fix to bcopy() third arg needs to be size_t for 32 bit mode.
----------------------------
Revision 1.35        
date: 98/04/22 09:09:24;  author: capps;  state: Exp;  lines added/del: 17/17
Bug fixes for 64 bit mode on IRIX, and addition 
on the internal inuse queue to insure that the
internal struct_cache_ent structures are not released
too early when doing direct I/O (async_read_no_copy).
----------------------------
Revision 1.34        
date: 98/04/21 09:31:02;  author: capps;  state: Exp;  lines added/del: 4/0
Fix to eliminate hidden (dot) files that iozone was creating
in throughput mode. All files are now visible with ls.
----------------------------
Revision 1.33        
date: 98/04/21 08:30:35;  author: capps;  state: Exp;  lines added/del: 7/1
Have Iozone print the compile model used.
----------------------------
Revision 1.32        
date: 98/04/20 18:46:02;  author: capps;  state: Exp;  lines added/del: 49/20
Fixes for 32 bit mode. 
----------------------------
Revision 1.31        
date: 98/04/20 16:57:29;  author: capps;  state: Exp;  lines added/del: 8/8
make sure malloc is called with (size_t) parameter.
----------------------------
Revision 1.30        
date: 98/04/20 16:05:08;  author: capps;  state: Exp;  lines added/del: 933/757
Iozone now 64 bit application
----------------------------
Revision 1.29        
date: 98/04/20 12:32:25;  author: capps;  state: Exp;  lines added/del: 4/4
Move msync to before munmap so file gets written.
----------------------------
Revision 1.28        
date: 98/04/20 10:21:30;  author: capps;  state: Exp;  lines added/del: 2/2
Minor fix for -O flag and -B not working smoothly together.
----------------------------
Revision 1.27        
date: 98/04/20 10:17:19;  author: capps;  state: Exp;  lines added/del: 0/0
No change

----------------------------
Revision 1.26        
date: 98/04/19 15:11:07;  author: capps;  state: Exp;  lines added/del: 5/5
Remove prime_zbfill. It causes problems with mmap files.
----------------------------
Revision 1.25        
date: 98/04/16 15:24:50;  author: capps;  state: Exp;  lines added/del: 228/70
-H is Nastran async I/O with bcopy
-k is async I/O without any bcopys
----------------------------
Revision 1.24        
date: 98/04/15 16:48:30;  author: capps;  state: Exp;  lines added/del: 22/4
fix to make build on 9.05 and 10.1
----------------------------
Revision 1.23        
date: 98/04/15 15:36:55;  author: capps;  state: Exp;  lines added/del: 9/9
Cleanup some compiler warnings about un-initialized variables. They
are not really un-initialized and used but it does generate 
compiler warnings on some machines.
----------------------------
Revision 1.22        
date: 98/04/15 15:32:56;  author: capps;  state: Exp;  lines added/del: 7/7
Need to free the dummyname space a bit later.
----------------------------
Revision 1.21        
date: 98/04/15 14:37:05;  author: capps;  state: Exp;  lines added/del: 27/13
Fix to use smaller stack size in thread_ routines. It was causing
the SGI to drop core in throughput tests.
----------------------------
Revision 1.20        
date: 98/04/14 17:01:19;  author: capps;  state: Exp;  lines added/del: 27/16
Fix a memory leak. In multi_throughput testing shmalloc was getting called
for each iteration. This is not needed and causes much to much 
shm to be allocated. Not broken but definately a pig.
----------------------------
Revision 1.19        
date: 98/04/14 15:19:15;  author: capps;  state: Exp;  lines added/del: 2/0
When -k is specified alone this will turn on the POSIX async I/O and 
set depth to 0.
----------------------------
Revision 1.18        
date: 98/04/14 15:00:18;  author: capps;  state: Exp;  lines added/del: 21/20
Fixes to make multi-threaded version run on the SGI Origin.
----------------------------
Revision 1.17        
date: 98/04/14 11:55:44;  author: capps;  state: Exp;  lines added/del: 17/11
Add support for -k. When using POSIX async I/O use the 
buffer specified and do not perform any bcopys.
----------------------------
Revision 1.16        
date: 98/04/13 10:22:18;  author: capps;  state: Exp;  lines added/del: 27/380
Add libasync library support
----------------------------
Revision 1.15        
date: 98/04/11 12:09:25;  author: capps;  state: Exp;  lines added/del: 1/0
Fix memory leak. Now calls del_cache when ever any calls to async_end happen.
This will ensure that there are no outstanding I/Os on the cache that 
ha ve not been canceled .
----------------------------
Revision 1.14        
date: 98/04/11 11:57:10;  author: capps;  state: Exp;  lines added/del: 632/47
Add support for POSIX async I/O testing
----------------------------
Revision 1.13        
date: 98/03/31 14:30:15;  author: capps;  state: Exp;  lines added/del: 44/6
Fix support for bsd4_2 and ConvexOS
----------------------------
Revision 1.12        
date: 98/03/31 11:26:34;  author: capps;  state: Exp;  lines added/del: 2/2
Bump version number to 2.32
----------------------------
Revision 1.11        
date: 98/03/31 11:20:51;  author: capps;  state: Exp;  lines added/del: 70/6
Add support for SGI IRIX and SGI IRIX64
----------------------------
Revision 1.10        
date: 98/03/27 14:00:47;  author: capps;  state: Exp;  lines added/del: 15/20
Put the bcopy back. It is more represenative
of what the real application will do.
----------------------------
Revision 1.9        
date: 98/03/27 13:25:02;  author: capps;  state: Exp;  lines added/del: 40/14
Improved mmap file support. Now only have 1 long word from
each page touched. This eliminates the overhead of bcopy
dominating the results. It also is performing the same 
work that the non-mmap version does with verify().
----------------------------
Revision 1.8        
date: 98/03/27 10:41:13;  author: capps;  state: Exp;  lines added/del: 10/4
Bug fix. Frewrite was truncating the file. This fix
ensures that the Frewrite test opens without trunc.
----------------------------
Revision 1.7        
date: 98/03/27 10:16:41;  author: capps;  state: Exp;  lines added/del: 3/3
Fix report to specify stride size as a function of reclen.
It did not make sense to output kbytes as the value changes
when in auto mode to match the current record length.
----------------------------
Revision 1.6        
date: 98/03/26 15:28:15;  author: capps;  state: Exp;  lines added/del: 16/8
Add support for -j option. This 
allows the user to specify the stride size for 
the strided file access benchmark.
----------------------------
Revision 1.5        
date: 98/03/25 15:27:01;  author: capps;  state: Exp;  lines added/del: 1/1
Fixup help screen to reflect new options
----------------------------
Revision 1.4        
date: 98/03/25 15:21:23;  author: capps;  state: Exp;  lines added/del: 1/1
Change the revision number
----------------------------
Revision 1.3        
date: 98/03/25 15:20:28;  author: capps;  state: Exp;  lines added/del: 16/1
Fixup support for Linux
----------------------------
Revision 1.2        
date: 98/03/25 13:58:05;  author: capps;  state: Exp;  lines added/del: 16/3
Bug fixes for SPP-UX
----------------------------
Revision 1.1        
date: 98/03/25 10:43:45;  author: capps;  state: Exp;  
Initial revision
=============================================================================

RCS file:        libasync.c,v;   Working file:    libasync.c
head:            1.39
locks:           ;  strict
access list:   
symbolic names:
comment leader:  " * "
total revisions: 39;    selected revisions: 39
description:
Initial version of POSIX async I/O library interface.
----------------------------
Revision 1.39        
date: 98/07/30 22:05:21;  author: capps;  state: Exp;  lines added/del: 3/1
Add support for Solaris
----------------------------
Revision 1.38        
date: 98/07/07 13:00:39;  author: capps;  state: Exp;  lines added/del: 1/11
Remove extra bcopy in the async_write_no_bcopy path.
----------------------------
Revision 1.37        
date: 98/06/11 09:47:58;  author: capps;  state: Exp;  lines added/del: 3/3
Fix syntax error for IRIX 
----------------------------
Revision 1.36        
date: 98/06/10 10:56:55;  author: capps;  state: Exp;  lines added/del: 10/10
All exit()s now have a unique exit value.
----------------------------
Revision 1.35        
date: 98/05/07 14:17:20;  author: capps;  state: Exp;  lines added/del: 2/2
Make VXFS a define in the make command. This makes moving to other targets
easier. It removes the binding of HPUX and VXFS.
Also, Added -Q to support offset/latency file generation for later use
as inputs to plot program.
----------------------------
Revision 1.34        
date: 98/04/30 15:19:54;  author: capps;  state: Exp;  lines added/del: 1/3
Remove debug code that breaks 64 bit mode compiled code.
----------------------------
Revision 1.33        
date: 98/04/30 13:09:13;  author: capps;  state: Exp;  lines added/del: 2/2
Make retval an int so it can be checked for less than zero.
----------------------------
Revision 1.32        
date: 98/04/29 16:49:34;  author: capps;  state: Exp;  lines added/del: 5/11
If overshooting on number of asyncs then terminate the loop and
let the next time through pick up the I/O.
----------------------------
Revision 1.31        
date: 98/04/29 16:37:49;  author: capps;  state: Exp;  lines added/del: 3/3
Remove debug code
----------------------------
Revision 1.30        
date: 98/04/29 15:29:48;  author: capps;  state: Exp;  lines added/del: 3/1
Fixes so it will compile on the SGI Origin.
----------------------------
Revision 1.29        
date: 98/04/29 11:56:27;  author: capps;  state: Exp;  lines added/del: 36/10
Work around for bug in POSIX async I/O library
----------------------------
Revision 1.28        
date: 98/04/29 11:04:26;  author: capps;  state: Exp;  lines added/del: 1/2
Remove debug code
----------------------------
Revision 1.27        
date: 98/04/29 11:02:54;  author: capps;  state: Exp;  lines added/del: 54/27
Added resource shortage paths.
----------------------------
Revision 1.26        
date: 98/04/28 18:12:51;  author: capps;  state: Exp;  lines added/del: 1/3
Add async I/O to the throughput tests
----------------------------
Revision 1.25        
date: 98/04/28 17:12:40;  author: capps;  state: Exp;  lines added/del: 3/1
fix wait_for_ routine to reset w_tail if item being removed is also the tail.
----------------------------
Revision 1.24        
date: 98/04/28 16:14:06;  author: capps;  state: Exp;  lines added/del: 1/3
bug fix. 2 calls to malloc for aligned memory.
----------------------------
Revision 1.23        
date: 98/04/28 11:57:39;  author: capps;  state: Exp;  lines added/del: 37/13
Limit max async operations to 60. Beyond this there be dragons.
----------------------------
Revision 1.22        
date: 98/04/28 10:17:22;  author: capps;  state: Exp;  lines added/del: 127/42
Completed support for no_bcopy POSIX async I/O in the async_write_no_copy path.
This allows write tests to perform async I/O with buffers released when 
the write is completed.
----------------------------
Revision 1.21        
date: 98/04/27 16:59:14;  author: capps;  state: Exp;  lines added/del: 246/9
Add aio_write() to the write and re-write tests. This provides
POSIX async I/O for the those tests.
----------------------------
Revision 1.20        
date: 98/04/24 16:20:55;  author: capps;  state: Exp;  lines added/del: 15/3
Move VX_DIRECT to the libasync module.
----------------------------
Revision 1.19        
date: 98/04/24 15:50:13;  author: capps;  state: Exp;  lines added/del: 42/11
Add support for VxFS VX_DIRECT 
Idea is to use VX_DIRECT and POSIX async I/O together
----------------------------
Revision 1.18        
date: 98/04/24 12:36:42;  author: capps;  state: Exp;  lines added/del: 13/5
Fix some error printfs to match the size of the off_t.
----------------------------
Revision 1.17        
date: 98/04/24 12:18:11;  author: capps;  state: Exp;  lines added/del: 7/7
Fixes for LP64 mode. off_t changed to off64_t 
----------------------------
Revision 1.16        
date: 98/04/24 09:33:32;  author: capps;  state: Exp;  lines added/del: 275/35
Add comments and fix for LP64 model on hpux.
----------------------------
Revision 1.15        
date: 98/04/23 16:58:06;  author: capps;  state: Exp;  lines added/del: 167/13
Make libasync large file aware.
----------------------------
Revision 1.14        
date: 98/04/22 15:58:45;  author: capps;  state: Exp;  lines added/del: 1/1
Change version to only display rcs version id.
----------------------------
Revision 1.13        
date: 98/04/22 15:52:54;  author: capps;  state: Exp;  lines added/del: 1/2
Add RCS version support
----------------------------
Revision 1.12        
date: 98/04/22 11:39:35;  author: capps;  state: Exp;  lines added/del: 52/8
Add firewall to prevent in flight changes to the aiocb structure.
----------------------------
Revision 1.11        
date: 98/04/22 09:10:36;  author: capps;  state: Exp;  lines added/del: 57/19
Bug fixes for 64 bit mode on IRIX, and addition 
on the internal inuse queue to insure that the
internal struct_cache_ent structures are not released
too early when doing direct I/O (async_read_no_copy).
----------------------------
Revision 1.10        
date: 98/04/21 09:34:14;  author: capps;  state: Exp;  lines added/del: 18/10
Improve error messages.
----------------------------
Revision 1.9        
date: 98/04/20 16:06:21;  author: capps;  state: Exp;  lines added/del: 53/50
Iozone now 64 bit application
----------------------------
Revision 1.8        
date: 98/04/20 10:17:59;  author: capps;  state: Exp;  lines added/del: 0/0
no change
----------------------------
Revision 1.7        
date: 98/04/17 08:49:16;  author: capps;  state: Exp;  lines added/del: 15/2
Optimization on async operations. Just add one to the end
of the list if the list already has more than one item.
----------------------------
Revision 1.6        
date: 98/04/17 00:00:30;  author: capps;  state: Exp;  lines added/del: 10/2
Make cancel keep trying until it succeeds. Otherwise transfers after the buffer
is freed can occur.
----------------------------
Revision 1.5        
date: 98/04/16 16:49:28;  author: capps;  state: Exp;  lines added/del: 49/4
Improve error handling when running machine out of memory.
----------------------------
Revision 1.4        
date: 98/04/16 15:26:41;  author: capps;  state: Exp;  lines added/del: 118/28
added async_read_no_copy(). This allows the application to let the 
library specify the destination buffer and perform the async I/O
without unwanted bcopys.
----------------------------
Revision 1.3        
date: 98/04/14 11:56:23;  author: capps;  state: Exp;  lines added/del: 36/10
Add supporf for -k. When using POSIX async I/O use
the buffer specified and do not perform any bcopys.
----------------------------
Revision 1.2        
date: 98/04/13 10:35:20;  author: capps;  state: Exp;  lines added/del: 5/7
Fixup for error path to propagate any small transfers.
----------------------------
Revision 1.1        
date: 98/04/13 10:21:23;  author: capps;  state: Exp;  
Initial revision
=============================================================================

RCS file:        makefile,v;   Working file:    makefile
head:            1.20
locks:           ;  strict
access list:   
symbolic names:
comment leader:  "# "
total revisions: 20;    selected revisions: 20
description:
Initial version of makefile
----------------------------
Revision 1.20        
date: 98/10/06 10:36:22;  author: capps;  state: Exp;  lines added/del: 87/28
Add comments to describe each targets capabilities.
----------------------------
Revision 1.19        
date: 98/10/06 09:59:18;  author: capps;  state: Exp;  lines added/del: 3/3
Fix spelling error
----------------------------
Revision 1.18        
date: 98/10/06 09:58:29;  author: capps;  state: Exp;  lines added/del: 18/3
Add support for Windows build
----------------------------
Revision 1.17        
date: 98/08/17 16:44:56;  author: capps;  state: Exp;  lines added/del: 2/2
Fixes for Solaris
----------------------------
Revision 1.16        
date: 98/07/30 22:05:33;  author: capps;  state: Exp;  lines added/del: 20/1
Add support for Solaris
----------------------------
Revision 1.15        
date: 98/05/07 14:17:26;  author: capps;  state: Exp;  lines added/del: 13/13
Make VXFS a define in the make command. This makes moving to other targets
easier. It removes the binding of HPUX and VXFS.
Also, Added -Q to support offset/latency file generation for later use
as inputs to plot program.
----------------------------
Revision 1.14        
date: 98/04/22 16:02:42;  author: capps;  state: Exp;  lines added/del: 2/0
Add RCS version ids.
----------------------------
Revision 1.13        
date: 98/04/22 13:58:54;  author: capps;  state: Exp;  lines added/del: 6/6
For now only build the SGI targets in 32 bit mode. 
There is some problem with POSIX async I/O and 64 bit apps.
----------------------------
Revision 1.12        
date: 98/04/22 12:08:25;  author: capps;  state: Exp;  lines added/del: 3/3
Let the IRIX64 target default to its default compile mode.
----------------------------
Revision 1.11        
date: 98/04/22 09:10:54;  author: capps;  state: Exp;  lines added/del: 3/3
Bug fixes for 64 bit mode on IRIX, and addition 
on the internal inuse queue to insure that the
internal struct_cache_ent structures are not released
too early when doing direct I/O (async_read_no_copy).
----------------------------
Revision 1.10        
date: 98/04/21 09:29:57;  author: capps;  state: Exp;  lines added/del: 17/17
Improve dependencies
----------------------------
Revision 1.9        
date: 98/04/20 16:05:48;  author: capps;  state: Exp;  lines added/del: 58/29
Iozone now 64 bit application
----------------------------
Revision 1.8        
date: 98/04/20 10:17:44;  author: capps;  state: Exp;  lines added/del: 0/0
*** empty log message ***
----------------------------
Revision 1.7        
date: 98/04/16 16:50:11;  author: capps;  state: Exp;  lines added/del: 6/6
Have the SGI build 32 bit app too.
----------------------------
Revision 1.6        
date: 98/04/15 16:48:09;  author: capps;  state: Exp;  lines added/del: 5/5
Fix to make build on 9.05 and 10.1
----------------------------
Revision 1.5        
date: 98/04/13 10:22:34;  author: capps;  state: Exp;  lines added/del: 14/6
Add support for libasync library.
----------------------------
Revision 1.4        
date: 98/04/11 11:57:34;  author: capps;  state: Exp;  lines added/del: 10/10
AAdd support for POSIX async I/O testing
----------------------------
Revision 1.3        
date: 98/03/31 11:21:34;  author: capps;  state: Exp;  lines added/del: 24/0
Add support for SGI IRIX and SGI IRIX64
----------------------------
Revision 1.2        
date: 98/03/25 13:59:18;  author: capps;  state: Exp;  lines added/del: 21/9
Fixes for SPP-UX
----------------------------
Revision 1.1        
date: 98/03/25 10:48:21;  author: capps;  state: Exp;  
Initial revision
=============================================================================
Added support for BIFF file output. Iozone can now write Excel spreadsheet 
format. This allows one to directly access the Excel spreadsheet without 
needing to import with tab and space delimited method.

Added support for large files and threads for Solaris.

Add support for FreeBSD

Change default stride value to avoid nodalization with various spindle counts.
=============================================================================
Version 3.3:
Changed name of processor_bind to ioz_processor_bind to avoid collision
with SVR5.4.MP shared library.
Removed leading tab on an #ifdef that caused some compilers to get sick.
=============================================================================
Version 3.4:
Add support for OpenBSD
=============================================================================
Version 3.6:
Lots of code cleanup. 
Added support for OSF1 on the DEC Alpha.
=============================================================================
Version 3.7:
Add support for OSF Version 4.
Add timer resolution problem detection.

=============================================================================
Add support for OSF Version 5.
=============================================================================
Version 3.13:
Add support for Linux to use pthreads.

=============================================================================
Version 3.16:
=============================================================================
Add support for Netbsd 
Add support for Largefiles and Async I/O to Linux target
=============================================================================
Version 3.17:
=============================================================================
Removed small model for Linux. In the past Iozone was forced to 
use a small model for testing Linux as the normal load caused
Redhat to panic. Redhat users have told me that the system now
works fine with the normal load. They have tested Redhat 6.1 and
it no longer panics.
=============================================================================
Version 3.18:
=============================================================================
Add support for BSDI. Base, largefiles, pthread. No async I/O
=============================================================================
Revision 3.19        
=============================================================================
date: 2000/03/08 14:47:21;  author: capps;  state: Exp;  lines added/del: 4/1
Add support for getpagesize. This is used when available.
=============================================================================
Revision 3.20        
=============================================================================
date: 00/04/01 11:04:59;  author: capps;  state: Exp;  lines added/del: 2/2
Fix for multiple filenames and range of threads being used.
=============================================================================
Revision 3.21        
=============================================================================
date: 00/04/01 11:10:54;  author: capps;  state: Exp;  lines added/del: 3/1
SPPUX does not have getpagesize... 
=============================================================================
Revision 3.22        
=============================================================================
Add support for Linux-ia64
Add support for mmap & normal file I/O mixing.
=============================================================================
Revision 3.23        
Fixups for IBM AIX.
=============================================================================
Revision 3.24        
Fixups for BSD 2.7  (New release of BSD that supports O_SYNC)
=============================================================================
Revision 3.27        
Fixups for Cygnus compiler changes. (Windows targets). With this
change Iozone will compile with at least 2 versions of the Cygnus
compilers.
=============================================================================
Revision 3.28        
=============================================================================
Add support for reading and writing while holding lockf() on the file.
This turns out to be important aspect of NFS benchmarking.
=============================================================================
Revision 3.29        
=============================================================================
Change calls to lockf() to calls to fcntl(). This is more portable.
=============================================================================
Revision 3.30        
=============================================================================
Add support for variable compute cycle time before each I/O
operation. This allows one to more accuratly represent
a specific application that is doing compute/read/compute/read 
style operations.
=============================================================================
Revision 3.30 through 3.37
=============================================================================
Add support for read and write telemetry files.
=============================================================================
Revision 3.40 
=============================================================================
Code cleanup for popen() usage in -M path.
=============================================================================
Revision 3.41 
=============================================================================
Bug fix for ops/sec in rewrite throughput testing.
Added average throughput to output in throughput mode.
=============================================================================
Revision 3.42 
=============================================================================
Bug fix for read and re-read. Usage of un-initialized variable that
caused results to be wrong.
=============================================================================
Revision 3.43 
=============================================================================
Add support for latency plot data for throughput testing.
Each child thread/process gets its own data file.
=============================================================================
Revision 3.44 
=============================================================================
Enhance compatibility of multi-thread/proc latency offsets with 
telemetry file support.
=============================================================================
Revision 3.45 through 3.48
=============================================================================
Added latency/offset plot data files for all throughput tests.
=============================================================================
Revision 3.49
=============================================================================
Fixed compile warning for Linux off64_t redefinition.
Add Solaris2.6 target with simple build.
=============================================================================
Revision 3.50
=============================================================================
Added support for openbsd-threads
Cleanup for page size foo.
=============================================================================
Revision 3.51, 3.52, 3.53
=============================================================================
Cleanup for new random write testing in throughput mode.
Improve perror handling.
=============================================================================
Revision 3.54
=============================================================================
Add -g maxfilesize so people will not have to edit the source to 
test files bigger than 512 Mbytes.
=============================================================================
Revision 3.55
=============================================================================
Supports -n and -g to set the min and max file sizes to be used for 
an auto mode run.
=============================================================================
Revision 3.56
=============================================================================
Added support for SCO Unixware SVR5 with gcc compiler
=============================================================================
Revision 3.57
=============================================================================
Fixed bug where file locking was not being used when
_LARGE_FILE64_SOURCE was defined in read_perf_test.
=============================================================================
Revision 3.58
=============================================================================
Added -z option. This is to be used with the -a option. It
provides more complete testing for small record sizes 
when the file sizes are very large.
Fixed -a so that the cross-over mechanism works correctly.
=============================================================================
Revision 3.59
=============================================================================
Fix a bug where the user specified -R -s but did not specify
-a or -r. This caused the Excel report to print a bunch
of zeros.
=============================================================================
Revision 3.60
=============================================================================
Fix headers in the Excel output when cross over kicks in.
=============================================================================
Revision 3.61
=============================================================================
Added -y and -q to set record size range
Added command line to output
=============================================================================
Revision 3.62
=============================================================================
Put auto cross over back to 16 Meg
=============================================================================
Revision 3.63
=============================================================================
Minor code cleanups for error messages
=============================================================================
Revision 3.64
=============================================================================
Re-organize the help listing.
=============================================================================
Revision 3.65
=============================================================================
Add labels to the latency/offset output files.
=============================================================================
Revision 3.66
=============================================================================
Added Randy Dunlap to the list of contributors. Thanks Randy !!
=============================================================================
Revision 3.67
=============================================================================
Fix labels when using -R and -i options together.
=============================================================================
Revision 3.68
=============================================================================
Code cleanup. No functionality changes.
=============================================================================
Revision 3.69
=============================================================================
Prevent mixed modes. Auto and throughput.
Added support for the Plus extended options.
=============================================================================
Revision 3.70
=============================================================================
Added support for -+u option. Cpu utilization.
=============================================================================
Revision 3.71
=============================================================================
Added comment for the support for -+u option. Cpu utilization.
=============================================================================
Revision 3.72
=============================================================================
Added network testing mode. -+m  (Experimental) Tested: Linux, HP-UX
=============================================================================
Revision 3.73
=============================================================================
Added -xflag support for distributed mode.
Handle interrupts when in distributed mode.
=============================================================================
Revision 3.74
=============================================================================
Add default for REMOTE_SHELL
=============================================================================
Revision 3.75
=============================================================================
Code cleanup. 
=============================================================================
Revision 3.76
=============================================================================
Portability change for shmat().
Added and example of client_list file to the distribution.
=============================================================================
Revision 3.77
=============================================================================
Disable CPU utilization in distributed mode.
Bug fix for CPU utilization in normal mode.
=============================================================================
Revision 3.78
=============================================================================
Fix compatibility with AIX for shmat()
=============================================================================
Revision 3.79
=============================================================================
Fix throughput labels when user is selecting specific tests with -i option.
=============================================================================
Revision 3.80
=============================================================================
Remove dependency on min() and max(). They are not portable.
=============================================================================
Revision 3.81
=============================================================================
Changes for 64bit architectures. Brad Smith. OpenBSD.
=============================================================================
Revision 3.83
=============================================================================
Add -+m cluster option to the help list and the list of options.
=============================================================================
Revision 3.84 -> 3.88
=============================================================================
Fix file descriptor leak in cluster mode.
=============================================================================
Revision 3.89 -> 3.91
=============================================================================
Support for heterogeneous clusters, bug fix for -C 
=============================================================================
Revision 3.92 
=============================================================================
Add a small sleep in the client so the master's terminate message 
can arrive before the client exits and closes the channel.
=============================================================================
Revision 3.93 
=============================================================================
Add support for UWIN (Unix for Windows)
=============================================================================
Revision 3.94 
=============================================================================
Bug fix for client's working dir in cluster mode.
=============================================================================
Revision 3.95 
=============================================================================
Enable more options in Cluster mode.
=============================================================================
Revision 3.96 
=============================================================================
Add support for Solaris 8 in 64-bit mode.
=============================================================================
Revision 3.97 
=============================================================================
Linux demands a function proto for functions that take floats as args.
=============================================================================
Revision 3.98 
=============================================================================
Changes for Solaris to make their silly compiler eat reasonable 
function prototypes. (yech !!)
=============================================================================
Revision 3.99 
=============================================================================
Add protocol version checking for distributed messages.
Add support for AIX 5.2
=============================================================================
Revision 3.100 
=============================================================================
Fixes for socket ports. Needed to be in network format.
=============================================================================
Revision 3.101 
=============================================================================
Add support for RSH environment override.
=============================================================================
Revision 3.102 
=============================================================================
Improve O_DIRECT and VX_DIRECT so that testing is done
on the correct file on the correct client.
=============================================================================
Revision 3.103 
=============================================================================
Code cleanup.
=============================================================================
Revision 3.104 
=============================================================================
Code cleanup. Bug fix for O_DIRECT in read_perf_test.
=============================================================================
Revision 3.105 
=============================================================================
Bug fix for TRU64 and OSF where reclen was not getting displayed.
=============================================================================
Revision 3.106 
=============================================================================
Add -+d file I/O diagnostic mode.
=============================================================================
Revision 3.107 
=============================================================================
Fixes for the awesome Diagnostics mode.
=============================================================================
Revision 3.108 
=============================================================================
turn off cdebug
Switch child comm to SOCK_STREAM. Avoid UDP fragment problems.
=============================================================================
Revision 3.109 
=============================================================================
Fix for "disrupt" and Direct I/O. Needs to be page size and aligned.
=============================================================================
Revision 3.110 
=============================================================================
Cleanup for -Wall to all source files.
=============================================================================
Revision 3.111 
=============================================================================
Fixes for UWIN compile warnings.
=============================================================================
Revision 3.112 
=============================================================================
Fixes for Windows compile warnings. do_compute() proto.
=============================================================================
Revision 3.113 
=============================================================================
Add definition char *dumb for Solaris to alloc_mem()
=============================================================================
Revision 3.114 
=============================================================================
Code cleanup for AIX. No async support caused warnings.
=============================================================================
Revision 3.115 
=============================================================================
Fix for Solaris returning short reads() from socket to child_listen.
=============================================================================
Revision 3.116 
=============================================================================
Add support for Mac OS X
=============================================================================
Revision 3.117 
=============================================================================
Add code to set the socket buffer window size. Solaris needs this.
=============================================================================
Revision 3.118 
=============================================================================
Add O_Direct for AIX
=============================================================================
Revision 3.119-> 3.120 
=============================================================================
Fix some compiler warnings and implement the -+x option for 
setting the multiplier used for file and record size incrementing.
=============================================================================
Revision 3.121 
=============================================================================
Add changes from Debian. Add powerpc and sparc.
Add changes to fix warning on Irix and Irix64
=============================================================================
Revision 3.122 
=============================================================================
Bug fix for cluster mode. Need to bzero buffers before sprintf or sscanf
=============================================================================
Revision 3.123 
=============================================================================
Bug fix for handling all chars that are transported over messaging.
=============================================================================
Revision 3.124 
=============================================================================
Simplify the child's debug output mechanism.
=============================================================================
Revision 3.125 
=============================================================================
Fix for stonewall in cluster mode.
=============================================================================
Revision 3.126 
=============================================================================
Shrink the client_neutral_command structure so it fits in a single
UDP packet. 
=============================================================================
Revision 3.127 
=============================================================================
Improve debug code for cluster mode.
=============================================================================
Revision 3.128 
=============================================================================
Reduce the message traffic due to master's distribution of STOP. Only 
one STOP distribution is needed. More can lead to socket buffer overflows.
=============================================================================
Revision 3.129 
=============================================================================
Bzero structures on the stack before using. No problem seen but it
is a possible hole.
=============================================================================
Revision 3.130 
=============================================================================
Add error checking for the client file contents.
=============================================================================
Revision 3.131 
=============================================================================
Use prealloc() for HP-UX to create file for use with mmap.
=============================================================================
Revision 3.132 
=============================================================================
Add random mix mode.
=============================================================================
Revision 3.133 
=============================================================================
Make a better 32 bit random offset from calling rand()<<16||rand()
=============================================================================
Revision 3.134 
=============================================================================
Add -+p percentage read option.
=============================================================================
Revision 3.135 
=============================================================================
Improve the mixed mode distribution algorithm.
=============================================================================
Revision 3.136 
=============================================================================
Fix auto bug introduced by mixed mode testing.
Introduce -+r for O_RSYNC.
=============================================================================
Revision 3.137 
=============================================================================
Code cleanup for some warnings on IA-64 systems.
=============================================================================
Revision 3.138 
=============================================================================
Fixes for FreeBSD
=============================================================================
Revision 3.139 
=============================================================================
Add support for multiple -r and -s options.
=============================================================================
Revision 3.140 
=============================================================================
Code cleanup for non-ansi builds
Add target build to output.
=============================================================================
Revision 3.141 
=============================================================================
Add speed check code.
=============================================================================
Revision 3.142 
=============================================================================
Increase maximum threads/procs to 256
=============================================================================
Revision 3.143 
=============================================================================
Add contribs and -+t to help splash screen.
=============================================================================
Revision 3.144 
=============================================================================
Bug fix for Redhat.
=============================================================================
Revision 3.145 
=============================================================================
Bug fix for when user used -l but failed to use -u too.
=============================================================================
Revision 3.146 
=============================================================================
Add void to speed_main() for non-ansi compiles.
=============================================================================
Revision 3.147 
=============================================================================
Add "Test running" So users will know the test is running
and not to hit control 'c' too soon.
Bug fix in libbif.c do_float()
=============================================================================
Revision 3.148 
=============================================================================
Turn off some child debug code.
=============================================================================
Revision 3.149 
=============================================================================
Disable fread and fwrite testing if mmap or async is in use.
=============================================================================
Revision 3.150 
=============================================================================
Add pread/pwrite to Linux
=============================================================================
Revision 3.151 
=============================================================================
Handle -EB
=============================================================================
Revision 3.152 
=============================================================================
Add pread/pwrite throughput testing
=============================================================================
Revision 3.153 
=============================================================================
Changed second parameter to mmap() to be size_t. AIX needs this.
=============================================================================
Revision 3.154 
=============================================================================
Add support for madvise().
=============================================================================
Revision 3.155 
=============================================================================
Code cleanup.
=============================================================================
Revision 3.156 
=============================================================================
Fixes for -w -t -R from Veritas
=============================================================================
Revision 3.157 
=============================================================================
Make madvise() go away for windows. 
=============================================================================
Revision 3.158 
=============================================================================
Permit smaller values for -n and -g
=============================================================================
Revision 3.159 
=============================================================================
Make initial write in initfile() a page size request.
=============================================================================
Revision 3.160 
=============================================================================
Stop test if file can not be written.
=============================================================================
Revision 3.161 
=============================================================================
Special handling for mmap of a file that is opened (O_DIRECT)
=============================================================================
Revision 3.162 
=============================================================================
Fixup for systems that do not have O_DIRECT.
=============================================================================
Revision 3.163 
=============================================================================
Simplify the prototype for do_compute()
=============================================================================
Revision 3.164 
=============================================================================
Zero compute_val inside of loops.
=============================================================================
Revision 3.165 
=============================================================================
Add support for O_DIRECT for IRIX and IRIX64
=============================================================================
Revision 3.166 
=============================================================================
Improve macros and add prototypes.
=============================================================================
Revision 3.167 
=============================================================================
Improve resolution of get_resolution().
=============================================================================
Revision 3.168 
=============================================================================
Changes to support RedHat 9.0.
=============================================================================
Revision 3.169 
=============================================================================
Special handling of NAME for broken frontend in Cygwin/Windows env.
=============================================================================
Revision 3.170 
=============================================================================
Add support for the CrayX1
=============================================================================
Revision 3.171 
=============================================================================
Remove reference to PAGE_SIZE for linux. This causes problems
with SuSe 8.
=============================================================================
Revision 3.172 
=============================================================================
Fixup for SCO build.
=============================================================================
Revision 3.173 
=============================================================================
Add -DHAVE_PREAD for Solaris8-64 target.
=============================================================================
Revision 3.174 
=============================================================================
Code cleanup for Linux
=============================================================================
Revision 3.177 
=============================================================================
Improve -+d so that each byte is more unique.
Improve byte level validation.
=============================================================================
Revision 3.178 
=============================================================================
Provide byte level error detection with Found char and Expecting Char in
  -+d mode.
=============================================================================
Revision 3.179 
=============================================================================
Improve speed of -+d without losing uniqueness of bytes.
=============================================================================
Revision 3.180 
=============================================================================
Fix so that Windows can use multiple processes. Needed mmap like SCO.
=============================================================================
Revision 3.181 
=============================================================================
Use malloc() instead of mmap() for threads memory, instead of mmap.
=============================================================================
Revision 3.182 
=============================================================================
Make CPU utilization use doubles everywhere.
=============================================================================
Revision 3.183 
=============================================================================
Add support for CPU utilization while in distributed mode.
=============================================================================
Revision 3.184 
=============================================================================
Make all times relative so multi node can do CPU usage.
=============================================================================
Revision 3.185 
=============================================================================
Remove unused variables.
=============================================================================
Revision 3.186 
=============================================================================
Add -+n option to disable re-testing.
=============================================================================
Revision 3.187 
=============================================================================
Fixup -+n for throughput mode.
=============================================================================
Revision 3.188 
=============================================================================
Fix Excel output when -+n is used.
=============================================================================
Revision 3.189 
=============================================================================
Add support for the IBM S390 running Linux.
=============================================================================
Revision 3.190 
=============================================================================
Cleanup naming conventions for the S390 and fixup a #define.
=============================================================================
Revision 3.191 
=============================================================================
Add 64 bit compiles for s390x
Move BIG_ENDIAN to ZBIG_ENDIAN to avoid header conflicts.
=============================================================================
Revision 3.192 
=============================================================================
Make random offsets always based on 48 bit random values.
=============================================================================
Revision 3.193 
=============================================================================
Addition for make random offsets always based on 48 bit random values.
=============================================================================
Revision 3.194 
=============================================================================
Make rands long longs.
=============================================================================
Revision 3.195 
=============================================================================
Bug fix for 48 bit rands in bsd4_2 and Windows.
=============================================================================
Revision 3.196 
=============================================================================
Make big_rand a long long.
=============================================================================
Revision 3.197
=============================================================================
Inject Erik's changes for Multi-client Windows.
=============================================================================
Revision 3.198
=============================================================================
Change proto version due to changes in Windows -+m support.
Add Eric to the contributors list.
=============================================================================
Revision 3.199
=============================================================================
Add more Windows support.
=============================================================================
Revision 3.200
=============================================================================
Spelling error.
=============================================================================
Revision 3.201
=============================================================================
Bug fixes from Erik H.
=============================================================================
Revision 3.202
=============================================================================
Reduce usage of shared memory.
=============================================================================
Revision 3.203
=============================================================================
Eliminate STUPID warning from the silly compiler.
=============================================================================
Revision 3.204
=============================================================================
Changes to remove warnings on BSD. Thanks to Christian Weisgerber
=============================================================================
Revision 3.205
=============================================================================
Support for the AMD64
=============================================================================
Revision 3.206
=============================================================================
Add -+k for constant aggregate data set size in throughput mode.
=============================================================================
Revision 3.207
=============================================================================
Add pread support for the TRU64 target. Department of Defense in Canada.
Add -+q for delay in seconds between tests.
=============================================================================
Revision 3.208
=============================================================================
Move variable up, GCC on Solaris was getting a bogus parse error
=============================================================================
Revision 3.209
=============================================================================
Add support for -+D (O_DSYNC) mode testing.
=============================================================================
Revision 3.210
=============================================================================
Make O_DSYNC conditional.
=============================================================================
Revision 3.211
=============================================================================
Add telemetry support for pread/pwrite
=============================================================================
Revision 3.212
=============================================================================
Add record locking
Add single file, file sharing.
=============================================================================
Revision 3.213
=============================================================================
Enhance fill/verify (diag mode) for shared file.
=============================================================================
Revision 3.214
=============================================================================
Remove warnings.
=============================================================================
Revision 3.215
=============================================================================
Add prototype for mylockr()
=============================================================================
Revision 3.216
=============================================================================
Fix prototype for mylockr
=============================================================================
Revision 3.217
=============================================================================
Enable options for Windows systems.
=============================================================================
Revision 3.218
=============================================================================
Add label to Excel spreadsheet that describes the rows and columns.
Add support for Solaris64 with VxFS.
Add support for Linux-arm
=============================================================================
Revision 3.219
=============================================================================
Add sleep to permit child to get connection up before master does connect.
=============================================================================
Revision 3.220
=============================================================================
Improve master connect to child, without delays.
=============================================================================
Revision 3.221
=============================================================================
Add -+B Mixed sequential testing. BlueArc request.
=============================================================================
Revision 3.222
=============================================================================
Workaround for bug in Cygwin's sscanf
=============================================================================
Revision 3.223
=============================================================================
Add transfer size to the output from -Q
=============================================================================
Revision 3.224
=============================================================================
Work around for TCP_WAIT in Windows.
=============================================================================
Revision 3.225
=============================================================================
Fix for broken rsh on Windows.
=============================================================================
Revision 3.226
=============================================================================
Workaround for gcc 3.4. From the folks at Gentoo.org.
=============================================================================
Revision 3.227
=============================================================================
Enable -+m and telemetry files.
=============================================================================
Revision 3.228
=============================================================================
Make more unique file names for mmap files.
=============================================================================
Revision 3.229
=============================================================================
Add -+T time stamps.
=============================================================================
Revision 3.230
=============================================================================
Bug fix for -m and validation code.
=============================================================================
Revision 3.231
=============================================================================
Add a space to the throughput output dump.
=============================================================================
Revision 3.232
=============================================================================
Add another space to the throughput output dump.
=============================================================================
Revision 3.233
=============================================================================
Enable shared file with no locking
=============================================================================
Revision 3.234
=============================================================================
Add sanity check to validate that open(name, O_CREAT | O_WRONLY | O_TRUNC, 0)
does work correctly. This is an NFS client test that
detects if the NFS server's local filesystem is broken and
fails to support the sequence above correctly. 
=============================================================================
Revision 3.235
=============================================================================
add a close(fd) to the sanity test.
=============================================================================
Revision 3.237
=============================================================================
Transport the -o flag to remote clients.
=============================================================================
Revision 3.238
=============================================================================
Fix hang when using HP-UX master, Linux client, ssh buildup.
=============================================================================
Revision 3.239
=============================================================================
Add -+h hostname. Permits one to manually set the hostname. For systems
with multiple names/NICs.
=============================================================================
Revision 3.241
=============================================================================
Add -+h, set hostname, and fix Solaris hang.
=============================================================================
Revision 3.242
=============================================================================
Remove the side effect of no-rereads when using -w. Now use -+n for
consistancy.
=============================================================================
Revision 3.243
=============================================================================
Bug fix for -+k option.
=============================================================================
Revision 3.246
=============================================================================
Add the -+U for WIN32 API calls .. Unbuffered I/O. Sony studios.
=============================================================================
Revision 3.247
=============================================================================
Add support for -+U with -K (WIN32API calls + Jitter)
=============================================================================
Revision 3.248
=============================================================================
Bug fix. -J with -+m not passing compute delay correctly.
=============================================================================
Revision 3.249
=============================================================================
Add support for -i 8 when used with -+B (sequential mix)
=============================================================================
Revision 3.250
=============================================================================
Change the default pattern. Samba is trying to cheat by 
special casing IOZONE.tmp, and the pattern of 0xA5.
=============================================================================
Revision 3.251
=============================================================================
Make the default pattern random, and based on Iozone version.
This is to prevent the hack from Richard Sharpe (in Samba)
from special casing Iozone, and lying to the user.
=============================================================================
Revision 3.252
=============================================================================
bug fix in pattern gen.
=============================================================================
Revision 3.253
=============================================================================
Add -+Z  old data set mode.
Add -+X  constant data for short circuit testing only.
=============================================================================
Revision 3.254
=============================================================================
 Multi-node changes for new options. (-+Z and -+X)
=============================================================================
Revision 3.255
=============================================================================
Add -+K flag for Sony.
=============================================================================
Revision 3.256
=============================================================================
Move -+K outside of Windows only.
=============================================================================
Revision 3.257
=============================================================================
Simplify percentage calculation
=============================================================================
Revision 3.258
=============================================================================
Add error checking for -f and -F in the wrong modes.
=============================================================================
Revision 3.259
=============================================================================
Bug fix for pbuffer allocation on remote clients.
=============================================================================
Revision 3.260
=============================================================================
Check for max_rec_size when using ranges. -r -r -r
=============================================================================
Revision 3.261
=============================================================================
Fix for Debian user bug. -r 1m -n 1m -g 2m gave bogus error.
=============================================================================
Revision 3.262
=============================================================================
Bug fix for -k used in conjunction with -t and content validation.
=============================================================================
Revision 3.263
=============================================================================
Bug fix for -k used in conjunction with -t and content validation.
=============================================================================
Revision 3.264
=============================================================================
Add DragonFly target.
=============================================================================
Revision 3.265
=============================================================================
Put PER_VECTOR_OFFSET in for HP-UX
=============================================================================
Revision 3.266
=============================================================================
Fix compiler warning messages
=============================================================================
Revision 3.267
=============================================================================
Enforce minimum file size of page_size
=============================================================================
Revision 3.268
=============================================================================
Minor fixes.
=============================================================================
Revision 3.269
=============================================================================
Check fsync and close for errors.
=============================================================================
Revision 3.270
=============================================================================
Adding support for testing block devices. Will be done is phases. This is 
phase 1. (Single threaded mode only)
=============================================================================
Revision 3.271
=============================================================================
Adding 4 token support to client_list. Each entry may now contain 4 tokens
and the new one is the absolute path to the temp file for testing.
=============================================================================
Revision 3.272
Editorial change.
=============================================================================
Revision 3.273
Add support for external monitor start & stop for throughput tests.
IMON_START and IMON_STOP environmental variables used.
=============================================================================
Revision 3.274
=============================================================================
minor change.
=============================================================================
Revision 3.275
Bug fix for systems without O_DIRECT. Fall through in switch statement.
=============================================================================
Revision 3.276
Fix for -c -t over NFS and initial writer close() when told by another to stop
=============================================================================
Revision 3.277
Add Benny Halevy to contributors list.
=============================================================================
Revision 3.278
Fix for Cygwin environment.
=============================================================================
Revision 3.279
Code cleanup, and add arg to external trigger.
=============================================================================
Revision 3.280
Code fixes for macosx
=============================================================================
=============================================================================
Revision 3.281
Add support for building with Sun's Studio 11 compiler
=============================================================================
Revision 3.283
Bug fix for fread/fwrite with > 2Gig files.
=============================================================================
Revision 3.287
Add O_DIRECT for Windows
=============================================================================
Revision 3.288
Add -+w dedup testing mode.
=============================================================================
Revision 3.289
Make remaining non-dedup data unique.
=============================================================================
Revision 3.290
Make non-dedupable more unique.
=============================================================================
Revision 3.291
Bug fix for non-dedup.
=============================================================================
Revision 3.292
Make random offsets unique, using Knuth shuffle.
=============================================================================
Revision 3.292
free memory used for random offset uniqueness.
=============================================================================
Revision 3.294
Make unique/random offsets 64bits.
=============================================================================
Revision 3.295
Add fallback for random/unique.
=============================================================================
Revision 3.296
Make non-dedup region more unique
=============================================================================
Revision 3.297
Add -+y ## to set percentage of interior dedup.
=============================================================================
Revision 3.298
Add -+y ## to set percentage of interior dedup.
=============================================================================
Revision 3.299
Bug fixes for -+w and -+y
=============================================================================
Revision 3.300
Minor fix for dedup
=============================================================================
Revision 3.302
Adding -+C to set percent of dedupable within a file.
=============================================================================
Revision 3.303
bug fix
=============================================================================
Revision 3.304
Add solaris to read sync O_RSYNC
=============================================================================
Revision 3.305
Add space to avoid field output touching each other.
=============================================================================
Revision 3.306
Add check for config file exceeding MAXSTREAMS.
=============================================================================
Revision 3.307
Add new contributor's name.
=============================================================================
Revision 3.308
Fix type-oh
=============================================================================
Revision 3.309
Bug fix. rewrite_rec needed to fill entire buffer, or later stride read will
fail.
=============================================================================
Revision 3.310
=============================================================================
Add ability for remote clients to return errors to the master and
have the master display on output.
=============================================================================
Revision 3.311
=============================================================================
fix double reporting of client errors 
=============================================================================
Revision 3.312
=============================================================================
Eliminate extra file descriptor in fwrite test.
=============================================================================
Revision 3.312
=============================================================================
bug fix for barray allocation in -T mode
=============================================================================
Revision 3.313
Revision 3.314
Revision 3.315
=============================================================================
Changes from Debian: Retry umount, add fileop for linux-sparc, and
fix column width in fileop for faster boxes.
=============================================================================
Revision 3.316
Add O_DIRECT support to FreeBSD
=============================================================================
Revision 3.317
Fix for defines in FreeBSD
=============================================================================
Revision 3.318
Add IMON_SYNC to enable monitor scripts to be run sync.
=============================================================================
Revision 3.319
Add directio() for Solaris
=============================================================================
Revision 3.320
Add fixes for unresolved references in directio() for Solaris
=============================================================================
Revision 3.321
Fix type oh.
=============================================================================
Revision 3.322
Fix c++ style comment back to 'C' style comment.
=============================================================================
Revision 3.323
Bug fix for check_filenames and large files
=============================================================================
Revision 3.324
Replace tripple rand() calls with 64 bit Mersene twister.
=============================================================================
Revision 3.325
Add read-only, external file, with no-verify. -+E
=============================================================================
Revision 3.325
Permit -+E on dedup files.
=============================================================================
Revision 3.327
Permit -+E on random read only testing, on existing file.
=============================================================================
Revision 3.328
Add passing master listener's port to remote children if it is not
HOST_LIST_PORT
=============================================================================
Revision 3.329
Adding Dave Boone's notruncate option -+N
=============================================================================
Revision 3.330
Bug fix for Dave's code.
=============================================================================
Revision 3.331
Add multi -t ops. Fabrice 
=============================================================================
Revision 3.332
Added Li Qin's multi dedup set support. -+S #
=============================================================================
Revision 3.333
Bug fix for -+S dedup_mseed needs to be an integer
=============================================================================
Revision 3.334
Make -+S generate more uniqueness
=============================================================================
Revision 3.335
Make -+S generate more uniqueness
=============================================================================
Revision 3.336
Make -+S generate more uniqueness
=============================================================================
Revision 3.337
Bug fix for -+S
=============================================================================
Revision 3.338
Make umount/remount more robust, in the face of server errors.
=============================================================================
Revision 3.339
Improve the help string for the -+S option.
=============================================================================
Revision 3.340
Add new contributor name.
=============================================================================
Revision 3.342
Add support for the programmable interdimensional timer.
=============================================================================
Revision 3.343
Bug fix for PIT on remote clients.
=============================================================================
Revision 3.344
Bug fix for PIT on remote clients.
=============================================================================
Revision 3.345
Have children re-acquire get_resolution.
=============================================================================
Revision 3.346
Bug fix for t_range addition.
=============================================================================
Revision 3.347
Get rid of a warning. ( An invalid warning, but none the less )
=============================================================================
Revision 3.348
Add more words to the usage warnings and license 
=============================================================================
Revision 3.349
Remove Ascii dependency for IBM's Z/OS that speaks EBCDIC.
=============================================================================
Revision 3.353
Add support for SUA
=============================================================================
Revision 3.354
Remove Sanity check so that SMB on Windows, under SUA, works
=============================================================================
Revision 3.355
Cache the getaddrinfo call. 
=============================================================================
Revision 3.356
delete optimization.. bad...Cache the getaddrinfo call. 
=============================================================================
Revision 3.358
Change pit to use unsigned long longs
=============================================================================
Revision 3.359
Add Linux processor affinity
=============================================================================
Revision 3.360
Remove UDP usage
=============================================================================
Revision 3.361
Increment protocol_version to catch incompat versions.
=============================================================================
Revision 3.362
Fixup for new include needed by Solaris10
=============================================================================
Revision 3.363
Patch for Mac errno
=============================================================================
Revision 3.364
Patch for Mac printf's
=============================================================================
Revision 3.365
Fix Josh's introduction of new Linux warnings.
=============================================================================
Revision 3.366
Take sleep(1) out put path, deal with it in error/retry path
=============================================================================
Revision 3.367
Add -+z latency histogram logging.
=============================================================================
Revision 3.368
Format change for the -+z latency histogram logging.
=============================================================================
Revision 3.369
Added -+O Op_rate control.
=============================================================================
Revision 3.370
Close race condition with master closing socket to child async reader
=============================================================================
Revision 3.371
Add "mygen" generation to the remote children protocol.
This prevents zombies from coming back to life and killing future masters.
=============================================================================
Revision 3.372
Set Listen(s,100) to Listen(s,MAXSTREAMS)
=============================================================================
Revision 3.373
Move lable "again" to outside of cdebug.
=============================================================================
Revision 3.374
More fixes for busted crap in Solaris !!!
=============================================================================
Revision 3.376
AIX update. They now have errno.h
=============================================================================
Revision 3.377
Need errno.h for FreeBSD
=============================================================================
Revision 3.379
Need to include errno.h for Cygwin
=============================================================================
Revision 3.381
Add SO_LINGER for master_listen and child_listen, so that wind-blows
will work like all other systems on the planet.
=============================================================================
Revision 3.382
Fix for linger addition
=============================================================================
Revision 3.383
Fix for linger addition
=============================================================================
Revision 3.384
Fix for linger addition
=============================================================================
Revision 3.385
Make linger for all
=============================================================================
Revision 3.387
Change sleep() calls, that help connect() to nanosleep() calls.
=============================================================================
Revision 3.388
Fixup remainder for nanosleep()
=============================================================================
Revision 3.389
Fixup remainder for nanosleep()
=============================================================================
Revision 3.390
Add code for pread/pwrite from Ben England (Redhat)
=============================================================================
Revision 3.391
Add code for MDEBUG and CDEBUG from Bob England (Redhat)
=============================================================================
Revision 3.392
Add code for building HPUX. Errno.h
=============================================================================
Revision 3.393
Fixes for Windows (nanosleep doesn't always work )
=============================================================================
Revision 3.394
Fixes for preadv and pwritev from RedHat (Ben Englanc)
=============================================================================
Revision 3.395
Add warnings for default switch cases, and exit with value for unknowns.
=============================================================================
Revision 3.396
Fix warnings from RedHat patches
=============================================================================
Revision 3.397
Bug fix for getopt default case, with bad parameter handed in.
=============================================================================
Revision 3.398
Adding thread_read_test and thread_write_test.
=============================================================================