Commit Graph

66 Commits

Author SHA1 Message Date
Quincey Koziol
fcb67f0e86 [svn-r10195] Purpose:
New feature

Description:
    Add feature to modify an existing record in a B-tree

Platforms tested:
    FreeBSD 4.11 (sleipnir)
    Solaris 2.9 (shanti)
2005-03-11 09:05:32 -05:00
Quincey Koziol
45a16682e2 [svn-r10187] Purpose:
Code cleanup, mostly

Description:
    Remove remaining TBBT error info

    Add new error code for block tracker

Platforms tested:
    FreeBSD 4.11 (sleipnir)
    Solaris 2.9 (shanti)
2005-03-10 21:33:09 -05:00
Quincey Koziol
5b7ebc2ff9 [svn-r10184] Purpose:
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
2005-03-10 19:44:03 -05:00
Quincey Koziol
9845d40eb5 [svn-r10153] Purpose:
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)
2005-03-04 23:04:54 -05:00
Quincey Koziol
9f76f83f48 [svn-r9971] Purpose:
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
2005-02-09 16:32:07 -05:00
HDF Admin
d15fc28874 [svn-r9655] Snapshot version 1.7 release 44 2004-12-12 03:43:51 -05:00
Quincey Koziol
b52107a42a [svn-r9580] Purpose:
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)
2004-11-27 11:07:11 -05:00
James Laird
5c0011a713 [svn-r9329]
Purpose:
Feature

Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets.  These objects will hold a file open if the file
is closed but they have not yet been closed.  If these objects are unlinked
then relinked, they will not be destroyed.  If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).

Solution:
Used H5FO code that was already in place for datasets.  Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct.  The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file.  The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size).  I added an updated H5Tinit.c to windows.zip.

Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena

Misc. update:
2004-09-28 14:04:19 -05:00
Raymond Lu
922e8a4a8b [svn-r9208] Purpose: Bug fix
Description:  A few items were left out when tried to restore the old Error API.
There are also a few minor bug fixes.


Platforms tested:  arabica fuss h5committest.
2004-09-04 16:06:48 -05:00
Quincey Koziol
3df2828991 [svn-r8981] Purpose:
Code cleanup

Description:
    Various minor tweaks to clean code up and bring it into closer
syncronization with the release branch.

Platforms tested:
    FreeBSD 4.10 (sleipnir) w/parallel
    h5committested
    IRIX64 6.5 (modi4)
2004-08-02 09:03:40 -05:00
John Mainzer
c49dd7fa36 [svn-r8791] Purpose: Rewrote metadata cache (H5AC.c, etc.) to improve performance.
Description:

Replaced the old metadata cache with a cache with a modified LRU
replacement policy.  This should improve the hit rate.

Solution:

Since we want to flush cache entries in increasing address order, I
used the threaded binary B-tree code to store the cache entries.
There is a fair bit of overhead here, so we may want to consider
other options.

While the code is designed to allow the support of other replacement
algorithms, at present, only a modified version of LRU is supported.

The modified LRU algorithm requires that a user selectable portion
of the cache entries be clean.  The clean entries are evicted first
when writes are not permitted.  If the pool of clean entries is used
up, the cache grows beyond its user specified maximum size.  The
cache can also exceed its maximum size if the combined size of the
protected (or locked) entries exceeds the maximum size of the cache.


Platforms tested:

eirene (serial, parallel, fp), h5committested


Misc. update:
2004-07-02 14:35:04 -05:00
James Laird
eab58732d8 [svn-r8781]
Purpose:
HDF5 now supports SZIP with no encoder.

Description:
SZIP can be configured to have both encoder and decoder or just to have the decoder.  HDF5 can now query the configuration of any filter, and will throw errors if users try to write using a filter with encoding disabled.

Solution:
Added H5Zget_filter_info function, changed API for H5Pget_filter and H5P_get_filter_by_id.  See SZIP RFC.

Platforms tested:
Copper (fortran, C++, parallel), Sleipnir (C++), Arabica (fortran, C++), Verbena (fortran, C++)

Misc. update:
2004-07-01 12:38:04 -05:00
Quincey Koziol
e38803837f [svn-r7494] Purpose:
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.
2003-09-19 12:20:01 -05:00
Bill Wendling
fec0297f86 [svn-r7489] Purpose:
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:
2003-09-18 14:27:27 -05:00
Quincey Koziol
79a96d6a1e [svn-r7380] Purpose:
New error

Description:
    Added H5E_CANTCLOSEOBJ error

Platforms tested:
    FreeBSD 4.8 (sleipnir)
    too minor to need h5committest
2003-08-18 11:32:03 -05:00
Quincey Koziol
d72cdcad4d [svn-r7355] Purpose:
Code cleanup, etc.

Description:
    Previously (in versions prior to 1.7), there were two locations to
modify when an error was added to the library.  Now, with the new error API,
there were four.

Solution:
    Created a single text file (src/H5err.txt) and a perl script (bin/make_err)
which uses the text file to automatically create header files that are included
in appropriate places in the library.
    This means that there is only one file (src/H5err.txt) which needs to be
modified when a new error code is added to the library.  The automatically
generated headers depend on this file and the makefiles will take care of
running the perl script to regenerate them when the text file changes, so no
user action is required when a new error is added.

Platforms tested:
    h5committested
2003-08-12 20:58:10 -05:00