| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
| |
New feature
Description:
Add support in for "dmalloc" debugging malloc library to configure script
and library headers.
Platforms tested:
IRIX64 6.5 (modi4) and FreeBSD 4.6 (sleipnir)
|
|
|
|
|
|
|
|
|
|
|
| |
Purpose:
Bug fix
Description:
Nested VL datatype test fails on 64-bit machines
Solution:
bug fixed.
Platforms tested:
IRIX64 6.5(modi4) 64-bit
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Purpose:
Bug fix.
Description:
For nested VL datatype, the heap object of VL elements lower than top level
weren't freed.
Solution:
Read in the content of heap object for VL elements and free them in
function H5T_conv_vlen.
Platforms tested:
eirene
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Purpose:
Bug Fix.
Description:
VL type memory leak when data is overwritten.
Solution:
Free heap objects holding old data.
Platforms tested:
Linux 2.2(eirene), IRIX 6.5(paz).
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug fix.
Description:
Correct the previous code for detecting 1-D contiguous hyperslabs to detect
an extra case that the development branch has, but the release branch
doesn't have.
Platforms tested:
IRIX64 6.5 (modi4) w/parallel
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug fix.
Description:
1-D non-contiguous hyperslabs were erroneously being detected as contiguous
and were causing incorrect behavior for parallel I/O benchmark (and
parallel programs in general).
Solution:
Modified algorithm to handle 1-D case correctly.
Platforms tested:
IRIX64 6.5 (modi4)
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Purpose:
Fix bug
Description:
In function H5HG_remove, heap object header wasn't included for size.
Solution:
Added heap object header in.
Platforms tested:
Linux 2.2(eirene).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug Fix.
Description:
Contiguous types created for "all" and contiguous hyperslab selections was
not being committed before using them.
Solution:
Commit them. :-) This fixes the problems on the LLNL Blue Pacific machine.
Platforms tested:
LLNL Blue Pacific w/parallel.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug Fix
Description:
When parallel I/O is used, the MPI-I/O VFL driver uses a "lazy" model to
call MPI_File_set_view() in order to reduce the number of calls to this
function. However, this is unsafe, because if a collective I/O which uses
MPI derived types (and thus uses MPI_File_set_view()) is immediately
followed by an independent I/O, the code will attempt to call
MPI_File_set_view() in order to switch back to the default view of the
file. MPI_File_set_view() is a collective call however, and this causes
the application to hang.
Solution:
Removed "lazy" MPI_File_set_view() code, instead set the file view when it
is needed (with MPI derived types) and immediately set the file view back to
the default view before leaving the I/O routine.
Platforms tested:
IRIX64 6.5 (modi4) w/parallel. Also, tested with the latest development
and release code for the SAF library, which now works correctly with this
change. (Although the release branch of the SAF library seems to have a
bug, this 1.4.4 release candidate code gets as far as the version the SAF
library is released on top of (1.4.2-patch1, I believe)).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
New feature.
Description:
There is some discussion among the SAF team as to whether it is better
to use MPI derived types for raw data transfers (thus needing a
MPI_File_set_view() call), or whether it is better to use a sequence of
low-level MPI types (i.e. MPI_BYTE) for the raw data transfer.
Solution:
Added an in internal flag to determine whether derived types are preferred
(the default), or whether they should be avoided. An environment variable
("HDF5_MPI_PREFER_DERIVED_TYPES") can be set by users to control whether MPI
types should be used or not. Set the environment variable to "0" (i.e.:
'setenv HDF5_MPI_PREFER_DERIVED_TYPES 0' to avoid using MPI derived types.
Platforms tested:
IRIX64 6.5 (modi4) w/parallel
|
|
|
|
|
|
|
|
|
|
|
| |
Code improvement
Description:
Some small code cleanups and took out the code the was turning off the
metadata cache for parallel I/O (!)
Platforms tested:
IRIX64 6.5 (modi4) w/parallel
|
|
|
|
|
|
|
|
|
|
| |
Code cleanup
Description:
Removed more compiler warnings, etc.
Platforms tested:
Linux 2.2.x (eirene) w/parallel
|
|
|
|
|
|
|
|
|
|
|
| |
Code cleanup
Description:
Remove "COALESCE_READS" ifdefs, which were brought in by the DPSS VFL
driver and are no longer used.
Platforms tested:
IRIX64 6.5 (modi4) w/parallel
|
|
|
|
|
|
|
|
|
|
| |
Code cleanup
Description:
Turn on more warnings in the IRIX builds and clean them up.
Platforms tested:
IRIX64 6.5 (modi4) w/parallel
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug fix.
Description:
The chunking code was using internal allocation routines to put blocks on
a free list for reuse, instead of using the system allocation routines (ie.
malloc, free, etc.). This causes problems when user filters attempt to
allocate/free chunks for their algorithm's use.
Solution:
Switched the chunking code back to using the system allocation routines,
we can address performance issues with them if it becomes a real problem.
Platforms tested:
Linux 2.2.x (eirene) && IRIX64 6.5 (modi4)
|
|
|
|
|
|
|
|
|
|
|
|
| |
Code optimization
Description:
Avoid creating MPI types (and thus requiring a MPI_File_set_view() call)
when contiguous selections are used for dataset I/O. This should be a
performance improvement for those sorts of selections.
Platforms tested:
Linux 2.2.x (eirene) w/parallel && IRIX64 6.5 (modi4) w/parallel & FORTRAN
|
|
|
|
|
|
|
|
|
|
|
|
| |
Code cleanup
Description:
Use dataset transfer property list to hold information about the MPI types
for the current transfer, instead of setting pseudo-global variables in
the file's struct.
Platforms tested:
Linux 2.2.x (eirene) w/parallel & IRIX64 6.5 (modi4) w/parallel & FORTRAN
|
|
|
|
|
|
|
|
|
|
|
|
| |
Code cleanup
Description:
Change MPI-I/O code to use the address of the dataset for the displacement,
instead of having a separate displacement value. Removed displacement
parameter from H5FD_mpio_setup parameters.
Platforms tested:
Linux 2.2.x (eirene) w/parallel & IRIX64 6.5 (modi4) w/parallel.
|
|
|
|
|
|
|
|
|
|
| |
Default change
Description:
Enable the use of MPI types for collective I/O by default.
Platforms tested:
Linux 2.2.x (eirene) w/parallel
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Purpose:
[is this a bug fix? feature? ...]
Description:
[describe the bug, or describe the new feature, etc]
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:
[machines you have tested the changed version. This is absolute
important. Test it out on at least two or three different platforms
such as Big-endian-32bit (SUN/IRIX), little-endian-32(LINUX) and
64-bit (IRIX64/UNICOS/DEC-ALPHA) would be good.]
|
|
|
|
|
|
|
|
|
|
| |
Code cleanup
Description:
Clean up some compiler warnings...
Platforms tested:
FreeBSD 4.5 (sleipnir)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug fix
Description:
I/O on "Regular" hyperslab selections could fail to transfer correctly
if the number of elements in the selection's row did now fit "evenly"
into the buffer being used for the transfer.
Solution:
Correct the calculation of the block & count offsets within the optimized
"regular" hyperslab routines.
Platforms tested:
FreeBSD 4.5 (sleipnir)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Purpose:
Bug #774 fix
Description:
H5Tenum_valueof and H5Tenum_nameof functions did not fail
when non-existing name or non-existing value were supplied.
This happened because binary search algorithm did not check
if value or name found during the search were equal to the supplied
one.
Solution:
Added an appropriate check condition.
Platforms tested:
Solaris 2.7 and Linux 2.2.18
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug fix.
Description:
H5P_get was reading a 'hsize_t' field into a 'size_t' variable, causing
problems on the HP's and Windows.
Solution:
Changed the variable to be an hsize_t
Platforms tested:
HP/UX 11.0 (kelgia)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug Fix
Description:
H5Dcreate and H5Tcommit allow "empty" compound and enumerated types (i.e.
ones with no members) to be stored in the file, but this causes an assertion
failure and is somewhat vapid.
Solution:
Check the datatype "makes sense" before using it for H5Dcreate and
H5Tcommit.
Platforms tested:
FreeBSD 4.5 (sleipnir)
|
|
|
|
|
|
|
|
|
|
|
| |
Code cleanup
Description:
Need to change FUNC_ENTER_NOINIT to FUNC_ENTER_API_NOINIT for
H5dont_atexit()
Platforms tested:
FreeBSD 4.5 (sleipnir)
|
|
|
|
|
|
|
|
|
|
|
| |
Bug fix (#620)
Description:
Change slightly misleading error message when creating attribute with same
name as existing attribute to something a bit more clear.
Platforms tested:
FreeBSD 4.5 (sleipnir)
|
|
|
|
|
|
|
|
|
|
|
| |
Bug Fix (#709)/Code improvement.
Description:
Allow chunks for chunked datasets to be cached when file is open for
read-only access.
Platforms tested:
IRIX64 6.5 (modi4) w/parallel
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug fix (bug #777)
Description:
Current code allows a compound datatype to be inserted into itself.
Solution:
Check if the ID for the member is the same as the ID for the compound
datatype and reject it if so.
Platforms tested:
FreeBSD 4.5 (sleipnir)
|
|
|
|
|
|
|
|
|
|
|
| |
New Feature
Description:
Add H5P[set|get]_small_data_block_size API function, per our discussions at
last week's HDF5 meeting.
Platforms tested:
FreeBSD 4.5 (sleipnir)
|
|
|
|
|
|
|
|
|
|
|
| |
Code cleanup
Description:
Allow H5FD_free to return successfully (but ignore) freeing objects with
size 0.
Platforms tested:
FreeBSD 4.5 (sleipnir)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug Fix for bug #789
Description:
Creating a 1-D dataset region reference caused the library to hang (go into
an infinite loop).
Solution:
Corrected algorithm for serializing hyperslab regions.
Platforms tested:
FreeBSD 4.5 (sleipnir)
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug fix.
Description:
Added extra check to locations where metadata and "small data" blocks were
being returned to the file's list of free space to avoid freeing 0-sized
blocks. This should fix the problems in last night's daily tests.
Platforms tested:
FreeBSD 4.5 (sleipnir)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Code Improvement
Description:
Split the metadata accumulator code into two parts: one for allowing writes
of the accumulator buffer during reads (when the buffer is dirty and needs
to be flushed to disk in order to hold the new metadata being read in) and
another for only allowing writes of the buffer during writes.
This allows the MPI-I/O VFL driver to use the metadata accumulator (but
only during writes) and benefit from the reduced number of metadata I/O
operations that it brings.
Platforms tested:
IRIX64 6.5 (modi4) w/parallel
|
|
|
|
|
|
|
|
|
|
| |
Code cleanup
Description:
Back out [apparently] unnecessary include of H5F package include files.
Platforms tested:
FreeBSD 4.5 (sleipnir)
|
|
|
|
|
|
|
|
|
|
| |
Bug fix.
Description:
Return H5S_all_opt_possible() prototype to original position in H5Spkg.h,
it is not related to parallel I/O.
Platforms tested:
FreeBSD 4.5 (sleipnir)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Code cleanup/bug fix
Description:
Unused space in the file was being "dropped on the floor" when the metadata
or "small data" block was moved to a new location in the file and there was
unused space in the old block.
Solution:
Put the space left in the allocation block into the free list of space for
the file. This allows it to be [potentially] reused and sometimes allows
the file to be smaller.
Platforms tested:
Solaris 2.7 (arabica) w/FORTRAN and FreeBSD 4.5 (sleipnir) w/C++
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Code improvement.
Description:
Added boot block and driver info block checksumming feature to the shared
file information. This prevents these blocks from being written out
multiple times when they haven't changed.
This reduces the number of I/O operations which hit the disk for my test
program from 15 to 14 (i.e. from 393 to 14, overall).
Platforms tested:
Solaris 2.7 (arabica) w/FORTRAN and FreeBSD 4.5 (sleipnir) w/C++
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
New feature.
Description:
Added a "small data" block allocation mechanism to the library, similar to
the mechanism used for allocating metadata currently.
See the RFC for more details:
http://hdf.ncsa.uiuc.edu/RFC/SmallData/SmallData.html
This reduces the number of I/O operations which hit the disk for my test
program from 19 to 15 (i.e. from 393 to 15, overall).
Platforms tested:
Solaris 2.7 (arabica) w/FORTRAN and FreeBSD 4.5 (sleipnir) w/C++
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Code Cleanup
Description:
Removed some compiler warnings.
Solution:
In a few cases, NULL was being returned when a FAIL was supposed to
be returned instead. There were some header files which needed to be
included in a few of the sources. A couple of if-then statements had
assignments in the conditional part. The compiler warned that they
should have extra "()"s around them. Made the code check the values
instead.
Platforms tested:
Linux (parallel) Modi4 (parallel)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Code improvement
Description:
Now that the metadata accumulator is working correctly, the buffer size
tends to get rather large and stay there.
Solution:
Put a throttle on the accumulator buffer to reduce its size back down when
it isn't needed.
Platforms tested:
Solaris 2.7 (arabica) w/FORTRAN & FreeBSD 4.5 (sleipnir) w/C++
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Purpose:
Bug fix (#699), fix provided by a user, approved by Quincey
Description:
When a scalar dataspace was written to the file and then
subsequently queried with the H5Sget_simple_extent_type function,
type was reported H5S_SIMPLE instead of H5S_SCALAR.
Solution:
Applied a fix (see bug report 699)
Platforms tested:
Solaris 2.7 and Linux 2.2.18
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Code improvement
Description:
The metadata aggregation code in the library was not terribly smart about
extending contiguous regions of metadata in the file and would not extend
them as far as possible. This causes space in the file to be wasted, also.
Solution:
Be smarter about extending the space used in the file for metadata by
checking whether new metadata blocks allocated in the file are at the end
of the current metadata aggregation region and append them to the metadata
region if so. This has the nice side benefit of reducing the number of
bytes we waste in the file and reducing the size of the file by a small
amount in some cases.
This reduces the number of I/O operations which hit the disk for my test
program from 53 to 19 (i.e. from 393 to 19, overall).
Platforms tested:
Solaris 2.7 (arabica) w/FORTRAN and FreeBSD 4.5 (sleipnir) w/C++
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug Fix
Description:
The "dirty" flag for symbol table entries and symbol table nodes was not
being cleared when they were flushed to the file, causing lots of extra
metadata I/O.
Solution:
Reset the symbol table entry & nodes' flags when thy are flushed to disk.
This reduces the number of I/O operations which hit the disk for my test
program from 83 to 53 (i.e. from 393 to 53, overall).
Platforms tested:
Solaris 2.7 (arabica) w/FORTRAN & FreeBSD 4.5 (sleipnir) w/C++
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Code cleanup/bug fix
Description:
The "metadata accumulator" cache in the library (which is designed to catch
small metadata writes/reads and bundle them together into larger I/O
buffers) was incorrectly detecting the important case of metadata pieces
being written sequentially to the file, adjoining but not overlapping.
Additionally, the metadata accumulator was not being used to cache data
read in from disk, only caching writes.
Solution:
Fix accumulator to correctly cache adjoining metadata writes and also to
cache metadata read from disk.
Between these two fixes, the number of I/O requests which resulted in actual
reads/writes to the filesystem dropped from 393 requests to 82 for the
particular test I was using. :-)
Platforms tested:
Solaris 2.7 (arabica) w/FORTRAN & FreeBSD 4.5 (sleipnir) w/C++
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Code Bug Fix
Description:
Under certain [obscure] circumstances, an object header would get paged out
of the metadata cache, and when it was accessed again and brought back into
the cache, and immediately had additional metadata added to it (an
attribute, usually, or perhaps adding an object to a group), and needed to
be extended with a continuation message, but there was no room in any
existing object header chunks for the continuation message and an existing
object header message needed to be moved to the new object header chunk (I
told you it was obscure :-), the object header message moved to the new
chunk (not the new metadata being added) would get corrupted. *whew* :-)
Solution:
Actually copy the "raw" object header message information of the object
header message being moved to the new chunk, instead of relying on the
"native" object header message information being re-encoded when the object
header is flushed. This is because when an object header is paged out of
the metadata cache and subsequently brought back in, the "native"
information pointer in memory is reset to NULL and only the "raw"
information exists.
Platforms tested:
Solaris 2.7 (arabica) & FreeBSD 4.5 (sleipnir)
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Purpose:
Bug Fixing
Description:
In H5FD_family_write and H5FD_family_read, size_t is checked against
hsize_t for overflow, which fails on IA32 architecture machine supporting
large files.
Solution:
Use temporary variable which won't pass the limit of size_t.
Platforms tested:
Linux 2.4(platinum) and IRIX64 6.5(modi4)
|