Bug fix (sorta)
Description:
The SGI machines have problems accurately (and consistently) converting
unsigned long values to float and double values, so put in a bit of a hack in
the datatype conversion test code to allow them to get "close enough". This
hack is enabled at configure time by a flag which should only be set on machines
with this problem.
Platforms tested:
FreeBSD 4.9 (sleipnir)
h5committest
Undo the mysterous changes.
Description:
Somehow something changed this file during snapshot release.
Undo the change.
Platforms tested:
No test since it is a simple editing.
Misc. update:
Code optimization
Description:
Instead of dynamicly allocating various arrays for various pieces of
information about a selection or selection iterator, just use fixed size
array of size H5S_MAX_RANK (as the rest of the library does).
Platforms tested:
Solaris 2.7 (arabica)
FreeBSD 4.9 (sleipnir)
h5committest
Code optimization
Description:
Make calculation of "all" selection sequence length information more
efficient.
Platforms tested:
Solaris 2.7 (arabica)
FreeBSD 4.9 (sleipnir)
h5comittest
Code optimization
Description:
Avoid clearing the error stack unless necessary.
Platforms tested:
Solaris 2.7 (arabica)
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Checkpoint checkin of FP bug fixes. FP is still quite
buggy, but I must go deal with other matters.
Description:
Fixed two major bugs:
1) H5FPserver.c was clobbering meta data in its care.
2) H5FPserver.c was allocating the same space multiple
times, causing both data and meta data corruption.
Also made minor fixes, added debugging code, and familiarized
myself with the FP code.
All development work with FP enabled was done on Eirene.
On this platform, FP now passes its test reliably with
up to 9 processes. At 10 processes it seg faults every
time. I haven't looked into this issue.
There are also several known locking bugs which have to
be fixed. However, they are of sufficiently low probability
that I didn't bother with them on this pass.
FP has not been tested with deletions -- this should be
done.
Also, need to test FP chunked I/O.
Solution:
1) Modified cache in H5FPserver.c to merge changes correctly.
Found and fixed a bug in H5TB.c in passing.
2) Multiple space allocation was caused by a race condition
with set eoa requests.
Most of these eoa requests appeared to be superfluous, so
I deleted them.
Those issued during the superblock read seemed necessary,
so I inserted a barrier at the end of the superblock read,
to prevent races with allocations.
Platforms tested:
h5committested
Description:
Fixed bug in H5TB_less(). It was returning the next largest node,
instead of the next smallest as advertised.
Added comments warning that H5TB_rem()s will occasionally delete a
node other than the one provided in its argument list.
Solution:
It was sufficient t invert two comparisons in H5TB_less().
Platforms tested:
h5committested
Code cleanup
Description:
Clean up lots of warnings based on those reported from the SGI compilers
as well as gcc.
Platforms tested:
SGI O3900, IRIX64 6.5 (Cheryl's SGI machine)
FreeBSD 4.9 (sleipnir) w/ & w/o parallel
h5committest
Code cleanup
Description:
Update null dataspace changes to try to write older version of dataspace
information whenever possible.
Refactor common code to only one location.
Allow I/O operations to succeed on null dataspaces.
Platforms tested:
FreeBSD 4.9 (sleipnir)
h5committest
Code optimization
Description:
Instead of re-initializing the default stride & block arrays to have values
of '1' in each position each time we perform a hyperslab selection, create
static constant arrays with '1's in them.
Platforms tested:
Solaris 2.7 (arabica)
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Code optimization
Description:
Don't copy hyperslab span information as much.
Platforms tested:
Solaris 2.7 (arabica)
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Bug fix.
Description:
Not all machines (like Sun and AIX) support fabsl() and fabsf() used
in test/dtypes.c. Changed the coding to use macro names HDfabsl and
HDfabsf. Also set the two macros to use ABS for now so that they will
work for all machines. (need more portable fixes which would involve
configure.)
Platforms tested:
h5committested. (also tested in LANL QSC and Theta).
Code optimization
Description:
Compute value for array instead of using memset(), since we are looping
through the array indices anyway.
Platforms tested:
Solaris 2.7 (arabica)
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Code optimization
Description:
Eliminate memset() calls to clear structures that we completely initialize
Platforms tested:
Solaris 2.7 (arabica)
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Code optimization
Description:
Remove redundant function call by re-using value we already know.
Platforms tested:
Solaris 2.7 (arabica)
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
feature
Description:
H5check_version will print warning messages if the version does not
match or if the lib version string is not consistent, even when
$HDF5_DISABLE_VERSION_CHECK is set to 1. This will mess up
tests that try to match output.
Changed it so that if $HDF5_DISABLE_VERSION_CHECK is set to 2, no
warning about version mismatch is printed.
The lib version string warning is suppressed if $HDF5_DISABLE_VERSION_CHECK
is set to any non-zero value.
Platforms tested:
Tested in sol only but pretty comprehensive to make the warnings do get
suppressed.
Misc. update:
Description: Add more tests for bittests.c to check bit operations like H5S_bit_shift,
H5S_bit_inc, H5S_bit_dec, H5S_bit_neg.
Platforms tested: h5committest
Code optimization
Description:
Eliminate memory allocations for I/O vectors when using the default
vector size.
Platforms tested:
Solaris 2.7 (arabica)
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Code optimization
Description:
Remove another dataspace copy, in certain circumstances.
Platforms tested:
Solaris 2.7 (arabica)
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Code optimization
Description:
Remove a memcpy() from a commonly called routine and replace a multiplication
with a series of additions.
Platforms tested:
Solaris 2.7 (arabica)
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Code optimization
Description:
Avoid another extraneous dataspace copy.
Platforms tested:
Solaris 2.7 (arabica)
FreeBSD 4.9 (sleipnir) w/parallel
too minor to require h5committest
Code optimization
Description:
Change algorithm to directly use coordinates describing a chunk's position
in a dataspace instead of creating a dataspace with the chunk's position
selected. This reduces the number of copies of dataspaces we need to keep
around.
Platforms tested:
Solaris 2.7 (arabica)
FreeBSD 4.9 (sleipnir) w/parallel
too minor to require h5committest
Description: Mainly are header message changes for dataspace. In last round
of check-in, a new header message for dataspace to created, which is not a good
way. Now, there will be no new message for dataspace, but just add the type of
dataspace in the message while increment its version number. Backward compatibility
is addressed. The attribute design is modified accordingly.
Platforms tested: h5committest
Code optimization
Description:
Check for only performing I/O on a single chunk and re-use memory dataspace,
instead of re-creating the same dataspace & selection the hard way.
Platforms tested:
Solaris 2.7 (arabica)
FreeBSD 4.9 (sleipnir) w/parallel
too minor to require h5committest
Code optimization
Description:
Eliminate more dataspace copying, etc.
Platforms tested:
Solaris 2.7 (arabica)
FreeBSD 4.9 (sleipnir) w/parallel
too minor to require h5committest
Code optimization
Description:
Reduce the number of dataspace copies made when performing I/O on chunked
datasets.
Platforms tested:
Solaris 2.7 (arabica)
too minor to require h5committest
Description: NULL dataspace. This step is mainly for dataspace header
message and a test.
Solution: The test mainly checks NULL dataspace features. Backward compatibility
is tested in the fill value test.
Platforms tested: h5committest
Code optimization
Description:
Eliminate unnecessary allocation and point at existing data structure
instead.
Platforms tested:
Solaris 2.7 (arabica)
too minor to require h5committest
Code optimization
Description:
Fix H5S_select_hyperslab to use arrays on the stack instead of dynamically
allocating them each time.
Platforms tested:
Solaris 2.7 (arabica)
too small to require h5committest
Code optimization
Description:
Fix H5S_select_copy so it doesn't call calloc() for allocating memory that
will be immediately overwritten.
Platforms tested:
Solaris 2.7 (arabica)
too small to require h5committest
Code optimization
Description:
Minor tweaks on the optimized offset/length sequence generator to improve
performance by reducing the number of 64-bit multiplies and calls to memcpy().
Platforms tested:
Solaris 2.7 (arabica)
too minor to require h5committest
Code optimization
Description:
Compute the size of a chunk once, when the layout information is set,
instead of each time I/O is performed on the chunk.
Platforms tested:
h5committest
Solaris 2.7 (arabica)
Code optimization
Description:
Move handling for free list arrays that have no maximum size to separate
set of routines and optimize computations for free list arrays with maximum
size to avoid re-computing sizes all the time.
Platforms tested:
h5committest
Solaris 2.7 (arabica)
Bug fix/code cleanup
Description:
Copy Robb's feature in SSlib that checks that the name of the function
used in the FUNC_ENTER macro is actually the name of function.
Fixed a bunch of typos & copy-n-pasto's for functions with incorrect names.
Platforms tested:
FreeBSD 4.9 (sleipnir) w/parallel
too minor to require h5committest
bug fix.
Description:
H5FD_mpio_init was calling the public API version of H5Iget_type()
which would clear the error stack, thus cleared away error messages
prematurely.
Solution:
Changed it to call the private version of H5I_get_type() which
does not clear the error stack.
Platforms tested:
o2 (SGI) parallel.
Description: The algorithm of H5T_bit_neg wasn't general enough.
Solution: Changed it to handle arbitory starting position and size
in a bit sequence.
Platforms tested: h5committest.
Description: The H5T_bit_dec algorithm wasn't general enough.
Solution: Changed it to handle bit sequence starting at any position
and of any length.
Platforms tested: h5committest
bug fix
Description:
the fletcher filter used a temporary 2 byte word buffer to compute the checksum.
this is non portable between big-endian/little endian.
Solution:
replaced with a buffer of 1 byte type
Platforms tested:
linux
solaris
solaris 64 bit
AIX
windows
Misc. update:
Description: C++ comment was used. That caused a problem for a user (see
bug description)
Solution: Changed comment to C type
Platforms tested: eirene
Misc. update:
bug fix in H5Zshuffle.c
add more tests to h5repack that exposed the bug
Description:
when creating a dataset with the shuffle filter and duplicating it in a new dataset (file)
the call to H5Z_set_local_shuffle failed. this is because the value of cd_nelmts of the filter
structure is set to 1 (H5Z_SHUFFLE_TOTAL_NPARMS) when the original dataset is created, but when
the new dataset is created there is a checking instruction that fails if the value of
cd_nelmts is not 0 (its original value, H5Z_SHUFFLE_USER_NPARMS)
Solution:
just remove that check condition, since the value of cd_nelmts is not used anyway.
if we decide that the value of cd_nelmts is necessary, then the H5O_pline_copy function
must be changed to update this value (a different update for each filter)
Platforms tested:
linux
solaris
AIX
Misc. update:
Bug fix.
Description:
The -g in H5detect somehow does not work with 64bit mpicc in arabica.
Remove it for now for better solution.
Platforms tested:
no test as the change is trivia.
Misc. update:
Bug fix, sort of.
Description:
Some compilers, e.g., intel compiler, would take a long time
to compiler H5detect.c if optimization is on.
Solution:
Setup special make rules for H5detect to be compiled always with
optimization off by using -g. Since H5detect is run once to generate H5Tinit.c,
it does not matter that much if it is optimized or not.
Platforms tested:
"h5committested".
Tested in Titan too.
Code cleanup/optimization
Description:
Query property list values once, at the beginning of the I/O routines,
instead of querying the property list values multiple (lots!) of times in
lower level routines.
Solution:
Create "property list caches" for internal library queries of the property
list values.
Platforms tested:
IBM p690 (copper) w/parallel & fphdf5
h5committest
Code cleanup/optimization
Description:
Hoist property list queries up out of inner loops to cache the values at
a higher level and pass them into the lower-level routines.
Platforms tested:
IBM p690 (copper) w/parallel & fphdf5
h5committest
Code cleanup
Description:
Minor tweaks, cleanups & optimizations to new bit operation routines.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Purpose:
replaced name of delete filter with remove filter for the new function H5Premove_filter
Description:
Solution:
Platforms tested:
linux
Misc. update:
Bug fix.
Description:
Revert the optimization to the MPI-I/O VFD from earlier this week that
eliminated calling MPI_File_set_size() when a file was truncated. This doesn't
work because of the way we track the 'eoa' (end of allocated space) in the
file: we just advance the eoa value when space is allocated in the file and we
don't zero out the space in the file. This causes a problem where we assume
that all "newly allocated" space in the file contains zero bytes, but if we
don't call MPI_File_set_size(), the file can contain the previous data (if the
file previously existed) and not zeros.
Unfortunately, because we allow independent raw data parallel I/O, there
is no way to address this issue. :-(
Solution:
Revert to previous method of retrieving the file's size, etc. from before
the optimization.
Platforms tested:
FreeBSD 4.9 (sleipnir) w/parallel
too minor to require h5committest.
Fix build with C++ compiler
Description:
Add file driver header files for prototypes.
Platforms tested:
FreeBSD 4.9 (sleipnir) w/CC=g++
too obscure to require h5committest
Bug fix
Description:
Move assertion to allow closing non-HDF5 files with the MPI-I/O VFD to
work correctly again.
Platforms tested:
FreeBSD 4.9 (sleipnir)
h5committest
Bug fix.
Description:
Allow H5Tget_native_type() to handle opaque fields in compound datatypes.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Optimization
Description:
Speed up various parts of the library by setting a global variable for the
endianness of the machine at library startup and use that variable instead of
repeatedly querying the endianness of the native int datatype.
Platforms tested:
IBM p690 (copper)
too minor to require h5committest
Optimization
Description:
Speed up core ID lookup routine (H5I_find_id) by re-structuring the logic
to reduce the number of 'if' statements.
Platforms tested:
IBM p690 (copper)
too minor to require h5committest
Code cleanup
Description:
Add destructor to match constructor fr VFLs when they are shut down by the
library.
Solution:
Added H5FD_*_term() routines to "undo" changes made in H5FD_*_init()
routines.
Platforms tested:
IBM p690 (copper)
too minor to require h5committest
Bug fix
Description:
Address the failure in the FORTRAN builds by making some more of the
MPI-related typedefs in the library available outside of parallel builds.
Platforms tested:
Linux 2.4 (verbena) w/FORTRAN & C++
Bug fix
Description:
Include the private H5FD header instead of the public one, to address a
failure in building the library with C++ compiler.
Platforms tested:
FreeBSD 4.9 (sleipnit) w/CC=g++
not appropriate for h5committest
Bug fix
Description:
Fix a couple of bugaboos in the serial build that crept in
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Bug fix/optimization
Description:
Address slowdown in MPI-I/O file metadata operations that was introduced
mid-stream. We now _require_ a POSIX compliant parallel file system for the
MPI-I/O file driver (as well as for the MPI-POSIX file driver).
Also optimized file open operation when the file is being created by
reducing the number of collective & syncronizing calls.
Additionally, refactor the MPI routines into a common place, eliminating
duplicated code.
Platforms tested:
FreeBSD 4.9 (sleipnir) w/parallel
h5committest
Code cleanup
Description:
Add C++ and FORTRAN wrappers for new H5Pdelete_filter routine, along with
documentation and a note in the release notes.
Platforms tested:
FreeBSD 4.9 (sleipnir)
Linux 2.4 (verbena) w/ C++ and FORTRAN
Too minor for full h5committest
new library function H5Pdelete_filter
deletes one or all filters from a dataset creation property list
this was done for the NONE option of h5repack, added tests for this feature
added a test for the new function in /test/dsets.c
Description:
Solution:
Platforms tested:
linux
solaris
AIX
Misc. update:
Bug fix
Description:
Tweak address comparison of external file list's heap address a bit to
pacify Windows.
Platforms tested:
FreeBSD 4.9 (sleipnir)
Asking Pedro to test on Windows
Too minor to require h5committest
Add tests & docs
Description:
Added tests for the recent B-tree bug fixes & document their fix in the
release notes.
Platforms tested:
FreeBSD 4.9 (sleipnir)
Too minor to require h5committest
Bug fix.
Description:
Fix problems in B-tree deletion routine that were corrupting the data
structure when the B-tree had several levels and the right-most item from a
leaf node that was the right-most child of an internal node was removed.
Also address similar problems when a complete internal or right-most node
was removed.
NOTE: The B-tree deletion routines are still _NOT_ maintaining the B-tree
properties correctly, that will be addressed in a future (hopefully soon) fix.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too obscure to require h5committest
Bug fix
Description:
Correct two problems with variable-length datatypes in datasets:
- When overwriting an entire dataset, writing the fill value to the
file would be skipped, causing problems for VL datatypes when
objects in the file had been unlinked (and thus the space in the
file was not all zeros)
- When an application has set a fill-value for a dataset and the
dataset's datatype contained a VL datatype, the library was filling
space on disk with the memory form of the VL information, instead
of the disk form.
Platforms tested:
FreeBSD 4.9 (sleipnir)
h5committest
Code cleanup & reorganization
Description:
Move further in the testing framework cleanup, eliminating all the
global variables (moving them into testframe.c as static variables) from the
testing framework code and moving it into the libh5test.a.
Platforms tested:
FreeBSD 4.9 (sleipnir) w & w/o thread-safety, c++ & parallel
h5committested
Bug fix
Description:
When two property lists are compared, the H5Pequal routine was just
comparing the raw information for the property values. This causes problems
when the raw information contains pointers to other information.
Solution:
Allow a 'compare' callback to be registered for properties, so that a user
application get perform the comparison itself, allowing for "deep" compares of
the property value.
This was exported to the H5Pregister & H5Pinsert routines in the development
branch, but not the release branch.
Platforms tested:
FreeBSD 4.9 (sleipnir)
h5committest
Bug fix
Description:
Fix small memory leak of fill-value information inside the library.
Solution:
"reset" the fill-value object header message, so that the internal buffer
gets freed.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Bug fix
Description:
Add special-case handling to floating-point conversion tests to avoid
problems with denormalized values on Cray T3E & T90 platforms. (Still not
working on Cray SV1, but at least it's closer).
Solution:
Detect denormalized values and don't try to operate on them on the Crays.
Platforms tested:
FreeBSD 4.9 (sleipnir)
Cray T3E (hubble.cray.com)
Cray T90 (gypsy.cray.com)
Bug fix
Description:
Range check the szip 'pixels per block' against the chunk size of the
dataset when attempting to create a new dataset, since the szip library
requires the PPB to be at least the size of the fastest changing dimension
in the chunk.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor for h5committest
Bug fix
Description:
Fixed bug in hyperslab iteration where certain combinations of flattened
and non-flattened dimensions would cause incorrect locations to be iterated
over.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Code cleanup, bug fixes
Description:
Wrap up rest of changes necessary for fixing the "short" MPI-I/O read
problem that Robb reported.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Bug fixes & code cleanup
Description:
Back out some of the debugging that was inadvertently checked in recently.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Bug fix
Description:
MPIO driver did not detect partial read or write. It assumed if read
completed, all bytes requested are read. Therefore, if a dataset was
not completely written yet, the unread part will not be filled with
default fill value.
Solution:
Added the MPI_Get_elements call to find exactly how many bytes
are read (or written). For read case, if not enough is read,
the rest is padded with zeros. For write case, it is an error
if not able to write them all in first attempt. (It is not
always possible to repeat write for MPIO since file-view may
be changed, collective would hang, etc. So, we do just one attempt.)
Platforms tested:
eirene (pp). Should work for other platforms since these
have been tested in v1.6.
Misc. update:
Code cleanup for VS.NET
Description:
Clean up several issues that VS.NET was having problems with.
Platforms tested:
Eyeballed against Kent's bug reports.
Bug fix
Description:
Attributes which were created with scalar dataspaces were reporting their
dataspace as a simple dataspace when queried later.
Solution:
Fix the dataspace handling code when reading in the attribute message from
the file to set the extent type correctly.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Bug fix.
Description:
Using a selection offset with hyperslab selections in chunked datasets
was getting into an infinite loop and hanging the application.
Solution:
Apply the selection offset to the hyperslab selection properly.
Platforms tested:
FreeBSD 4.9 (sleipnir) w & w/o parallel
h5committest
Bug fix/code cleanup
Description:
Make H5Pclose_class() decrement the ID's reference count to close a generic
property class ID, which allows the new H5I routines to work correctly.
Platforms tested:
FreeBSD 4.9 (sleipnir)
h5committest
Code cleanup
Description:
Fix H5MM_malloc() and H5MM_calloc() routines to use new FUNC_ENTER macros.
Platforms tested:
FreeBSD 4.9 (sleipnir)
h5committest
Bug fix
Description:
Clean up a few allocations of zero-sized blocks that were detected with
the new free-list assertions.
Platforms tested:
FreeBSD 4.9 (sleipnir) w & w/o parallel
too minor to require h5committest
Code cleanup
Description:
Add more assertions to detect attempted allocations of zero-sized blocks.
Platforms tested:
FreeBSD 4.9 (sleipnir) w & w/o parallel
too minor to require h5committest
Code cleanup
Description:
Clean up compiler warnings, especially the 'FUNC' variable not used which
comes out in production mode.
Solution:
Had to add a new FUNC_ENTER_NOAPI_NOINIT_NOFUNC macro for those non-API
functions which don't need the 'FUNC' variable defined. (This will be _so_
much easier when C99 is standard on all our supposed platforms, since it has a
__FUNC__ macro... )
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor for h5committest (although there were lots of files changed, the
change was minor in each one)
Bug fix
Description:
Make a copy of the index value for H5Giterate and use that instead of
dereferencing the index pointer.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to need h5committest
Omnibus floating-point bug fix changes
Description:
There are a number of problems in the floating-point conversion code that
were exposed by Ray's recent int<->float checkin:
- The 'my_isnan' code in test/dtypes.c was broken and would always return
true. The meant that the actual values in the float<->float conversion
tests were _never_ checked, hiding the other bugs included in this
checkin.
- A recent change I made to the type conversion code used "FLT_MIN" instead
of "-FLT_MAX" for the most negative 'float' value for the double->float
conversion, which meant that any the negative number that was converted
from a double to a float would have been mapped to zero, essentially.
- A change that Robb appeared to have made ~2.5 years ago to the "generic"
float->float conversion routine appears to be incorrect and I've backed
it out.
- Floating-point conversions on SGI's which converted denormalized values
would be mapped to zero instead of being propertly preserved in the new
type. This was addressed by an SGI-specific system call to prevent the
behavior.
Solution:
Described above, generally.
Platforms tested:
FreeBSD 4.9 (sleipnir)
h5committest
Misc. update:
release_docs/RELEASE update forthcoming...
Code cleanup
Description:
Remove an unused typedef, fix a LONG->LLONG typo and use LLONG_MIN where
appropriate.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Code cleanup
Description:
Make some functions static and remove unused variables, etc.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Description: data type conversion between integers and float numbers.
(Cover your ears. It's going to explode.:)
Solution: covers all native type conversion. Mainly uses hardware
conversion but handles overflow more gracefully.
Platforms tested: h5committest
Bug fix
Description:
Our previous "optimization" of metadata writing which only wrote metadata
from one process was abusing MPI-I/O and after some consultation with Rob Ross
and Rajeev Thakur, Albert & I have come up with a solution...
Solution:
Instead of only writing from one process, issue a collective write
operation with all processes, for metadata writes.
Platforms tested:
FreeBSD 4.9 (sleipnir)
h5committest
Bug Fix
Description:
The SAP was sending back replies to the client but the client wasn't
picking them up (this was after a dump from the server.
Solution:
Read the extra replies from the server.
Platforms tested:
AIX (w/ FPHDF5)
Linux (w/ FPHDF5)
Solaris (w/ Fortran & C++)
Misc. update:
Bug fix.
Description:
The new routines added for H5MM_[m|c]alloc were causing the function
stack code to infinitely recurse while allocating room for the thread-specific
information (when thread-safety was turned on).
Solution:
Call HDmalloc directly instead of H5MM_malloc
Platforms tested:
FreeBSD 4.9 (sleipnir)
Changed are not tested in h5committest
Bug fix
Description:
Variable length strings and sequences with NULL pointers were not handled
by library, causing problems access the data. This also affected fill values
for variable-length datatypes.
Solution:
Address the issues in the library by detecting NULL sequences/strings
and avoid trying to convert them.
Patched up dumper to display NULL sequences/strings.
Platforms tested:
FreeBSD 4.9 (sleipnir)
h5committest
Bug fix and File Addition
Description:
- Fixed when reading from the file with FPHDF5. It wasn't recording
how many bytes it read.
- Added Arithmetic Transformation modules. These haven't been
included into the HDF5 build. I just added them here for future
porposes...
Solution:
Added a call to "MPI_Get_count" to get the number of bytes read.
Platforms tested:
Linux (w/ FPHDF5)
AIX (w/ and w/o FPHDF5)
FPHDF5-specific fixes...No need for H5committest
Misc. update:
Bug fix & code cleanup
Description:
Allowing the library to call malloc with a size of 0 bytes causes problems
for some users, so we check for allocations of 0 bytes and disallow them now.
Cleaned up some code which could call malloc with 0 size.
Changed some code calling HDmalloc directly to call H5MM_malloc(), which
allows us to check for 0 sized allocations.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Bug fix
Description:
Make --disable-hsizet work properly again by fixing a couple of tests and
correcting the definition of SSIZET_MAX.
Platforms tested:
FreeBSD 4.9 (sleipnir)
h5committest not used, as it doesn't test this configuration.
Code cleanup
Description:
Cleanup compiler warning by breaking apart the cast checking.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to need h5committest
Code optimization
Description:
Improved integer & floating-point datatype conversions by removing some
corner cases. Got rid of algorithm which walked the buffer of elements to
convert backwards, switching to algorithm which computes the non-overlapping
space in the buffer and repeatedly converts it in the forward direction.
Platforms tested:
FreeBSD 4.9 (sleipnir)
h5committest
Cray SV1 & T3E (T90 is not accessible)
Bug fix
Description:
Don't check the number of szip parameters set during the "can apply" and
"set local" callbacks, be safe about setting the parameters instead.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Warning cleanup
Description:
Make a parameter 'const' to clean up a warning during compiles.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Bug Fix
Description:
The End of Address information needed to be kept by the SAP. Some
processes were trying to get the EOA information in collective mode,
but the action wasn't collective at the time.
Solution:
Keep the EOA information for the file on the SAP. Clients query the
SAP to get/set it when needed.
Platforms tested:
Linux (w/ FPHDF5)
Copper (w/o FPHDF5)
(FPHDF5 specific, so no need for full testing)
Misc. update:
Minor code cleanup
Description:
Fixed up comments, made the H5I_get_file_id() routine static, removed
H5Gprivate from including itself...
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Bug fix
Description:
MPE color for new routine H5Iget_file_id is missing.
Solution:
Added it.
Platforms tested:
Only tested in copper since it is the only one that can do MPE.
Misc. update:
Code cleanup & simplification
Description:
Replace [non-working] code in routine to build up an MPI derived type for
a hyperslab selection that was supposed to "flatten" out contigous blocks with
code that uses a selection iterator (which _does_ have working "flattening"
code).
Remove "contiguous hyperslab" code for MPI selections as it is unnessary
now.
Platforms tested:
FreeBSD 4.9 (sleipnir) w & w/o parallel
Linux 2.4 (verbena) w/FORTRAN & C++
Solaris 2.7 (arabica) w/64-bit
Bug fix & code cleanups
Description:
Change our use of MPI derived datatypes to not create datatypes with
"0-sized" lengths, which causes the LANL Q machine to hang.
Also, get rid of "prefer MPI derived datatypes" environment variable since
it has no advantage.
Platforms tested:
FreeBSD 4.9 (sleipnir) w & w/o parallel
h5committest
Code cleanup & add a feature
Description:
Added support for querying the file ID of named datatypes to new
H5Iget_file_id function.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Code cleanup
Description:
Untwist the last few sections of code before starting on fixing the
problems with reading off the end of the file in earnest.
Platforms tested:
FreeBSD 4.9 (sleipnir)
FreeBSD 4.9 (sleipnir) w/parallel
h5committest not necessary - parallel only changes
Bug fix
Description:
Code was using an internal DXPL with collective I/O turned on during
independent I/O operations to fill dataset on disk.
Solution:
Switched to internal DXPL with independent I/O
Platforms tested:
FreeBSD 4.9 (sleipnir)
FreeBSD 4.9 (sleipnir) w/parallel
Linux 2.4 (verbena) w/fortran & C++
Solaris 2.7 (arabica) w/64-bit extensions enabled
Fix serial build
Description:
I accidentally put the "use_par_opt_io" variable in an #ifdef PARALLEL
section.
Solution:
Hoist it out of parallel section
Platforms tested:
Eyeballed it - very trivial
Code cleanup
Description:
Straighten out more goofiness in the MPI code dealing with collective I/O
transfers - mostly make certain that a view is set if-and-only-if collective
I/O is occurring on raw data (and vice versa for views and independent I/O)
Platforms tested:
FreeBSD 4.9 (sleipnir) w/parallel & FPHDF5
too minor to repquire h5committest
Code cleanup
Description:
Remove collective parallel I/O checking code, now that it's impossible to
get into this code with collective access enabled.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Code cleanup
Description:
More refactoring on setup of MPI-IO parameters: hoisted the code to change
the transfer mode from collective to independent up into the H5D_read and
H5D_write routines, instead of duplicating it inside each of the chunk/contig
read/write routines.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Code cleanup
Description:
Clean up setup code for collective I/O transfers to make the logic more
obvious.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor for h5committest
Bug fix
Description:
Single hyperslab selections (which were set with only one call to
H5Sselect_hyperslab) that had dimensions that could be "flattened" but were
interspersed with dimensions that could not be flattened were not correctly
handled, causing core dumps.
Solution:
Re-work "flattening" code to handle this case properly.
Platforms tested:
FreeBSD 4.9 (sleipnir) w/parallel
h5committest
Code cleanup
Description:
Refactored handlier of VFL drivers in file access and data transfer property
lists in order to simplify and unify the code dealing with them.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Bug fix
Description:
Change "H5_HAVE_PARALLEL" to "H5_HAVE_FPHDF5" around VFL ID, to prevent
daily builds from failing.
Platforms tested:
FreeBSD 4.9 (sleipnir) w/parallel
too specialized to require h5committest
Bug Fix
Description:
The owners and reference counts of locks weren't being handled
correctly.
Solution:
Allocate an array the size of the COMM FPHDF5 is invoked with for
each lock. Then reference count within this array. Keep an extra
"counter" to see how many different processes have this particular
lock. Free the lock when that counter reaches zero.
Platforms tested:
Linux & Copper (FPHDF5 specific).
Misc. update:
Bug Fix
Description:
Was using HGOTO_ERROR within a "done:" block.
Solution:
Changed HGOTO_ERROR macro to HDONE_ERROR inside of a done: block.
Platforms tested:
Linux (Small change).
Misc. update:
Message Correction
Description:
Uncapitalized the beginning of the error messages.
Solution:
Platforms tested:
Linux (Very small change).
Misc. update:
Bug fix
Description:
Remove the [duplicated] native C9x datatype initializatin code from H5T.c
and let the automatically generated code in H5Tinit.c handle initializing them,
if they are allowed by the compiler.
Platforms tested:
FreeBSD 4.9 (sleipnir)
Linux 2.4 (verbena, eirene)
probably should be h5committested, but it's late and I'm fairly certain
this will fix the problem... :-/
Bug fix
Description:
Avoid "OPAQUE" symbol in template macro invocation, since it's already
defined as a macro on Windows.
Solution:
OPAQUE -> OPAQ
Platforms tested:
FreeBSD 4.9 (sleipnir)
Windows ? (Pedro's machine :-)
Refactor code
Description:
Use "template macro" technique to eliminate a huge amount of repeated code
in type initialization code (almost 1000 lines, between this change and the
changes to the H5Tconv.c file earlier).
This centralizes the common parts of the code and makes the different parts
of the code more obvious.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Optimize code
Description:
Eliminate some computations from inner loop, giving about a 5% speedup.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to h5committest
Refactored code
Description:
Switched float->double and double->int conversions to use new, more generic
conversion looping macros.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too small to require h5committest
More refactoring
Description:
Re-wrote inner loop of integer conversion routines with "psuedo-template"
macros, to hoist 'if-else's out of inner loop in an easy to understand way.
This speeds up the integer type conversions by 15-20%.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Code cleanup
Description:
Re-wrote duff's device with some macro substitution to make algorithm more
obvious.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too small to require h5committest
Refactor integer conversion macros
Description:
Turned integer conversion macros "inside" out, using an interlocking
macro technique similar to templates in C++. The macro which actually performs
the conversion is now invoked "genericly" from inside another macro, which
will allow the inner conversion loop to be optimized in a much easier way.
This "psuedo-template" technique could be useful for other semi-repetitious
patterns in the library - possibly the datatype initialization code...
Platforms tested:
FreeBSD 4.9 (sleipnir)
h5committest
Code cleanup
Description:
Change field member count and indices for compound and enumerated types from
'int' to 'unsigned' to better reflect actual use.
Cleaned up a few other minor compiler warnings, etc.
Platforms tested:
FreeBSD 4.9 (sleipnir)
Linux 2.4 (verbena)
too minor to require h5committest
Bug fix
Description:
The 'char *' type is one of the "strongly" aligned types on Crays, but
a 'void *' is "weakly" aligned. So, assigning a 'void *' (pointing to a
location to place a 'char *') to a 'char **' can change the pointer value
during the assignment.
Solution:
Don't alias the 'void *' where the variable-length information ('char *'
or 'hvl_t') will go. Use a temporary variable on the stack to build up the
information about the VL string or sequence and then memcpy() the temporary
variable directly to the location pointed to with the 'void *'
Platforms tested:
FreeBSD 4.9 (sleipnir)
Cray SV1 (wind)
specific to Cray problems, h5committest not necessary.
Bug fix
Description:
Correct the size of the buffer needed for the destination value to use
the actual destination type size.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Bug fix
Description:
The VL type conversion routine attempt to align it's destination buffer to
an offer that will work for both hvl_t and char * types, but the algorithm used
fails to work correctly on Cray machines.
Solution:
Give up on attempting to align the buffer when it's allocated on the stack.
Just dynamically allocate it instead.
Platforms tested:
FreeBSD 4.9 (sleipnir)
Cray SV1 (wind)
Bug fix
Description:
When too many messages were inserted into an object header, the library
had an internal pointer to the "new message" that was pointing to the incorrect
location when the array of messages was re-allocated.
In the worst case, this could cause a file to be corrupted.
Solution:
Update the internal pointer when the array is re-allocated.
Platforms tested:
FreeBSD 4.9 (sleipnir)
Too small to require h5committest
Feature add
Description:
Add a few new fields to the H5G_stat_t structure, to allow more information
about the object header to be retrieved.
Platforms tested:
FreeBSD 4.9 (sleipnir)
h5committest
Add feature
Description:
Add H5Fget_freespace() routine, to check the amount of free space in a
file. This information is only valid until the file is closed currently,
however (until we start recording the free space information in the file
itself).
Platforms tested:
FreeBSD 4.9 (sleipnir)
h5committest
Improved algorithm (bug fix, sorta)
Description:
The internal algorithm for adding new IDs in the ID manager code (H5I) was
adding new IDs to the front of the linked list and never adjusting the order
of the items on the list (unless an ID was deleted). If many new objects were
created, they would push earlier ones _way_ down the list (especially if the
objects were being leaked in the application, as they appear to be in the
current HDF-EOS5 library) and would cause O(n) search time for items on the
list.
The ID caching code in the ID manager was avoiding this behavior sometimes,
but it was adding IDs that were looked up to the very tail of the cache and
they would frequently leave the cache before helping.
Solution:
Implemented a "move to front" scheme for the linked list of IDs, which
improves the lookup situation for frequently accessed objects.
Removed ID caching code now, as the "move to front" algorithm actually
works better.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Bug/feature fix.
Description:
Relax restriction on parallel writing to compact datasets to allow partial
I/O.
Updates to reference manual mentioning the issues involved are delayed until
reference manual 'lock' is removed later this week.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Bug fixes and code cleanup
Description:
Lots of changes here:
- Fixed bug #691 - when shared datatypes are used in attributes they
are incorrectly copied into the attribute instead of referring
the the named datatype in the file. This required bumping the
version of the attribute message. The new version of the attribute
message is only written out when a shared datatype is used in
the attribute. [Also, this format change made the size of the
attribute smaller.]
- Added information to attribute debugging routine so that shared
datatypes are displayed correctly with the h5debug tool.
- Refactored the H5O* routines to extract code that was common to
several routines into subroutines to call.
- Added 'link' method for H5O message sub-classes, which increments
the link count on shared objects when a message is created which
shares them.
- Corrected [unreported] bug where the link count was not being
decremented on the shared object when a object header message
with a reference to that object was deleted from the file.
- Reduced size of shared message from 49 bytes (which was incorrect
anyway and should have been 48 bytes) to 10 bytes, which required
bumping the version of "shared" messages.
- Refactored some of the shared datatype routines to allow for easier
queries of "committedness" internally to the library and also
added routine to easily increment/decrement the reference count of
a shared datatype.
Platforms tested:
FreeBSD 4.9 (sleipnir)
h5committest
Bug Fix
Description:
The FPHDF5 code couldn't create a dataset then access it. Turns out
that the "O_find_in_ohdr" code was protecting the object header which
pulls it into the cache then unprotecting it. However, this caused
the cache entry to be blown away and THEN we'd try to reread the
entry (via AC_protect) but it didn't have all of the data that the
find_in_ohdr function decodes for us decoded. It was also kind of
unnecessary since we can just protect then call O_find_in_ohdr.
Solution:
Removed the AC_protect and AC_unprotect from O_find_in_ohdr. Called
AC_protect before calling the O_find_in_ohdr function.
Platforms tested:
Linux (Fortran, C++)
IRIX (parallel, Fortran)
Sun (Fortran)
Misc. update:
Code cleanup
Description:
Clean up a few loose ends and warnings for the 1.6 compatibility changes
to the error API.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Code cleanup
Description:
Clean up various warnings and parameter mis-matches, etc.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to need h5committest
Removed Dead Code
Description:
Some of the FPHDF5 code was dead (I thought it'd be useful at one
point, but was wrong).
Solution:
Removed
Platforms tested:
Linux (FPHDF5 specific. No need for h5committest)
Misc. update:
Bug fix
Description:
Buffer for decoding superblock's driver information was too small when
using some VFDs (like the multi-file VFD).
Also made FPH5 code more portable and obvious when it's broadcasting the
superblock from the captain process to the other clients.
Solution:
Allocate the buffer for the driver information dynamicly
Platforms tested:
Copper
No h5committest because it's already working on other platforms.
FPHDF5 Update
Description:
Added locking/unlocking to the AC_protect/AC_unprotect calls. The SAP
does all of the caching so nothing should be saved on the client
side. So, when the client unlocks the metadata, it can destroy it.
The metadata is always read from the SAP during a lock.
Platforms tested:
Linux (FPHDF5 specific change. No need for h5committest)
Update
Description:
A lot of modifications for the FPHDF5 stuff:
H5AC.c
H5ACprivate.h - Removed AC_find (it's replaced with AC_protect
and AC_unprotect). Added flushing if it's an FPHDF5 driver and
we're doing an AC_set or AC_unprotect with the dirty flag set.
H5B.c - Split up the B_flush function into different functions
since the one function was doing serialization which is better
left as a separate entity.
H5D.c - Removed some FPHDF5 code that was incorrect
H5F.c - Split up the F_flush function so that it no longer
allocates file space. Created new functions (F_init_superblock,
F_read_superblock, and F_write_superblock) for greater modularity
and so that the FPHDF5 non-captain processes can read the
superblock after the captain process writes it.
H5FD.c - Error message correction.
H5FDfphdf5.c - Removed MPI barrier call that wasn't needed.
H5FPclient.c
H5FPserver.c - Modified so that if a process requests data that
isn't exactly aligned, we can return it if we have the block that
contains the requested address.
H5G.c
H5Gent.c
H5Gnode.c
H5HL.c
H5HLpkg.h
H5HLprivate.h
H5Oefl.c - Removed the H5HL_peek function since it was doing a
(now unsafe) holding of the information in the cache. Replaced
with protect and unprotect calls.
H5TB.c - Error fix. The TB_dless function wasn't working
properly.
H5Gstab.c - Format change.
H5err.txt
H5Edefin.h
H5Einit.h
H5Epubgen.h
H5Eterm.h - Added new error code.
Platforms tested:
Modi4 (paralle, Fortran)
Sol (Fortran)
Linux (C++, Fortran)
Copper (Parallel, Fortran)
Misc. update:
Bug fix
Description:
The MPI_File_set_size() routine on ASCI Red is not able to extend files
so that they are larger than 2GB.
Solution:
Add an extra macro which controls whether MPI_File_set_size() can handle
>2GB offsets or if our "older" way of reading a byte, then writing a byte at
the appropriate offset should be used.
Platforms tested:
FreeBSD 4.9 (sleipnir)
h5committest
Bug fix
Description:
The MPI_File_set_size() routine on ASCI Red is not able to extend files
so that they are larger than 2GB.
Solution:
Add an extra macro which controls whether MPI_File_set_size() can handle
>2GB offsets or if our "older" way of reading a byte, then writing a byte at
the appropriate offset should be used.
Platforms tested:
FreeBSD 4.9 (sleipnir)
h5committest
Bug fix
Description:
H5Dwrite was only checking the "top level" of the datatype to stop parallel
I/O on variable-length datatypes.
Solution:
Make checks "deeper".
Platforms tested:
FreeBSD 4.9 (sleipnir)
h5committest
Code cleanup & optimization
Description:
Split superblock initialization and space allocation out from writing
the superblock information to disk, which makes the code much cleaner and
easier to understand and also allows FPHDF5 to have a fully completed superblock
to Bcast to other (non-caption) processes.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Update
Description:
The F_open and F_flush functions had a lot of cruft in them. The
F_flush was being used as a way to allocate the superblock. The
F_open had a bunch of code in there to read and serialize the
superblock.
Solution:
Moved these out into their own functions.
Platforms tested:
Modi4 (parallel, Fortran)
Copper (parallel, Fortran)
Verbena (Fortran, C++)
Sol (Fortran)
Misc. update:
Code cleanup, etc.
Description:
Generalize Ray's datatype fixes to handle packing compound datatypes which
are the base type of an array or variable-length type, etc.
Also track "packedness" of a compound datatype from it's creation, instead
of only setting the 'packed' flag after the datatype was explicitly packed.
Updated docs to reflect that a compound datatype is allowed to grow (but
not shrink).
Platforms tested:
FreeBSD 4.9 (sleipnir)
h5committest
Code cleanup
Description:
Patch up a few places where the metadata cache could ask for a read lock
instead of a write lock and other minor code cleanups.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to need h5committest
Misc. update:
Update
Description:
Added extra parameter to the H5AC_protect() function that indicates
if the cache being asked for is going to be written to or just read
from. Those AC_protect calls that were H5AC_find calls are now
read-only. The rest are writes.
Platforms tested:
Linux (h5committest not needed due to size and small impact)
Misc. update:
Bug fix.
Description:
Correct bug where a file opened twice, once with read-write permission
and once with read-only permission would cause closing the file with the
read-only file ID to fail because it was trying to flush information out
of the file.
Solution:
Check the permissions on file IDs that are being closed and only flush
when the particular file ID was opened with write permission.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too small to need h5committest
Misc. update:
Removal of H5AC_find()
Description:
The H5AC_find() function is mostly redundant and with the new
Flexible Parallel HDF5 stuff, we need to do locking on metadata
returned from the H5AC_find() anyway. So, all of the locking stuff
will be placed in the H5AC_{un}protect() functions. The H5AC_find()
is no longer needed.
Solution:
Replaced all H5AC_finds with H5AC_protects and H5AC_unprotects.
Platforms tested:
Linux (Fortran & C++)
Solaris (Fortran)
Irix (Parallel & Fortran)
Misc. update:
Code cleanup/bug fix
Description:
Move metadata cache calls around a bit so they protect the usage of the
metadata better.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too small to need h5committest
Fix, of a sort
Description:
Some of the code would get an object from the cache via the
H5AC_find() function and then modify the returned object. This
behavior is incorrect as the pointer returned via the H5AC_find()
function is supposed to be read only.
Solution:
Changed the H5AC_finds to H5AC_protect() instead and added the
appropriate H5AC_unprotect() function.
Platforms tested:
(simulated h5committest by hand since it doesn't work for me)
Linux (Fortran, C++)
Solaris (Fortran)
AIX (Fortran, C++)
SGI (Parallel, Fortran)
Bug fix
Description:
The VFL driver ID in a file's access proprty list wasn't being reference
counted correctly, causing the VFL driver to get prematurely closed after
several calls to "H5Pget_access_plist->H5Pclose".
Solution:
Increment VFL driver ID reference count when copy of file's access property
list is made in H5Pget_access_plist()
Platforms tested:
FreeBSD 4.9 (sleipnir)
h5committest
Bug Fix and code cleanup
Description:
Correct error in H5T_detect_class that was causing nested compound datatypes
with to not detect the datatype class of fields correctly, which caused errors
with fill-values, variable-length datatypes and chunks later on.
Return the rank of the array datatype from H5Tget_array_dims(), like
H5Sget_dims().
Lots of cleanups to datatype code, to make the handling of arrays, compound
types, variable-length strings and sequences and enumerated types more
consistent and robust.
Platforms tested:
FreeBSD 4.9 (sleipnir)
h5committest
Bug fix
Description:
When datasets are deleted from a file, they are removed from the sieve
buffer, but instead of invalidating only the part of the sieve buffer affected,
the sieve buffer code would throw away the entire sieve buffer, potentially
including other raw data in the buffer that hadn't been written to disk yet.
Solution:
Improve the sieve buffer clearing code to handle partial invalidations.
Platforms tested:
FreeBSD 4.8 (sleipnir)
h5committest
Code cleanup
Description:
Clean up some of the code for writing out dataspace and datatype
information.
Platforms tested:
FreeBSD 4.8 (sleipnir)
too small to need h5committest
Bug fix
Description:
H5Gget_objname_by_idx should allow NULL for the 'name' parameter, to allow
for querying for the name's length.
Solution:
Allow NULL for the 'name' parameter, the internal functions were already
ready to handle that case.
Clean up RM information about H5Gget_objname_by_idx and
H5Gget_objtype_by_idx also.
Platforms tested:
FreeBSD 4.8 (sleipnir)
h5committest
Bug fix
Description:
Correct problem with mis-aligned string pointers on certain architectures
(i.e. on modi4) causing a core dump. The string pointers can be mis-aligned
due to being part of a compound datatype and how our compound type conversion
routines work.
Solution:
Allocate string with temporary variable and memcpy() the pointer to the
new string into the type conversion buffer, instead of dereferencing the type
conversion buffer directly.
Platforms tested:
FreeBSD 4.8 (sleipnir)
h5committest
Bug fix
Description:
MPE color definitions were missing for new API.
Solution:
Updated it.
Platforms tested:
Tested by hand in Copper since that is the only place that
MPE option works currently.
Misc. update:
Bug fix
Description:
H5Gget_num_objs, H5Gget_objname_by_idx and H5Gget_objtype_by_idx were
only accepting a group ID, instead of a location ID, as our documentation for
them stated.
Solution:
Allow them to accept a location ID.
Platforms tested:
FreeBSD 4.8 (sleipnir)
h5committest
Code cleanup & bug fix
Description:
More de-linting...
Also correct a bug that lint exposed which was incrementing the incorrect
driver ID of a file driver and also no saving the correct driver ID for the
newly opened file.
Platforms tested:
FreeBSD 4.8 (sleipnir)
too minor for h5committest
Bug fix
Description:
I/O on chunked datasets with a scalar dataspace for the memory dataspace
was not working correctly.
Solution:
Translate the scalar dataspace into a n-dimensional (where n is the number
of dimensions of the file's dataspace) dataspace of dimensions 1x1x1...
Platforms tested:
FreeBSD 4.8 (sleipnir)
h5committest (modulo modi4 which is not working correctly)
Code cleanup
Description:
Various cleanups resulting from running lint tool over H5F.c source module
Platforms tested:
FreeBSD 4.8 (sleipnir)
too minor to require h5committest
Code cleanup
Description:
Changed version #'s returned from H5Pget_version from 'int *' to
'unsigned *' since we are never going to be using negative version #'s... :-)
Platforms tested:
FreeBSD 4.8 (sleipnir)
too small to need h5committest
Bug fix
Description:
Linking and unlinking objects with multiple internal and/or trailing '/'s
was not handled well in the library.
Solution:
"Normalize" strings by removing trailing '/'s and collapsing multiple
internal '/'s down into just one '/' before operating on the name.
Platforms tested:
FreeBSD 4.8 (sleipnir)
h5committested
Clean up Pablo masks
Description:
H5E.c - Moved Pablo mask definition above include files, so it affects
inline functions properly.
H5FDstream.c - Added Pablo mask definition to address daily build failures.
Platforms tested:
FreeBSD 4.8 (sleipnir)
too minor for h5committest
Added comment.
Description:
Call to MPI_Barrier should be unneccessary.
Platforms tested:
FreeBSD 4.8 (sleipnir)
too minor for h5committest
Misc. update:
Code cleanup
Description:
Cleanup H5Pclose code and also switch a few internal users of H5Pclose
to use H5I_dec_ref instead.
Platforms tested:
FreeBSD 4.8 (sleipnir)
too small for h5committest
Code cleanup & commentary
Description:
Add comments to the recent FPHDF5 additions to this file to describe why
the changes shouldn't be in this file and attempt to find the proper home for
them.
Platforms tested:
FreeBSD 4.8 (sleipnir)
just comments mostly, no need to run h5committest
Bug fix
Description:
The metadata cache 'destroy' callback routines need the file handle in
order for certain callback routines (currently just the H5HG one) to perform
extra cleanups. The recent change to call the 'destroy' callback from the
'clear' callback omitted this parameter.
Solution:
Add the file handle to the metadata cache 'clear' callbacks.
Platforms tested:
FreeBSD 4.8 (sleipnir)
too small to need h5committest