Commit Graph

118 Commits

Author SHA1 Message Date
Quincey Koziol
24c134e28b [svn-r9865] Purpose:
Bug fix

Description:
    Catch another way that vsnprintf() can fail (this time on the HP) and
deal with that.

Platforms tested:
    HP/UX 11.x (kelgia)
    Doesn't affect other platforms
2005-01-24 13:50:31 -05:00
Quincey Koziol
563a8dd140 [svn-r9861] Purpose:
Bug fix

Description:
    Add detect vasprintf() routine and use it instead of vsnprintf() when
formatting error descriptions if it's available.

    Added configure test to detect "broken" vsnprintf() implementations which
don't return the correct number of character for strings that are too long to
fit into the buffer provided (currently a problem on the SGIs and probably the
HP).

    Re-wrote error formatting code in H5Epush_stack() to handle broken
vsnprintf() implementations, etc.

Platforms tested:
    IRIX64 6.5 (modi4)
    h5committest
2005-01-23 22:26:37 -05:00
Elena Pourmal
c1df1b3ea4 [svn-r9857] Purpose: Maintenance
Description: Removed PABLO from the source

Solution:

Platforms tested: arabica with 64-bit, copper with parallel,
                  heping with GNU C and C++ and PGI fortran (but
                  I disabled hl, there is some weird problem only
                  on heping: F9XMODFLAG is not
                  propagated to the Makefile files

Misc. update:
2005-01-21 20:16:57 -05:00
Quincey Koziol
b8f7cdc48d [svn-r9837] Purpose:
Bug fix

Description:
    Calling HDvsnprintf() several times (should be twice) is incorrect
without calling va_end() and va_start() again.

Solution:
    Call va_end() and va_start() before calling HDvsnprintf() again.

Platforms tested:
    Linux 2.4/x86_64 (mir)
    Too minor to require h5committest
2005-01-18 21:43:04 -05:00
Quincey Koziol
23130b569c [svn-r9825] Purpose:
Bug fix

Description:
    Fix possible overrun in error description string by allocating large enough
string on the fly.

Platforms tested:
    FreeBSD 4.10 (sleipnir)
    Too minor to require h5committest
2005-01-14 14:36:01 -05:00
Quincey Koziol
0977cfecd9 [svn-r9780] Purpose:
Bug fix

Description:
    Print the thread ID in a little more portable of a fashion, disallowing
negative thread IDs.

Platforms tested:
    Linux 2.4 (heping) w/threadsafe
    Too Minor to require h5committest
2005-01-08 10:26:31 -05:00
Quincey Koziol
427ff7da28 [svn-r9727] Purpose:
Bug Fix/Code Cleanup/Doc Cleanup/Optimization/Branch Sync :-)

Description:
    Generally speaking, this is the "signed->unsigned" change to selections.
However, in the process of merging code back, things got stickier and stickier
until I ended up doing a big "sync the two branches up" operation.  So... I
brought back all the "infrastructure" fixes from the development branch to the
release branch (which I think were actually making some improvement in
performance) as well as fixed several bugs which had been fixed in one branch,
but not the other.

    I've also tagged the repository before making this checkin with the label
"before_signed_unsigned_changes".

Platforms tested:
    FreeBSD 4.10 (sleipnir) w/parallel & fphdf5
    FreeBSD 4.10 (sleipnir) w/threadsafe
    FreeBSD 4.10 (sleipnir) w/backward compatibility
    Solaris 2.7 (arabica) w/"purify options"
    Solaris 2.8 (sol) w/FORTRAN & C++
    AIX 5.x (copper) w/parallel & FORTRAN
    IRIX64 6.5 (modi4) w/FORTRAN
    Linux 2.4 (heping) w/FORTRAN & C++


Misc. update:
2004-12-29 09:26:20 -05:00
HDF Admin
147951e4bb [svn-r9243] Snapshot version 1.7 release 37 2004-09-12 04:05:05 -05:00
Quincey Koziol
eb3e9ccd8a [svn-r9234] Purpose:
Code cleanup

Description:
    Tweak recent "forward compatibility" changes to the H5E* API (which allowed
for the old H5E API functions to remain unchanged) by allowing for the error
stack callback function (H5E_auto_t) to also remain unchanged from the 1.6
branch.  This required changing the H5E{get|set}_auto routines to have the
old style H5E_auto_t type (which didn't have a stack ID parameter) and the new
H5E{get|set}_auto_stack routines to have a newer "H5E_auto_stack_t" type (which
has a stack ID parameter).  This should make the H5E API changes as forwardly
compatible as possible.
    One side-affect of this change was that it was impossible to determine if
the current auto error callback was the old style (H5E_auto_t) or the new style
(H5E_auto_stack_t) of callback, so a new API function (H5Eauto_is_stack) was
adde to query this.

Platforms tested:
    FreeBSD 4.10 (sleipnir)
    IRIX64 6.5 (modi4)
    h5committest
2004-09-08 21:37:02 -05:00
Raymond Lu
cb7f03a26f [svn-r9183] Purpose: New feature
Description:  Restore 6 old error API functions back to the library to be backward
compatible with v1.6.  They are H5Epush, H5Eprint, H5Ewalk, H5Eclear, H5Eset_auto,
H5Eget_auto.  These functions do not have error stack  as parameter.

Solution:  Internally, these functions use default error stack.

Platforms tested:  h5committest and fuss.

Misc. update: RELEASE.txt
2004-09-01 12:43:30 -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
Quincey Koziol
7c3df64cc4 [svn-r8731] Purpose:
Code cleanup & minor optimization

Description:
    Re-work the way interface initialization routines are specified in the
library to avoid the overhead of checking for them in routines where there is
no interface initialization routine.  This cleans up warnings with gcc 3.4,
reduces the library binary size a bit (about 2-3%) and should speedup the
library's execution slightly.

Platforms tested:
    FreeBSD 4.10 (sleipnir) w/gcc34
    h5committest
2004-06-23 10:36:35 -05:00
James Laird
f249eed71d [svn-r8707] Changed the way HDF5 handles hid_t's and added API functions to allow users to register IDs and ID types at runtime. 2004-06-18 11:56:04 -05:00
Quincey Koziol
0a29514b9d [svn-r8383] Purpose:
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
2004-04-17 23:10:09 -05:00
Quincey Koziol
c3d9b510b4 [svn-r8287] Purpose:
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
2004-03-30 15:41:45 -05:00
Quincey Koziol
e71e53c743 [svn-r7920] Purpose:
Bug fix

Description:
    Correct a couple of minor problems with 1.6 compat mode.

Platforms tested:
    FreeBSD 4.9 (sleipnir)
    not tested in h5committest
2003-12-10 11:06:37 -05:00
Quincey Koziol
31431be374 [svn-r7917] Purpose:
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)
2003-12-06 15:38:31 -05:00
Quincey Koziol
0497e80b50 [svn-r7829] Purpose:
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
2003-11-08 10:32:53 -05:00
Quincey Koziol
e2518919c9 [svn-r7626] Purpose:
Update dependencies and tracing information

Platforms tested:
    Linux 2.4 (verbena) w/FORTRAN
    too minor for h5committest
2003-10-14 10:46:38 -05:00
HDF Admin
d19001584b [svn-r7605] Snapshot version 1.7 release 6 2003-10-12 07:18:10 -05:00
Quincey Koziol
c58d85f10e [svn-r7527] Purpose:
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
2003-09-30 11:20:46 -05:00
Quincey Koziol
c48165cb11 [svn-r7526] Purpose:
Fix typo in comment.

Description:
    Looks like a cut & paste error.

Platforms tested:
    None - just comment fixup
2003-09-30 10:27:35 -05:00
Raymond Lu
b997db6cdd [svn-r7519] Purpose:
Description:  add backward compatibility for thread safety.


Platforms tested: RH 8(fuss)
2003-09-29 11:23:15 -05:00
Raymond Lu
7e79a8d71e [svn-r7507] *** empty log message *** 2003-09-24 14:26:50 -05:00
Quincey Koziol
9881fa7e34 [svn-r7381] Purpose:
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
2003-08-18 11:34:27 -05:00
Quincey Koziol
3a9da6ae38 [svn-r7375] Purpose:
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
2003-08-15 15:18:44 -05:00
Quincey Koziol
54949c497a [svn-r7364] Purpose:
Code cleanup

Description:
    Ran lint over code & cleaned up warnings.

Platforms tested:
    FreeBSD 4.8 (sleipnir)
    too small of changes to require h5committest
2003-08-14 08:44:59 -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
Quincey Koziol
9a2f9731bd [svn-r7347] Purpose:
Code cleanup & bug fix

Description:
    Clean up code, adding error checking where appropriate

    Fix a number of routines which were clearing the default error stack
before checking some information about that stack.

    Set the version # of the library correctly when it is registered.

Platforms tested:
    FreeBSD 4.8 (sleipnir)
    h5committested
2003-08-12 08:29:41 -05:00
Quincey Koziol
7255ce7c07 [svn-r7298] Purpose:
Code cleanup & bug fix

Description:
    Refactor code to clean up

    Corrected several bugs, including problems with library termination and
        thread-safete, etc.

Platforms tested:
    h5committested
2003-08-08 13:52:00 -05:00
Raymond Lu
0d22a663df [svn-r7265] *** empty log message *** 2003-07-25 21:55:47 -05:00
Raymond Lu
4cc883a960 [svn-r7263] Purpose: bug fix for C++ caused by new error api
Description:  one variable was left out from checkin yesterday


Platforms tested: RH 8 with C++
2003-07-25 08:52:46 -05:00
Raymond Lu
23f22483b5 [svn-r7262] Purpose: Bug fix for C++ caused by new error API.
Platforms tested: h5committested
2003-07-24 21:24:55 -05:00
Raymond Lu
4b0fa0dbf0 [svn-r7256] Purpose: gradual checkin for error api
Platforms tested: RH 8(simple checkin)
2003-07-22 22:13:27 -05:00
Raymond Lu
032396d482 [svn-r7244] Purpose: gradual checkin for error API
Platforms tested: h5committest
2003-07-21 20:32:10 -05:00
Raymond Lu
8dadcdb101 [svn-r7241] Purpose: Gradual checkin for error API
Platforms tested: h5committest, RH 8

Misc. update:
2003-07-17 20:46:40 -05:00
Raymond Lu
840ce9f8b5 [svn-r7228] Purpose: Gradual checkin for error API
Platforms tested: RH 8
2003-07-15 17:17:09 -05:00
Raymond Lu
eb1eafd798 [svn-r7226] Purpose: Bug fix for error API.
Description:  gradual checkin


Platforms tested: platinum, baldric
2003-07-15 10:49:25 -05:00
Raymond Lu
8a98abf66f [svn-r7225] Purpose: error API gradual checkin
Platforms tested: RH 8; c and c++
2003-07-14 15:08:27 -05:00
Quincey Koziol
378701d632 [svn-r7214] Purpose:
Code cleanup/bug fix

Description:
    Clean up code a bit and make hid_t's for error class to use the same
scheme as predefined datatype hid_t's.

Platforms tested:
    FreeBSD 4.8 (sleipnir) w/C++
    h5committest
2003-07-12 12:02:33 -05:00
Raymond Lu
344eb1c83c [svn-r7212] Purpose: New error API design is being checked gradually.
Platforms tested: RH 8
2003-07-11 16:04:38 -05:00
Quincey Koziol
4fe4a51818 [svn-r7186] Purpose:
Code cleanup

Description:
    More tweaks to clean up warnings from lint.

Platforms tested:
    FreeBSD 4.8 (sleipnir)
    not major enough to h5committest
2003-07-09 09:34:35 -05:00
Quincey Koziol
2a7cf2ea94 [svn-r6956] Purpose:
Code cleanup

Description:
    Add another error code...

Platforms tested:
    FreeBSD 4.8 (sleipnir) w/C++
    FreeBSD 4.8 (sleipnir) w/parallel
    h5committested
2003-06-04 10:35:22 -05:00
Quincey Koziol
43e3b45021 [svn-r6825] Purpose:
New feature/enhancement

Description:
    Chunked datasets are handled poorly in several circumstances involving
certain selections and chunks that are too large for the chunk cache and/or
chunks with filters, causing the chunk to be read from disk multiple times.

Solution:
    Rearrange raw data I/O infrastructure to handle chunked datasets in a much
more friendly way by creating a selection in memory and on disk for each chunk
in a chunked dataset and performing all of the I/O on that chunk at one time.

    There are still some scalability (the current code attempts to
create a selection for all the chunks in the dataset, instead of just the
chunks that are accessed, requiring portions of the istore.c and fillval.c
tests to be commented out) and performance issues, but checking this in will
allow the changes to be tested by a much wider audience while I address the
remaining issues.


Platforms tested:
    h5committested, FreeBSD 4.8 (sleipnir) serial & parallel, Linux 2.4 (eirene)
2003-05-07 16:52:24 -05:00
Quincey Koziol
cbb1e0c952 [svn-r6606] Purpose:
New feature

Description:
    Added new error descriptions.

Solution:

Platforms tested:
    FreeBSD 4.8 (sleipnir) w/szip
    Linux 2.4 (sleipnir) w/szip
    Solaris 2.7 (arabica) w/FORTRAN
    IRIX64 6.5 (modi4) w/szip, FORTRAN & parallel

Misc. update:
2003-04-08 20:53:31 -05:00
Bill Wendling
0dc2b9ea16 [svn-r6423] Purpose:
Update
Description:
    Added support for the allocation and freeing of space in the file.
    This information is kept on the Server.
Platforms tested:
    Linux & Modi4
2003-02-21 08:56:39 -05:00
Bill Wendling
749c50fcd8 [svn-r6336] Purpose:
Update

Description:
    This is the first conversion of the FPHDF5 code to be a metadata
    cache. There's an extra error message. I rewrote the sync/change code
    to be read metadata/write metadata instead.

    I still need to hook these changes into the HDF5 code so that it
    looks at the SAP first before checking the file for metadata.

Platforms tested:
    Linux
2003-01-27 15:38:38 -05:00
Quincey Koziol
f8da76cb9f [svn-r6266] Purpose:
Code cleanup/new feature.

Description:
    Split FUNC_LEAVE into API and non-API specific versions.  This allows a
    solution to compiling this branch with C++, as well as reducing the size
    of the binaries produced.

Platforms tested:
    FreeBSD 4.7 (sleipnir) w/serial, parallel (including MPE) & thread-safe
2003-01-10 15:26:02 -05:00
Quincey Koziol
9a433b99a5 [svn-r6252] Purpose:
Lots of performance improvements & a couple new internal API interfaces.

Description:
    Performance Improvements:
        - Cached file offset & length sizes in shared file struct, to avoid
            constantly looking them up in the FCPL.
        - Generic property improvements:
            - Added "revision" number to generic property classes to speed
                up comparisons.
            - Changed method of storing properties from using a hash-table
                to the TBBT routines in the library.
            - Share the propery names between classes and the lists derived
                from them.
            - Removed redundant 'def_value' buffer from each property.
            - Switching code to use a "copy on write" strategy for
                properties in each list, where the properties in each list
                are shared with the properties in the class, until a
                property's value is changed in a list.
        - Fixed error in layout code which was allocating too many buffers.
        - Redefined public macros of the form (H5open()/H5check, <variable>)
            internally to only be (<variable>), avoiding innumerable useless
            calls to H5open() and H5check_version().
        - Reuse already zeroed buffers in H5F_contig_fill instead of
            constantly re-zeroing them.
        - Don't write fill values if writing entire dataset.
        - Use gettimeofday() system call instead of time() system when
            checking the modification time of a dataset.
        - Added reference counted string API and use it for tracking the
            names of objects opening in a file (for the ID->name code).
        - Removed redundant H5P_get() calls in B-tree routines.
        - Redefine H5T datatype macros internally to the library, to avoid
            calling H5check redundantly.
        - Keep dataspace information for dataset locally instead of reading
            from disk each time.  Added new module to track open objects
            in a file, to allow this (which will be useful eventually for
            some FPH5 metadata caching issues).
        - Remove H5AC_find macro which was inlining metadata cache lookups,
            and call function instead.
        - Remove redundant memset() calls from H5G_namei() routine.
        - Remove redundant checking of object type when locating objects
            in metadata cache and rely on the address only.
        - Create default dataset object to use when default dataset creation
            property list is used to create datasets, bypassing querying
            for all the property list values.
        - Use default I/O vector size when performing raw data with the
            default dataset transfer property list, instead of querying for
            I/O vector size.
        - Remove H5P_DEFAULT internally to the library, replacing it with
            more specific default property list based on the type of
            property list needed.
        - Remove redundant memset() calls in object header message (H5O*)
            routines.
        - Remove redunant memset() calls in data I/O routines.
        - Split free-list allocation routines into malloc() and calloc()-
            like routines, instead of one combined routine.
        - Remove lots of indirection in H5O*() routines.
        - Simplify metadata cache entry comparison routine (used when
            flushing entire cache out).
        - Only enable metadata cache statistics when H5AC_DEBUG is turned
            on, instead of always tracking them.
        - Simplify address comparison macro (H5F_addr_eq).
        - Remove redundant metadata cache entry protections during dataset
            creation by protecting the object header once and making all
            the modifications necessary for the dataset creation before
            unprotecting it.
        - Reduce # of "number of element in extent" computations performed
            by computing and storing the value during dataspace creation.
        - Simplify checking for group location's file information, when file
            has not been involving in file-mounting operations.
        - Use binary encoding for modification time, instead of ASCII.
        - Hoist H5HL_peek calls (to get information in a local heap)
            out of loops in many group routine.
        - Use static variable for iterators of selections, instead of
            dynamically allocation them each time.
        - Lookup & insert new entries in one step, avoiding traversing
            group's B-tree twice.
        - Fixed memory leak in H5Gget_objname_idx() routine (tangential to
            performance improvements, but fixed along the way).
        - Use free-list for reference counted strings.
        - Don't bother copying object names into cached group entries,
            since they are re-created when an object is opened.

        The benchmark I used to measure these results created several thousand
        small (2K) datasets in a file and wrote out the data for them.  This is
        Elena's "regular.c" benchmark.

        These changes resulted in approximately ~4.3x speedup of the
        development branch when compared to the previous code in the
        development branch and ~1.4x speedup compared to the release
        branch.

        Additionally, these changes reduce the total memory used (code and
        data) by the development branch by ~800KB, bringing the development
        branch back into the same ballpark as the release branch.

        I'll send out a more detailed description of the benchmark results
        as a followup note.

    New internal API routines:
        Added "reference counted strings" API for tracking strings that get
            used by multiple owners without duplicating the strings.
        Added "ternary search tree" API for text->object mappings.

Platforms tested:
    Tested h5committest {arabica (fortran), eirene (fortran, C++)
	modi4 (parallel, fortran)}
    Other platforms/configurations tested?
        FreeBSD 4.7 (sleipnir) serial & parallel
        Solaris 2.6 (baldric) serial
2003-01-09 12:20:03 -05:00
Robb Matzke
e9f828ecfb [svn-r6177] ./hdf5-devel/src/H5E.c
Purpose:
    New Feature; Optimization; Clean-up
    (Merged from 1.4 branch)

Description:
    There is no symbolic constant to pass to functions that take an
    optional object ID for when the caller wants to indicate no object
    ID. In the past the caller always passed a negative integer.

    GPFS performs poorly.

    The h5ls tool decides whether to list the file name in the output
    based on a compile-time choice, which isn't always optimal at run
    time.

Solution:
    Added a symbolic constant H5I_INVALID_HID.

    Added code to tell the mmfsd of GPFS to forego byte range token
    prefetching.

    h5ls decides whether to print the file name at runtime based on
    the number of objects being listed.

Platforms tested:
    SuSE Linux (arborea), gcc and mpich-1.2.4
    SunOS (baldric), gcc


2002-12-03 22:50:23 Robb Matzke  <matzke@arborea.spizella.com>
	*: Added H5E_FCNTL minor error number.
2002-12-04 10:44:03 -05:00