LTP-20020307
------------
o	fixed IDcheck.sh to prompt for IDs only when missing (Jay Huie)
o	added time duration option to pan (Jay Huie)
o	added 4 more cases to getcwd02 test (Jay Huie)
o	added time-schedule tool by Richard Gooch under sched test
	section (Manoj Iyer)
o	added trace_sched tool under sched test section (Manoj Iyer)
o	added sigpending02 test to syscalls section (Paul Larson)
o       created a KNOWN-FAILURES file to document known 
        test failures (Robbie Williamson)
o	added sem02 test to ipc section (Robbie Williamson)
o	added SCTP section to network tests (Robbie Williamson)
o	added disktest by Brent Yardley to io section (Robbie Williamson)
o	closed the following bugs:
	[ #491285 ] recvfrom01 test (Paul Larson)
	[ #491286 ] recvmsg01 test (Robbie Williamson)
	[ #505515 ] perf_lan6 test (Robbie Williamson)
	[ #506536 ] recv01 test (Robbie Williamson)
	[ #514408 ] chown05 (Dave Engebretsen)
	[ #511427 ] pread02 test (Paul Larson)
	[ #516577 ] ftruncate03 test (Jay Huie)
	[ #523055 ] sched_getscheduler test (Paul Larson)
	[ #523137 ] sched_setscheduler02 test (Paul Larson)
	[ #525688 ] sendfile01 (Paul Larson)


LTP-20020207
------------
o       added support for cross-compiling (Todd Inglett)
o       added LKML's cache_leak testcase to ltp/scratch (Nate Straz)
o       added IPv6 support (Robbie Williamson)
o       added "gethost" to /tools (Robbie Williamson)
o	fixed the race conditions in the float tests and removed 
	the sleeps (Robbie Williamson)
o       enabled non-root make authority (Paul Larson)
o       separated compilation into "make" and "make install" (Paul Larson)
o       added ipc_stress test (Manoj Iyer)
o       added pthreads_stress test (Manoj Iyer)
o       made changes to support architecture independence (Manoj Iyer & Paul Larson)
o	closed the following bugs: 
	504960, 505108, 504613, 504616, 491283, 506689, 508055, 506692, 508074
	491289, 506662, 511383, 511391, 511427, 511494, 504649, 514050, 512953
	(Manoj Iyer, Paul Larson, and Robbie Williamson)	


LTP-20020108
------------
o	fixed IDcheck.sh to work with bash1 (Nate Straz)
o	updated menu script (Robbie Williamson)
o	reset errno to 0 at the beginning of TEST macro (Paul Larson)
o	added floating point stress tests (Bull/IBM)
o	added fsx-linux NFS tests (Apple)	
o	define GLIBC_SIGACTION_BUG for sigaction02 (Robbie Williamson)
o	removed bogus testcase from dup201 test (Paul Larson)
o	fixed recvfrom01 case 5 (Wayne Boyer)
o	workaround for smp issue with waitpid12 (Manfred Spraul)


LTP-20011206
------------
o	necessary users/groups can now be created on installation with 
	user's permission
o	added a simple menu-based interface for running the LTP testsuite
o	fixed negative duration in pan output when -l isn't used
o	new set of tests under fs-maim
o	fixed race condition in nfslock01
o	ar01, ld01, ldd01, nm01, objdump01, and size01 fixed when multiple 
	copies are run simultaneously
o	workaround for SIGTTOU hang in ioctl02
o	shmget03 uses IPC_PRIVATE to make it safe when running multiple copies
o	compiler warnings and other minor errors fixed in many tests

LTP-20011107
------------
o	Many improvements to mtest05 and mtest06 tests
o	new test nfsstress
o	included ver_linux in LTP and made it run at the end of test scripts
o	check for necessary users/groups in Makefile and warn if they don't
	exist
o	documented the users and groups necessary for the testcases to run
o	simplified telnet01 when looking for root prompt
o	removed incorrect testcase from sendfile03
o	fixed modify_ldt01 test problems on newer kernels
o	added setrlimit to unlimit core size in waitpid05 test to work 
	around systems where this is set to 0
o	fixed mmstress pthread hang problem

LTP-20010925
------------
o	Testcases have been organized into categories in a directory 
	structure under the testcases subdirectory
o	About 400 new testcases added covering various system calls
o	Andreas Jaeger got confirmation from the glibc people that the
	ulimit test was broken as a result of some changes made in 
	glibc2.2.5.  Since it's the test that's broken, Nate Straz 
	removed the offending testcase.
o	Updated README and INSTALL files
o	Descriptions of the testcases have been added to the doc 
	directory and are organized by type (syscalls.txt, fs.txt, etc.)

------------
2000-09-18 Juan J. Quintela <quintela@fi.udc.es>
           Aaron Laffin <alaffin@sgi.com>

  * tests/mmap001.c: first checkin of a modified version of
  mmap001.c from the memtest suite.

2000-09-08  Egor Duda <deo@logos-m.ru>

	* tests/fpathconf01.c: Close opened file at exit.
	* tests/select01.c: Ditto.

2000-09-08  Andrea Arcangeli <andrea@suse.de>
  * tests/fcntl09.c, tests/fcntl10.c: Rearrange the F_SETLK test to
  to correctly use F_RDLCK and F_WRLCK.

2000-09-06  Egor Duda  <deo@logos-m.ru>

	* lib/parse_opts.c (parse_opts): Initialize allocated string
	to prevent heap corruption.

