Feature - conditional compilation
Description:
SRB file driver and tests are now compiled only when SRB is enabled
(using --with-srb during configure).
Solution:
Added an automake conditional in configure.in, altered Makefiles.am in
src and test directories to depend on that conditional.
This should make a nice example for posterity to add conditionally
compiled sources.
Platforms tested:
heping (only configure change)
Purpose:
Added C++ wrapper for Packet Table API.
Description:
Added macro for high-level C++ library (LIBH5CPP_HL), which changes every
Makefile.in.
Added directories for high-level C++ library (though currently only Packet
Table API is supported).
Added both C++ source and tests.
Platforms tested:
sleipnir, mir, modi4
Misc. update:
Description: In test_conv_flt_1() in dtypes.c, the case of Intel-Linux or
AMD-Linux "long double" wasn't considered. The precision is smaller than
the size. There may be some garbage left in the unused bytes during hardware
conversion.
Solution: Clear those bytes before comparison.
Platforms tested: h5committest and mir, modi4.
New feature & code cleanup
Description:
Add feature to find first block >= a certain size (useful for allocating
space)
Cleaned up various comments, etc.
Platforms tested:
FreeBSD 4.11 (sleipnir)
Solaris 2.9 (shanti)
Description: The 5th step of changing conversion test. This checkin is only for conversion
of special values between floating-point types.
Solution: This test is seperated from regular value conversion. It reuse the same function
test_conv_flt_1() in test/dtypes.c. The source buffer of floating-point type is filled up
with 8 special values, +/-0, +/-infinity, +/-QNaN, +/-SNaN.
Platforms tested: h5committest, fuss, and modi4.
Bug fix.
Description:
One test case of scaleoffset filter has fill value too large for int.
Solution:
Change the value to be within the range of int.
Platforms tested:
heping
Misc. update:
New feature.
Description:
The scaleoffset filter is now complete for compressing integers. All previous
bugs have been fixed. The filter does not compress floating-point at present.
Solution:
Update test cases for the scaleoffset filter. Two for integer types and one for
floating-point (even though the filter does not compress). The two test cases
for integer type tests situations where fill value is defined and undefined for
the dataset.
Platforms tested:
heping, copper, shanti
Misc. update:
Description:
Added function IncTestNumErrs to increment the number of errors
that is defined in testframe.c
Platforms tested:
Linux 2.4 (heping)
AIX 5.1 (copper)
Bug fix
Description:
Opening an object in a group that is located in a file which has been
unmounted would cause a core dump. :-(
Solution:
Re-arrangement internal code to compute internal "user" and "canonical"
names for the newly opened object in a safer way.
Platforms tested:
FreeBSD 4.11 (sleipnir)
Too minor to require h5committest
Description: The 4th step of change conversion test. This checkin is only for
conversion between floating-point numbers.
Solution: The source buffer of floating-point number is filled up in the same
way described in the 3rd step(revision 1.155).
Platforms tested: h5committest and fuss.
Description: This commit is actually revision 1.155, which is the 3rd step of
changing conversion test. It's for conversion from floating-point to integer.
In this step, the source buffer is filled in with normalized and denormalized
floating-point values. For the normalized values, it starts from FLT(DBL, or
LDBL)_MIN, multiplied by 10(10000 for double, 100000000 for long double) for
the next value, until reaches to FLT_MAX. For denormalized values, the
exponent part is always 0. Mantissa part starts with 000...001, 000...011,
000...111, until reaches to 111...111. The same is with negative values.
There're also fixes in config/hpux11.00 for kelgia where default macro table
size wasn't big enough to handle the big macro in dtypes.c.
Platforms tested: h5committest and kelgia.
Bug fix
Description:
Fix a typo in my last checkin. Should make some compilers happier
about "operand types."
Platforms tested:
sleipnir, heping, kelgia
Purpose:
Bug fix
Description:
Calling H5Iobject_verify on an invalid type of ID (e.g., H5I_BADID) triggers
an assert.
Solution:
Test for this condition and return an error instead of an assert.
Added tests for this case.
Platforms tested:
sleipnir (minor change)
New feature/tests
Description:
Add better support & tests for removing blocks being tracked.
Platforms tested:
FreeBSD 4.11 (sleipnir)
Solaris 2.9 (shanti)
Description: Reverse the 3rd step of change just checked in yesterday(revision 1.155) because of some errors
in daily test. Use the revision 1.154 for now until the problem is fixed.
Platforms tested: fuss - simple rolled back to previous revision.
New tests
Description:
Add some internal validation routines and make certain that the max & min
block sizes get tracked accurately, at least for a simple series of insertions
Platforms tested:
FreeBSD 4.11 (sleipnir)
Solaris 2.9 (shanti)
New feature & bug fix
Description:
Support inserting multiple blocks
Start tracking the metadata about the blocks.
Platforms tested:
FreeBSD 4.11 (sleipnir)
Solaris 2.9 (shanti)
New feature & bug fix
Description:
Allow NULL 'op' for find operations to easily query the existance of a
record for a key during H5B2_find() operations.
Fix H5B2_neighbor() to work properly with empty B-tree
Platforms tested:
FreeBSD 4.11 (sleipnir)
Solaris 2.9 (shanti)
New feature
Description:
Add new "block tracker" data structure to library, for tracking blocks of
bytes in a file. Block trackers will be used to keep track of the blocks
belonging to the soon-to-be-implemented "segmented heap" which is designed to
replace the current local & global heaps (starting with the local heap).
Block trackers will also keep track of the free space in the segmented heap
and someday could be used to track the free space in the entire HDF5 file.
They are implemented as a small header of information to cache the state
of the blocks (max & min sizes of blocks tracked, etc.) and the records of
the blocks themselves are stored in a v2 B-tree.
Platforms tested:
FreeBSD 4.11 (sleipnir)
Solaris 2.9 (shanti)
h5committest
Description: This is the 3rd step of change conversion test. This checkin is
only for conversion from floating-point to integer.
Solution: The source buffer is filled in with normalized and denormalized
floating-point values. For the normalized values, it starts from FLT(DBL, or
LDBL)_MIN, multiplied by 10(10000 for double, 100000000 for long double) for
the next value, until reaches to FLT_MAX. For denormalized values, the
exponent part is always 0. Mantissa part starts with 000...001, 000...011,
000...111, until reaches to 111...111. The same is with negative values.
Platforms tested: h5committest and fuss.
Bug fix & New feature
Description:
Correct some situations where a write lock on the data in the metadata
cache was requested, but only a read lock is necessary.
Add routine to find nearest neighbor record < or > to a query key.
Platforms tested:
FreeBSD 4.11 (sleipnir)
Solaris 2.9 (shanti)
Bug fix & new tests
Description:
Fix another couple of issues with record removal and add some more tests to
make certain removals work correctly.
Platforms tested:
FreeBSD 4.11 (sleipnir)
Solaris 2.9 (shanti)
Description: This is the 2nd step of changing conversion test. This checkin is
only for conversion from integer to floating number. The source buffer of
integer is filled up in the same way described in the last checkin(revision
1.153).
Platforms tested: fuss, sol, and heping - copper was down. Couldn't do
h5committest.
Bug fix & new tests
Description:
Fix several errors in record removel routines, which should now be feature
complete for removing records at any location in the B-tree (further testing
will verify this)
Platforms tested:
FreeBSD 4.11 (sleipnir)
Solaris 2.9 (shanti)
Bug fix
Description:
Corrected errors in record removal code to handle removing records in
higher nodes in the B-tree.
Platforms tested:
FreebSD 4.11 (sleipnir)
Solaris 2.9 (shanti)
Automake version upgrade
Description:
Upgraded automake version from 1.6.2 to 1.9.5.
Changed bin/reconfigure script to use automake 1.9.5.
Changed configure.in and Makefiles to use new FCFLAGS and FC variables
instead of FFLAGS and F9X.
Automake and configure should now do the lion's share of the work
supporting Fortran 9X; macros in acsite.m4 are now mostly unused (will
be cleaned later).
Altered how configure handles pmake; now root-level Makefile.in is
processed by bin/reconfigure to have a .MAKEFLAGS target, since
automake no longer allows us to define unused variables.
Configure now always checks for C++ compiler even if it is not
used, since automake thinks this is the Right Thing To Do and
will break otherwise.
Platforms tested:
Sol, copper, heping, mir, sleipnir, eirene, pommier, kelgia, modi4.
Bug fix & new feature
Description:
Allow B-tree's height to be reduced when removing records.
Platforms tested:
FreeBSD 4.11 (sleipnir)
Solaris 2.9 (shanti)
More tests
Description:
Add tests for removing records in the root of a level-1 B-tree and
promoting and merging leaf nodes.
Platforms tested:
FreeBSD 4.11 (sleipnir)
Solaris 2.9 (shanti)
Bug fix/new feature
Description:
Tweak the record promotion algorithm to get it working correctly when
promoting and redistributing records.
Added tests for that case.
Platforms tested:
FreeBSD 4.11 (sleipnir)
Solaris 2.9 (shanti)
New feature
Description:
Allow records in internal nodes to be removed, not just records in leaf
nodes.
Platforms tested:
FreeBSD 4.11 (sleipnir)
Solaris 2.9 (shanti)
Bug fix & new feature
Description:
Fix error in 3-node redistribution when nodes are only moving into the
middle node from the left & right nodes (which happens sometimes during
record removals).
Clean up internal insert & remove routines to remove lots of redundant
checking.
Added 3->2 node merge routine to handle more record removal cases.
Platforms tested:
FreeBSD 4.9 (sleipnir)
Solaris 2.11 (shanti)
Description: This is the first step of changing conversion test. This checkin is only for conversion
between integers. Instead of filling source buffer with randomly generated bit pattern, this new way
uses more sensible bit patterns. It's easier to see using "char" as source for example. The bit patterns
will be
00000001, 00000010, 00000100, 00001000, 00010000, 00100000, 01000000, 10000000
00000000, 00000011, 00000111, 00001111, 00011111, 00111111, 01111111, 11111111
11111111, 11111110, 11111100, 11111000, 11110000, 11100000, 11000000, 10000000
The main point of this way is to avoid casting and comparison between source and destination types by
compiler. The bit patterns will cover positive maximum and minimum, negative maximum and minimum if
the source is signed integer.
Platforms tested: h5committest and fuss.
Bug fix & new feature
Description:
Fix a couple of off-by-one errors in assertions (code was actually correct)
for 3 node redistributions.
Remove "old" node removal code that is unused now.
Add more tests that verify that 2-node and 3-node redistributions are
working correctly for removals.
Platforms tested:
FreeBSD 4.11 (sleipnir)
Solaris 2.9 (shanti)
New test
Description:
Add a couple more tests for removing records before I start modifying the
code further.
Platforms tested:
FreeBSD 4.11 (sleipnir)
Solaris 2.9 (shanti)
Bug fix & new feature
Description:
Fix problem with inserting existing keys into B-tree corrupting record
counts along the path to the failed insertion.
Add more support for removing records, it's now handling removing records
from leaves of level-1 B-trees.
Platforms tested:
FreeBSD 4.11 (sleipnir) w/parallel
Solaris 2.9 (shanti)
Removed GASS configuration and software packages associated with
it. The following software are no longer configurable.
checking for main in -lcrypto... yes
checking for SSL_get_version in -lssl... yes
checking globus_common.h usability... yes
checking globus_common.h presence... yes
checking for globus_common.h... yes
checking for globus_module_activate in -lglobus_common... yes
checking for main in -lglobus_gass_cache... yes
checking for main in -lglobus_gaa... yes
checking for main in -lglobus_gss... yes
checking for main in -lglobus_gss_assist... yes
checking for main in -lglobus_io... yes
checking for main in -lglobus_gass_transfer_assist... yes
checking for main in -lglobus_gass_transfer... yes
checking for globus_gass_open in -lglobus_gass_file... yes
Platforms tested:
h5committested (but copper was down.) tested in modi4 too.
New features & refactor
Description:
Add basic record removal (only handles level-0 B-trees currently)
Add query routine to check the number of records in a B-tree
Add debugging routine to check the address of the root node in the B-tree
Platforms tested:
FreeBSD 4.11 (sleipnir)
Solaris 2.9 (shanti)
Description: Somehow, the hardware conversions between "long double" and other native floating-point
types were left out.
Solution: Added the hardware conversion functions in H5Tconv.c and test cases in dtypes.c.
Platforms tested: h5committest and fuss.
Misc. update: updated MANIFEST to replace bin/reconfigure.sh with bin/reconfigure
Description: The library didn't handle incorrect hardware conversion for datatype. It simply did
convert to incorrect data if any hardware didn't handle correctly.
Solution: During configuration, incorrect hardware conversion is detected and some macros are
defined. Use these macros to decide whether to register hardware conversion in H5T.c. If no hardware
conversion function is registered for certain pair of datatypes, software conversion function will
be used as the conversion path. Although slower than hardware conversion, we're more confident
software conversion is accurate.
So in one sentence to describe library's behavior, if some hardware conversion doesn't work well,
software conversion will be used instead.
Platforms tested: h5committest and fuss.
Misc. update: some changes to configure's comments.
Bug fix & new feature
Description:
Fix errors in tracking the total number of records "below" a node.
Add feature to find the n'th record in a B-tree
Platforms tested:
FreeBSD 4.11 (sleipnir)
Solaris 2.9 (shanti)
New feature, refactor code
Description:
Add call to search for a record in a B-tree by key value
Refactored some of the existing callbacks to simplify them.
Platforms tested:
FreeBSD 4.11 (sleipnir)
Solaris 2.9 (shanti)
Bug fixes
Description:
Fix several bugs in B-tree insertion code, which now appears to be fully
functional. (Tested to 1,280,000 records at least...)
Add random record insertion test to shake out boundary conditions, etc.
Platforms tested:
FreeBSD 4.11 (sleipnir)
Solaris 2.9 (shanti)
New feature
Description:
Allow internal nodes to perform 3->4 splits. Inserting records should now
be feature complete.
Platforms tested:
FreeBSD 4.11 (sleipnir)
Solaris 2.9 (shanti)
New test
Description:
Add more regression tests for redistributing leafs in a level-2 B-tree
Platforms tested:
FreeBSD 4.11 (sleipnir)
Too minor to require h5committest
New feature.
Description:
Add a test case for scaleoffset filter (integer type). For debugging purpose only.
The test case is not turned on.
Solution:
Platforms tested:
heping, copper, arabica
Misc. update:
Purpose:
Bug fix
Description:
modi4 dies during build with strange errors.
The root cause of these is a two-year-old hack in HDF5's libtool
script that only takes effect on IRIX.
Solution:
Edited the libtool hack (by editing ltmain.sh) to correct a bug in
the hack.
Also made sure that compiler-specific DEFAULT_LIBS are used
when linking.
Platforms tested:
sleipnir, copper, modi4, sol
New feature & bug fix
Description:
Allow root node to split, forming a level 2 B-tree
Fix error where wrong record was being copied up to parent node for a 2
node redistribution on the "right" side of the B-tree.
Platforms tested:
FreeBSD 4.11 (sleipnir) w/parallel
Solaris 2.9 (shanti)
Bug fix
Description:
Arabica exhibited strange errors when linker found wrong versions of
header files. This happened because include directories were
given to linker in the wrong order.
Solution:
Move include directories from AM_CFLAGS variable to INCLUDES
variable to put them before CPPFLAGS variable. Trust me, it works.
This bug may also have contributed to strange errors on other platforms
(kelgia?).
Platforms tested:
copper, sleipnir, arabica.
(h5dump broke while building on arabica, but this happened in
a clean checkout, too).
Bug fix
Description:
pmake (on modi4, for instance) complains about undefined variables
if it is run without the -V flag, which turns those errors to warnings.
Solution:
Added test to configure.in to see if $MAKE will allow Makefiles
with undefined variables. If not, sets -V flag in AM_MAKEFLAGS.
Ensured that all custom make targets use AM_MAKEFLAGS.
Also defined all variables that caused errors in top-level Makefile.am.
This means that pmake can be used to build hdf5 *from the top level
only*. To run make from a subdirectory, still need to use -V flag
(or use make or gmake).
Platforms tested:
modi4, heping, copper, sleipnir
Description: For hardware conversion from integers to "long double" on AMD machine, the test
failed because the size of "long double"(can be 16 bytes) is bigger than the precision(80 bits).
There can be some garbage in the unused bytes in "long double". That caused failure during
byte comparison.
Solution: Clean these unused bytes before comparison.
Platforms tested: mir and fuss; simple change
New feature & code cleanup
Description:
Change some references from 'keys' to 'records', which is more correct for
this implementation.
Added feature to allow preemptive 3 node record redistributions (for leaves
only currently)
Added feature to perform preemptive 3->4 node splits (for leaves only
currently)
Platforms tested:
FreeBSD 4.11 (sleipnir) w/parallel
Solaris 2.9 (shanti) w/purify
Too minor to require h5committest
New feature & bug fixes
Description:
Checkpoint v2 B-tree code after getting preemptive 2->3 node splitting
working (for leaf nodes only at the moment, however).
Also, correct a problem with redistributing records that was probably
causing the failures on mir in yesterday's daily tests.
Ran code through purify on shanti and cleared up some warnings.
Platforms tested:
FreeBSD 4.11 (sleipnir) w/parallel
Solaris 2.9 (shanti) w/purify
Description: Added support of hardware conversion between "long double" and integers(mainly
in H5Tconv.c) and some test cases(mainly in test/dtypes.c).
Platforms tested: h5committest and fuss.
Misc. update: RELEASE.txt
New feature
Description:
Checkpoint v2 B-tree code after getting 2 leaf record redistribution
working and tested.
Platforms tested:
FreeBSD 4.11 (sleipnir) w/parallel
Too minor to require h5committest
Description: H5Tget_member_value didn't return correct value if called after
H5Tenum_valueof. It's because there's a sorting on the members of enum type in
H5Tenum_valueof which changed the order of members.
Solution: Made a copy of original type and do sorting on it to protect the
original order.
Platforms tested: fuss; tested v1.6 with h5committest
Misc. update: RELEASE.txt
Bug fix & code update
Description:
Fix error in new free-list factory routines that was causing errors on
tungsten, et al.
Also, checkpoint v2 B-tree code.
Platforms tested:
FreeBSD 4.11 (sleipnir) w/parallel
Linux 2.4 (tungsten)
Otherwise too minor to require h5committest
Description: For variable-length string, H5Tget_class returned H5T_STRING as
its class. But H5Tdetect_class and H5Tget_member_class considered it as
H5T_VLEN. This is fixed to let all these 3 functions treat it as H5T_STRING.
Some test cases have been added to dtypes.c
Platforms tested: heping - already tested for v1.6 with h5committest
Misc. update: RELEASE.txt
Bug fix (sorta)
Description:
Disable btree2 testing until Monday, when I can look into the failures
without a toddler on my lap. :-)
Platforms tested:
FreeBSD 4.11 (sleipnir)
New feature
Description:
Expand v2 B-tree code to support splitting the root node when enough
records are inserted and move metadata cache callbacks into their own source
file.
Platforms tested:
FreeBSD 4.11 (sleipnir) w/parallel
Too minor for h5committest
Purpose:
Bug fix
Description:
Parallel builds were breaking in tools/lib
Solution:
talign didn't realize it depended on libh5tools.la because its
dependencies listed the full path (../../tools/lib/libh5tools.la).
Changed this, and made similar changes in a couple of other
directories.
This checkin should also add the --foreign flag to every Makefile.in
Platforms tested:
sleipnir (minor change)
New feature
Description:
Add basic code for new B-tree implementation. They don't do much yet,
aren't hooked up to anything yet and the format may change, but I'd like to
start getting them into the daily tests.
Platforms tested:
FreeBSD 4.11 (sleipnir) w/parallel
Too minor to require h5committest
Bug fix
Description:
Found the permanant fix to automake/CVS dependency problem
Solution:
Added AM_MAINTAINER_MODE macro to configure.in.
Now automake will never try to regenerate Makefiles, Makefiles.in,
configure, H5config.h, etc. when they are out of date, nor will it
print any warnings.
Developers should be very very careful to use reconfigure script,
and can add --enable-maintainer-mode flag to configure on heping
to regenerate these files correctly.
Platforms tested:
heping sleipnir copper
Bug fix
Description:
Configuration files' timestamps were incorrect.
Solution:
Update Makefiles.in. Also added correct paths to autotools on heping,
so heping build should be able to re-generate configuration files even
if they are still broken.
Platforms tested:
sleipnir
Bug fix
Description:
Dependencies between configure files (aclocal, configure.in, configure,
Makefiles.am and .in) are still causing Makefiles to try to run autotools
during build.
Solution:
Committed all Makefiles.in to update their timestamps.
As a temporary measure, forcibly prevented automake from running
autotools during build by redefining the variables it uses.
Platforms tested:
sleipnir (No changes to Makefile content)
Description: To avoid randomly generating NaN for "long double" during
conversion test, decrease the exponent by 1 if all exponent bits are set
1s.
Platforms tested: eirene(production) and fuss.
Bug fix
Description:
Different compilers use different flags to include Fortran module files
Solution:
Changed boilerplate to use configure variable rather than hardcoded -M flag.
Platforms tested:
sleipnir, sol, copper
Configuration feature
Description:
HDF5 now uses automake to generate Makefiles
Solution:
Makefile.in files are now generated from Makefile.am files.
To reconfigure (after chaning a Makefile.am or configure.in):
/bin/sh bin/reconfigure.sh
Platforms tested:
Many
Description:
For Intel machines, the size of "long double" is 12 byte, precision
is 80 bits, mantissa size is 64 bits, and no normalization. So the
most significant bit of mantissa is always 1 unless the floating number
has special value. This step tries to compensate this case by turning
on the most significant bit of mantissa if the mantissa bits aren't
all 0s.
Solution:
Tries to compensate this case by turning on the most significant bit of
mantissa if the mantissa bits aren't all 0s.
Platforms tested: eirene and fuss(production enabled). Small change for
production only.
Add test cases of nbit filter, tests are now turned on
Description:
Six test cases are added for testing the nbit filter with different
datatypes including int, float, double, array datatype, a simple
compound datatype and a complex compound datatype. Improvements are
made to testing of int and floating point.
Solution:
Platforms tested:
AIX 5.1 and Linux 2.4.
Misc. update:
Reduce the run time of the cache tests.
Description:
Some of the cache tests run for quite a while, which has been
causing problems with our daily build and test. In my last
modification to cache.c, I added code to skip these stress
tests unless we were building in production mode. Since
things go faster in production mode, the extra tests are not
a major problem here.
However, this means that the stress tests are only run once
or twice a week.
Solution:
To try to deal with this, I modified the four longest tests
to throttle depending on whether NDEBUG is defined. When
NDEBUG is not defined, runtime for the cache tests should
be about 1/5th its regular run time. We will see if this
is enough of a reduction to avoid problems.
There is some doubt in my mind as to just how much good the
throttled tests do, but they should be better than nothing.
As mentioned before, the correct solution is to build some
proper, random test code.
Platforms tested:
h5committested
production and debug builds on heping.
Misc. update:
Adding N-bit testing source code into CVS tree.
This is for debugging purpose only. N-bit filter won't be included in the daily test.
Description:
Integer, Float, Array datatype and Compound datatype tests are included.
More comprehensive tests need to be done.
Solution:
Platforms tested:
copper(AIX 5.1) and heping(Linux 2.4).
Misc. update:
1) Provide facilities in cache to allow us to avoid a potential cache
consistency bug in the parallel case.
2) Clean up a off by one sanity checking bug.
3) Turn off execution of long running tests in debug mode.
Description:
1) In the parallel case, all writes to metadata must be collective,
but reads may not be. In pricipal, this allows us to different
contents in different caches. This isn't a problem as long as the
correct data is always on disk, but unless we can force certain
writes immediately, that need not be the case.
2) & 3) should need no further explanation.
Solution:
1) Add code allowing us to mark cache entries, and then force
these entries to be flushed at a later time.
Note that to actually avoid the bug, we will have to modify
existing code to use these new features.
2) & 3) should need no further explanation.
Platforms tested:
heping (serial debug and production)
committest (copper, sol, and heping). test failed on heping in the
c++ portion of the build, but at Quincey's siggestion, I am proceeding
with the checkin.
Misc. update:
Description: Test conversion from native integer to derived floating-point type and convert back;
test conversion from derived floating-point to derived floating-point types and convert back. Fixed
a few minor bugs related to type conversion in the library.
Platforms tested: h5committest and fuss
Description: The functions for user-define floating-point type, like
H5Tset_fields, H5Tset_offset, H5Tset_precision, H5Tset_size, have some
minor bugs. For error checking, the library didn't include offset value
somehow.
Solution: Corrected those bugs.
Platforms tested: h5committest and fuss
Misc. update:
Description: There was a #ifdef statement with logical AND in it.
Solution: Change it to #if statement.
Platforms tested: sleipnir and eirene. Simple change
Description: Intel compiler on Linux has some problem to convert long double to
unsigned int correctly.
Solution: Detect the problem in configure and define a macro to skip this test
if it happens.
Platforms tested: eirene and fuss. Simple change.
Bug fix
Description:
Fix possible overrun in error description string by allocating large enough
string on the fly.
Platforms tested:
FreeBSD 4.10 (sleipnir)
Too minor to require h5committest
Description: The fix of the loss problem of the last 2 bytes of mantissa on sleipnir has
not been successful. It happens when converting from unsigned long long to long double.
The failure has been on and off.
Solution: Hard set a macro to disable unsigned long long->long double for FreeBSD until
a good solution is found to solve this elusive problem.
Platforms tested: sleipnir and fuss. Only sleipnir is concerned.
Misc. update:
Description: the last 2 bytes of mantissa can be lost when converting from unsigned long long
to long double. In last check-in, a fix was made to ignore that precision loss. But sometimes,
the last 2 bytes are rounded up to the 3rd last byte.
Solution: Ignore the 3rd last byte, too, when comparing values.
Platforms tested: sleipnir - only this system is concerned.
Description: For FreeBSD (sleipnir), when GNU compilers do conversion from
unsigned long long to long double, the last 2 bytes of mantissa are lost.
The impact of precision loss isn't significant.
Solution: Detect this case on FreeBSD in configure, ignore it in dtypes.c
test instead of return failure.
Platforms tested: sleipnir, fuss, modi4. These systems are mainly concerned.
Reduce run time of daily tests.
Description:
cache, the test program for the metadata cache has been taking a while
to execute.
Solution:
As a short term "fix", I have commented out all but one of the long
running test functions. Of course that means that we aren't running
these tests at present. I'm not sure that this is a good idea.
Platforms tested:
Serial on Heping.
Misc. update:
Description: For HP-UX 11.00, the compiler generates 'floating exception'
when converting 'long double' to most of integer types.
Solution: Define a macro for all other systems except HP-UX 11.00. Hard set
this macro to 'no' in config/hpux11.00 to skip this test for HP-UX 11.00.
Platforms tested: modi4, kelgia, fuss
Bug fix
Description:
Print the thread ID in a little more portable of a fashion, disallowing
negative thread IDs.
Platforms tested:
Linux 2.4 (heping) w/threadsafe
Too Minor to require h5committest
Remove feature
Description:
Retire threaded, balanced binary tree code from HDF5 use. Requiescat in
pace...
Also, regenerate dependencies files.
Platforms tested:
FreeBSD 4.10 (sleipnir) w/parallel
Too minor to require full h5committesting (the code is already
disconnected from everything except its tests)
Description: Windows .NET 2003 can't handle float(double)->long_long hardware conversion.
While the problem hasn't been determined, we temporarily disable that test by using a
condition macro. Let Windows define that macro. Other systems don't have it defined.
Platforms tested: mir and eirene.
Description: integer->long double conversion test failed on some of Linux
systems(mir and eirene) when Intel compiler is used. I'm not able to repeat
the problem. So I just made a best guess and fix it. The problem is minor.
The long double on Linux is 12 bytes long but precision is 10 bytes. The
unused 2 bytes may have garbage in them causing value comparison wrong.
Platforms tested: mir and eirene with Intel compiler.
Description: 2 small things to correct:
1. the change in H5config.h.in was wept out by a later change.
2. long long isn't supported on Windows. It's long_long instead.
Platforms tested: fuss(linux 2.4)
New feature
Description:
Add some additional features to the skip list code that was needed to
fully support all the features that the threaded, balanced binary tree code
has.
Also, updated the property list code to take advantage of a few of the
new features.
Platforms tested:
FreeBSD 4.10 (sleipnir)
Too minor to require h5committest
Purpose:
For debugging N-bit filter; it will not affect the library.
Description:
Adding N-bit tests, the library will not run those tests.
Solution:
Platforms tested:
heping(Linux 2.4), copper(AIX 5.1),arabica(sol 2.7)
Misc. update:
Description: Start to support software conversion between long double and
all integers.
Solution: No major changes to the algorithm. Changes to configure is to
exclude SGI for long double to integers test because there're too many problems
in their compiler.
Platforms tested: h5committest, modi4, fuss, Teragrid, arabica
Misc. update: RELEASE.txt
Code cleanup
Description:
Convert chunk iteration code to use skip lists instead of threaded, balanced
binary trees.
Platforms tested:
FreeBSD 4.10 (sleipnir) w/parallel & szip
Too minor to require h5committest
Bug fix
Description:
szip tests were failing due to a few "H5_SZIP_CAN_ENCODE" ifdefs still
lying around in the source code.
Solution:
Eliminate compile time testing by using new SZ_encoder_enabled() routine
at run time.
Platforms tested:
FreeBSD 4.10 (sleipnir) w/szip
Code cleanup (sorta)
Description:
Transition the generic property list code from using the threaded, balanced
binary tree code (H5TB<foo>() routines) to use skip lists (H5SL<foo>() routines)
for internal management of properties, etc.
Platforms tested:
FreeBSD 4.10 (sleipnir)
Too minor to require h5committest
Bug Fix/Code Cleanup/Doc Cleanup/Optimization/Branch Sync :-)
Description:
Generally speaking, this is the "signed->unsigned" change to selections.
However, in the process of merging code back, things got stickier and stickier
until I ended up doing a big "sync the two branches up" operation. So... I
brought back all the "infrastructure" fixes from the development branch to the
release branch (which I think were actually making some improvement in
performance) as well as fixed several bugs which had been fixed in one branch,
but not the other.
I've also tagged the repository before making this checkin with the label
"before_signed_unsigned_changes".
Platforms tested:
FreeBSD 4.10 (sleipnir) w/parallel & fphdf5
FreeBSD 4.10 (sleipnir) w/threadsafe
FreeBSD 4.10 (sleipnir) w/backward compatibility
Solaris 2.7 (arabica) w/"purify options"
Solaris 2.8 (sol) w/FORTRAN & C++
AIX 5.x (copper) w/parallel & FORTRAN
IRIX64 6.5 (modi4) w/FORTRAN
Linux 2.4 (heping) w/FORTRAN & C++
Misc. update:
Modify the cache code (H5C) to support automatic cache resizing to
adapt to the work load at run time.
Description:
Different applications require different sized caches to maintain
an acceptable hit rate. This set of changes attempts to provide the
ability to adjust to circumstances automatically.
Solution:
Added highly configurable code to allow the user to either set a
fixed cache size, or allow the cache to grow and shrink according to
conditions.
If enabled, cache size increases are triggered when the hit rate
drops below a user specified threshold in a user specified interval.
Cache size reductions (if enabled) are triggered when either the
hit rate exceeds some user specified threshold over a user specified
interval, when the cache contains "enough" entries that haven't been
accessed for a user specified interval, or some mix of the above.
See the header comments on the H5C_auto_size_ctl_t structure in
H5Cprivate.h for further details.
At present, the cache resize configuration options are not
accessible via the user API. Must add this.
Platforms tested:
h5committested, heping (serial), and copper (parallel)
Misc. update:
New feature
Description:
Add callback iteration routine to skip lists.
Platforms tested:
FreeBSD 4.10 (sleipnir) w/parallel
Too minor to require h5committest
Bug fix
Description:
Correct integer overflow situation for computing the size of a dataset.
Solution:
Rachet one of the dimensions down far enough that the total size of the
dataset's raw data doesn't overflow a 64-bit int.
Platforms tested:
FreeBSD 4.10 (sleipnir)
IRIX 6.? (tesla) w/-n32
Too minor to require h5committest
New feature
Description:
Allow skip list keys to be strings (needed for property list support)
Platforms tested:
FreeBSD 4.10 (sleipnir)
Too minor to require h5committest
New internal feature
Description:
Add a "release" routine to the skip lists, which releases all the nodes
in the skip list, but keeps the skip list active.
Platforms tested:
FreeBSD 4.10 (sleipnir)
Linux 2.4 (verbena)
Too minor to require h5committest
Code optimization
Description:
Retarget metadata cache code from using TBBT routines to using new skiplist
routines, for a reasonable speedup (when dealing with dirty metadata)
Platforms tested:
FreeBSD 4.10 (sleipnir) w/parallel
Solaris 2.7 (arabica)
Too minor to require h5committest
Add new internal data structure
Description:
Add an implementation of skip lists to the library (see comment in
src/H5SL.c for references to the papers describing them) as a potential
replacement for our current threaded, balanced binary tree container.
Skip lists are much simpler to implement and should be faster to use.
Also, added new error codes to release branch, so bump the minor version
number to indicate that the library is no longer perfectly compatible with
the 1.6.3 release.
Platforms tested:
FreeBSD 4.10 (sleipnir) w/parallel
Solaris 2.7 (arabica)
Too minor to require further testing (the skip lists aren't actually
used by any library code yet)
Cleanup & add test
Description:
Clean up test makefile a bit and add metadata cache test to 1.6 branch.
Platforms tested:
FreeBSD 4.10 (sleipnir)
Too minor to require h5committest
Purpose: Correction to previous bug fix. This checkin is mainly to let user
test his program.
Description: For family driver bug(#213), the previous fix was imperfect. The problem
was when user create family file, the member size information wasn't saved in file. When
the file was re-opened, the library simply use the size of 1st member file as member size.
Solution:
When file is re-opened, member size passed in from access property
is checked to see if it's reasonable. If there is only 1 member
file, member size can't be smaller than current member size.
If there are at least 2 member files, member size can only be equal
to the 1st member size.
Platforms tested: h5committest and fuss
Description: H5Pset_fapl_family sets family member size only for creating
new file. The file doesn't keep this size information. When the file is
re-opened, the size of first member file is used as the member size.
Solution: Assume user knows the original member size and sets it through
H5Pset_fapl_family. That will be the member size. User can pass in value 0
as member size if he doesn't know the original member size. Library will
choose the size of current first member size as the member file size.
Platforms tested: h5committest and fuss.
Bug fix, sorta.
Description:
Revert change to H5Pget_data_transform() which changed len of buffer
returned to be inconsistent with H5Iget_name(), etc. We should discuss this
change and apply it to all the similar functions if we decide to change the
return value.
Platforms tested:
FreeBSD 4.10 (sleipnir)
Too minor to require h5committest
Code clean-up
Description:
Rewrote code to make it simpler.
Added more data type tests
Solution:
Simplified code a lot in preparation for addition of new test cases.
Platforms tested:
heping + sol + copper
Code cleanup
Description:
Change loops for comparing results to use 2-D array lookups, since that's
what we've really got and the older 1-D array lookups was making the PGI C
compiler whine about array bounds issues.
Platforms tested:
Linux 2.4 (heping) w/PGI C
Not relevent to other platforms, no h5committest
Bug fix.
Description:
dtransform test still failed on windows because it was attempting to create a
ullong dataset.
Solution:
Removed creation of ullong dataset as well if H5_ULLONG_TO_FP_CAST_WORKS was
not defined.
Platforms tested:
windows
Bug fix.
Description:
unsigned long long test fails on windows because windows cannot convert from
ullong to double
Solution:
Skip unsigned long long test if H5_ULLONG_TO_FP_CAST_WORKS is not defined.
Platforms tested:
eirene and will do windows test asap.
Added tests
Code cleanup
Description:
New tests added for new version of H5Pget_data_transform and additional tests
to make sure that error conditions are handled properly by both
H5Pset_data_transform and H5Pget_data_transform.
Also cleaned up code to make it more compact.
Platforms tested:
sol + eirene + copper
Misc. update:
Code cleanup
Description:
Clean up minor warnings and align with release branch.
Platforms tested:
FreeBSD 4.10 (sleipnir) w/parallel & FPH5
Solaris 2.7 (arabica) w/production mode
Linux 2.4 (heping) w/C++ and FORTRAN
"Improvement"?
Description:
Long double is a standard C89 type. Promoted it from
a conditional tested type to an assumed supported type.
Platforms tested:
H5committested.
Misc. update:
Description: "char" was considered as always "signed char" in data type conversion. However, ISO C leaves
the definition of "char" to individual implementation. i.e. for IBM AIX C compiler, it's treated as "unsigned
char".
Solution: Changed all "char" to "signed char". Don't even do "char" anymore because its definition is up
to each vendor.
Platforms tested: h5committest
Add code more code to test H5Pget_data_transform and H5Pset_data_transform
Description:
Added a test to verify that H5Pset_data_transform will correctly replace a
data transform with a new one and properly use the new transform on the data.
Added a test to verify that H5Pget_data_transform properly returns the
transform string.
Platforms tested:
sol + eirene + copper
Misc. update: