Bug fix (feature, kind of)
Description:
The library used to hang if a collective dataset read/write request
does not have the same number of eventual MPIO request. Part of the
reason is that H5FD_read/H5FD_write immediately returns succeess
if it sees the request size is 0. This caused problem since other
processes with I/O to do would be hanging by waiting for the early
returned process(es).
Solution:
H5FD.c: disable the early return code in parallel mode. Make it
go on even with "nothing" to transfer.
H5D.c: the optimized MPIO xfer routines can handle collect calls correctly
when the condition is right (e.g., no conversion). When the COLLECTIVE
request cannot be handled correctly without the risk of hanging, the
COLLECTIVE is changed to INDEPENDENT calls for the eventual MPIO
calls.
Platforms tested:
IRIX64 parallel (-64, n32), IRIX64 -64 sequential, Linux sequential.
Small code optimization
Description:
Statistics on the amount of times a datatype conversion required alignment
were being kept in all case, even though they are only used when H5T_DEBUG
is turned on.
Solution:
Build some extra macros so that the statistics are only kept when the
H5T_DEBUG macro is defined.
Platforms tested:
Solaris 2.6 (baldric)
Bug fix
Description:
Previous re-arrangement of FUNC_ENTER macro was a _little_ too agressive
about not re-checking for library or interface re-initialization. Although
it happens very rarely that the library is shut down and then re-started
the library & interface initialization functions weren't getting run in
that case.
Solution:
Separated out the library, interface & function checks again. This version
is still a little faster than the previous way things were being done.
Platforms tested:
FreeBSD 4.1.1 (hawkwind)
Code optimization
Description:
Re-vamped FUNC_ENTER macro to remove as many of the if's as possible and
also to only check once if any given function is an API function.
This improves the performance of the hyperslab I/O benchmark (h5hypers)
that I've been testing with by another 5%. All library functions should
be 5-15% faster, depending on how many times they are called and what
percentage of the function's time was spent in the FUNC_ENTER macro vs.
the percentage of time in the main body of the function.
Platforms tested:
Solaris 2.6 (baldric)
Bug fix
Description:
When performing I/O on the entire dataset for datasets with the maximum
number of dimensions, H5S_MAX_RANK, (32 currently), the dimension
information was getting corrupted internally and causing no data to be
actually written to the file.
Solution:
Changed the internal array sizes from H5S_MAX_RANK to H5O_LAYOUT_NDIMS,
which is one element larger to accomodate the size of the elements
themselves.
Platforms tested:
Solaris 2.7 (arabica)
Bug fix
Description:
The optimized MPIO code was not working with the TFLOPS machine.
It kept reporting "can't convert from size to size_i" errors in
H5FD_mpio_write() and H5FD_mpio_read().
Solution:
The error was actually in H5S_mpio_spaces_xfer() in H5Smpio.c
in which the variable mpi_count was declared as size_t (only
4 bytes big in TFLOPS) when it should be hsize_t (8 bytes big in TFLOPS).
Corrected and also changed to use the (hsize_t) to case size_i in
H5FD_mpio_write() and H5FD_mpio_read() since that is what it should
be.
Platforms tested:
TFLOPS and modi4 (-64, parallel)
Buglet fix
Description:
Get rid of compiler warnings. The HGOTO_RETURN was returning NULL
when it should have returned FAIL.
Solution:
Swapped the two.
Platforms tested:
Linux
Bug fix and code checkpoint
Description:
HP's compilers didn't seem to like comparing function pointers with '<'
& '>', so I've changed how the function pointers are compared to aviod
those operations. This should fix last night's daily test failures on
opus and sangamon.
Also, more code development for generic property lists.
Platforms tested:
FreeBSD 4.1.1 (hawkwind)
Bug fix.
Description:
Generic property list code wasn't getting initialized early enough to get
the proper values into the macro/constants.
Solution:
Call H5P_init() from H5_init_library().
Platforms tested:
FreeBSD 4.1.1 (hawkwind)
Redo of a patch
Description:
As Quincey pointed out, the parameters are only ``UNUSED'' if we
can't find libz.a.
Solution:
I changed it to conditionally put the UNUSED in there...
Platforms tested:
Linux
Backward compatibility additions
Description:
Created HDF5 v1.2 compatibility API functions (H5Tget_member_dims &
H5Tinsert_array) which use the newer array datatypes underneath, but should
ease user's transition to the 1.4 version of the library.
Platforms tested:
FreeBSD 4.1.1 (hawkwind)
API cleanup
Description:
Tweaked some parts of the generic properties API to reduce warnings.
Platforms tested:
FreeBSD 4.1.1 (hawkwind) & SGI O2K (modi4)
Code updates
Description:
Finished fleshing out code for generic properties, although they are not
used anywhere in the library yet.
Platforms tested:
FreeBSD 4.1.1 (hawkwind)
Bug fix
Description:
"old-style" compound datatypes with array fields were leaking memory
during the datatype header decoding when creating the array datatype for
a field.
Solution:
Free the base type of the array after creating array datatype for field.
Platforms tested:
Solaris 2.6 (baldric)
Bug Fix
Description:
Generic property lists were leaking memory.
Solution:
Tied them into the regular cleanup code called at the library's termination
Platforms tested:
Solaris 2.6 (baldric) & FreeBSD 4.1.1 (hawkwind)
Bug fix.
Description:
Dimension permutations for array datatypes were being skipped over when
datatype information was read from the file (because they aren't used
anywhere in the library currently), but this could cause problems in the
future when they are used for something.
Solution:
Read them in anyway, even if we aren't using them yet.
Platforms tested:
FreeBSD 4.1.1 (hawkwind)
Bug fix.
Description:
When writing data and the dataset needed to be extended, the write call
ended up using the old dataspace extents (prior to the dataspace extend)
and bad parameters would get into the I/O channel, eventually causing it
to dump core.
Solution:
Every time a dataset is extended, throw away the previous dataspace
information and re-retrieve it.
Platforms tested:
FreeBSD 4.1.1 (hawkwind)
* 2000-11-10 Robb Matzke <matzke@llnl.gov>
Changed `class' to `cls' in various places
since the former is a C++ reserved word and some C compilers (like
the one on blue) complain.
* 2000-11-10 Robb Matzke <matzke@llnl.gov> (H5FD_close)
Removed code that resets the H5FD_t
file structure to zero because that struct has already been
freed. This fixes a core dump on some platforms.
Added new function.
Description:
It's often convenient to query the class of a compound datatype's member
to determine if it's an array and the previous way required you to open
the member type to query it's class.
Solution:
Added new H5Tget_member_class function to directly ask for the member type's
class.
Platforms tested:
FreeBSD 4.1.1 (hawkwind)
New Feature
Description:
Added array datatype to library. See documentation at:
http://hdf.ncsa.uiuc.edu/HDF5/planning/DP/ArrayType.html
for complete details on the impact to the library.
Solution:
Changes to the base library include removing the ability of compound
datatype fields to be an array (they can use an array type for the field,
to duplicate the functionality) and adding in the new array datatype
everywhere appropriate. (I hope :-)
Platforms tested:
FreeBSD 4.1.1 (hawkwind)
Purpose:
Bugfix
Description:
Rename the [H5_]HAVE_STRUCT_SOCKLEN_T into [H5_]HAVE_SOCKLEN_T.
Solution:
As pointed out by Bill the socklen_t type isn't a structure if
is it defined by the system headers.
So we should better take out the _STRUCT_ from the defines.
Platforms tested:
Purpose:
Bugfix
Description:
The socklen_t was hardcoded to be defined as int on architectures
other than Linux and SUN (Solaris).
Now it turned out that Solaris isn't consistent in this manner.
Versions earlier than 2.7 do not define this type.
Solution:
Check at configure time whether the socklen_t type is defined
by the system header includes. If not than this type is defined
to be 'int'.
Platforms tested:
Solaris 2.6 and 2.7
Linux
IRIX64
Windows NT (command line configure with both cl abd gcc)
Purpose:
Bugfix
Description:
Added defines for HAVE_SYS_TYPES_H, HAVE_SYS_SOCKET_H, and HAVE_STRUCT_SOCKLENT_T.
Platforms tested:
Solaris 2.6 and 2.7
IRIX64
Linux
Windows NT (command line configure with gcc and cl)
Purpose:
Bug fix.
Description:
The names of some entries did not correspond with the names in the
FUNC_ENTER macro. This would cause inaccuracies during Pablo tracing.
Solution:
The names were changed in FUNC_ENTER to agree with the entry names.
Platforms tested:
Solaris, Irix, AIX, HP Vclass
Purpose:
Fix typos in these files.
Description:
In the functions H5Pset_apl_xxx in these files, the parameters of
FUNC_ENTER do not match the function names. So changed them back
to function names.
Solution:
[details about the changes, algorithm, etc...]
[Please as detail as you can since your own explanation is
better than others guessing it from the code.]
Platforms tested:
No test has been done because these are all typos, no effect on
program.