Commit Graph

3340 Commits

Author SHA1 Message Date
Bill Wendling
9c7b019bc5 [svn-r6425] Purpose:
Update
Description:
    Big change to the H5FD.c module:

        - Split apart H5FD_alloc and H5FD_free. H5FD_alloc was huge and
          H5FD_free had a freeing of the freelist part which I needed to
          call from the SAP.
        - Added support for FPHDF5. If it's a client, then it sends the
          allocation or free request to the SAP. The SAP will call the
          same code, but it'll actually do the allocation/freeing in that
          case.
Platforms tested:
    Linux & Modi4
2003-02-21 09:02:40 -05:00
Bill Wendling
23af46a164 [svn-r6424] Purpose:
Update
Description:
    Added support for allocating and freeing space in the file.
Platforms tested:
    Linux & Modi4
2003-02-21 08:58:10 -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
Quincey Koziol
5655953a2a [svn-r6415] Purpose:
Code cleanup

Description:
    Changed hard-coded magic number (32) for the maximum number of filters
    in a filter pipeline to use a symbolic constant (H5Z_MAX_NFILTERS)
    instead.  This limit could (and probably should) be removed to allow an
    unlimited number of filters in a pipeline.

Platforms tested:
    FreeBSD 4.7 (sleipnir)
2003-02-18 07:16:27 -05:00
Quincey Koziol
0475dd9a70 [svn-r6412] Purpose:
Code cleanup

Description:
    Update dependencies and clean up a few warnings.

Platforms tested:
    Linux 2.2 (eirene) w/parallel
2003-02-17 12:11:03 -05:00
Quincey Koziol
946c606452 [svn-r6411] Purpose:
Code cleanup

Description:
    Clean up miscellaneous warnings which have crept into the code.

    Fix "_POSIX_C_SOURCE not defined" warning on FreeBSD.

    Adjust gcc compiler flags to be more concise for production mode.

    Refactor the H5O code so that there is a stronger boundary between code
    in the H5O package and code in the library which just calls H5O routines.

Platforms tested:
    Tested h5committest {arabica (fortran), eirene (fortran, C++)
	modi4 (parallel, fortran)}
    FreeBSD 4.7 (sleipnir) serial & parallel and gcc 2.95.4 & gcc 3.2.2

Misc. update:
    Update MANIFEST if you add or remove any file.
2003-02-17 10:54:15 -05:00
Quincey Koziol
fb4be743d3 [svn-r6410] Purpose:
Bug fix.

Description:
    Correct compile errors when configured with --enable-debug=all.

Platforms tested:
    FreeBSD 4.7 (sleipnir) serial & parallel
2003-02-17 09:58:38 -05:00
HDF Admin
65edf41cc7 [svn-r6407] Snapshot version 1.5 release 47 2003-02-15 06:24:35 -05:00
Bill Wendling
ce6a77eb3e [svn-r6406] Purpose:
Update
Description:
    Since metadata doesn't use a "set view" to do I/O, I moved the check
    for the use_set_view variable down into the "real" write routine.

    Also added a check for when the server is dumping metadata to the
    file. in that case, don't write this information to the SAP...
Platforms tested:
    Linux
2003-02-14 17:06:18 -05:00
Bill Wendling
6c83d3d264 [svn-r6402] Purpose:
Update
Description:
    Added the flush function.

    Modified so that it calls the FPHDF5 code for reading and writing.
    This involved splitting the write function up into three different
    parts to avoid lame goto's. There's some code which will copy a data
    xfer property list and add in there that we're "dumping" the data so
    that we can recall this layer when the SAP dumps metadata to a
    process...
Platforms tested:
    Linux
2003-02-12 16:32:42 -05:00
Bill Wendling
645b7e8c37 [svn-r6401] Purpose:
Update
Description:
    Added a "metadata flush" function which allows the clients to force a
    dump of the metadata from the SAP. This should be done before closing
    the file.

    Modified the information stored on an "open" of the file. The
    filename is unnecessary, so I got rid of it.

    More integration with the File Driver code: Passing in a data xfer
    property list.
Platforms tested:
    Linux
2003-02-12 16:30:20 -05:00
Raymond Lu
d2bfd727ca [svn-r6400]
Purpose:
    Change feature
Description:
    Switch to Fletcher32 from Adler32 checksum
Platforms tested:
    arabica, eirene, modi4
Misc. update:
    MANIFEST and RELEASE.txt updated.
2003-02-12 15:07:21 -05:00
Bill Wendling
2f8719efde [svn-r6399] Purpose:
Bug Fix
Description:
    Pesky little thing: H5GOTO_ERROR was returning NULL instead of FAIL.
Solution:
    Changed accordingly
Platforms tested:
    Linux.
2003-02-12 12:13:24 -05:00
Quincey Koziol
1074ccf4d9 [svn-r6398] Purpose:
Code cleanup

Description:
    Clean up some compiler warnings

Platforms tested:
    FreeBSD 4.7 (sleipnir)
2003-02-12 12:04:40 -05:00
Bill Wendling
07c40148c1 [svn-r6396] Purpose:
Bug Fix
Description:
    Some of the error conditions in the H5GOTO_ERROR macros were NULL
    instead of FAIL.
Solution:
    Changed accordingly.
Platforms tested:
    Linux
2003-02-12 09:36:32 -05:00
Quincey Koziol
7d63d5e3ff [svn-r6395] Purpose:
Code cleanup.

Description:
    Break up the ~9350 line H5T.c module into smaller pieces, which contain
    code for a particular feature or support for a datatype class.

    This should make the "main" H5T code (still in H5T.c) easier to support,
    as well as removing some of the "minor" routines from the user applications
    which don't use them (my rough estimates show about 4% reduction (~30K on
    a FreeBSD machine) in optimized, staticly-linked binaries for very simple
    programs)

Platforms tested:
    Tested h5committest {arabica (fortran), eirene (fortran, C++)
	modi4 (parallel, fortran)}

    FreeBSD 4.7 (sleipnir)

Misc. update:
    Update MANIFEST
2003-02-12 08:44:31 -05:00
Quincey Koziol
997d4e3742 [svn-r6394] Purpose:
Bug fix.

Description:
    Missed adding the dxpl to the 'flush' VFL callback in the stream driver,
    causing the C++ compiles to fail.

Solution:
    Added the dxpl parameter.

Platforms tested:
    FreeBSD 4.7 (sleipnir) w/CC=g++
2003-02-12 07:39:55 -05:00
Bill Wendling
273479f8f8 [svn-r6392] Purpose:
Update

Description:
    Folded in Quincey's changes to the caching stuff. (Stole the code
    from the H5FDmpio driver).

    Roughed in some code for doing a read from the SAP. Also roughed in
    code for doing a write. However, the write requires an OID, which I'm
    not sure how to pass down into the driver (maybe via the
    dxpl_id?...but then it has always to be set before calling one of
    these routines...).

    Removed some of the global variables which were there because of the
    FPHDF5 stuff...

    Removed the H5Ofphdf5.* stuff from the Makefile.in, since I'm pretty
    sure it's going away and I don't want to waste time updating that
    module if that's the case...so just don't compile it.

Platforms tested:
    Linux
2003-02-10 16:53:08 -05:00
Bill Wendling
fab16671cb [svn-r6391] Purpose:
Fix
Description:
    The extra field I put in this structure wasn't needed.
Solution:
    Placed it in the file driver's structure instead.
Platforms tested:
    Linux
2003-02-10 16:47:03 -05:00
Bill Wendling
83f20f35f7 [svn-r6390] Purpose:
Update

Description:
    Removed some obsolete fields - such as the AC_subst_t object ID -
    which isn't needed. Fixed so that there are fewer global variables.
    There are still some left, however. Modified the client and server
    code so that it handles read requests better. There were some flaws
    in how this was done before (it was calling H5FD_read() instead of
    just returning the status that it couldn't find the metadata in the
    cache).

Platforms tested:
    Linux
2003-02-10 16:45:36 -05:00
Quincey Koziol
b55e5cb944 [svn-r6388] Purpose:
Update feature

Description:
    Relax collective constraint for API functions which only read metadata
    from a file.

Platforms tested:
    Tested h5committest {arabica (fortran), eirene (fortran, C++)
	modi4 (parallel, fortran)}
    FreeBSD 4.7 w/parallel
2003-02-10 13:44:22 -05:00
Quincey Koziol
24d8506dd5 [svn-r6387] Purpose:
Bug Fix

Description:
    Metadata cache in parallel I/O can cause hangs in applications which
    perform independent I/O on chunked datasets, because the metadata cache
    can attempt to flush out dirty metadata from only a single process, instead
    of collectively from all processes.

Solution:
    Pass a dataset transfer property list down from every API function which
    could possibly trigger metadata I/O.

    Then, split the metadata cache into two sets of entries to allow dirty
    metadata to be set aside when a hash table collision occurs during
    independent I/O.

Platforms tested:
    Tested h5committest {arabica (fortran), eirene (fortran, C++)
        modi4 (parallel, fortran)}

    FreeBSD 4.7 (sleipnir) serial & parallel

Misc. update:
    Updated release_docs/RELEASE
2003-02-10 12:26:09 -05:00
Quincey Koziol
738661ab9f [svn-r6386] Purpose:
Bug fix

Description:
    The "system scope" for threads isn't supported on all platforms.

Solution:
    Add detection of this feature to the configure script and check for
    "H5_HAVE_SYSTEM_SCOPE_THREADS" in the appropriate places.

Platforms tested:
    modi4 w/threadsafe
2003-02-10 10:38:52 -05:00
Quincey Koziol
168d67dbd2 [svn-r6383] Purpose:
New feature for developers.

Description:
    Added "function stack" tracing to library.  This allows developers (there
    is no public API) to call H5FS_print within the library and get a listing
    of the functions traversed to reach that point in the library.  Eventually,
    I may add support for reporting the parameters to each function also...

    Mainly for debugging parallel I/O programs, but I think it will come in
    handy in other cases also.

    The function stack tracking is controlled with a configure switch:
    --enable-funcstack, which defaults to enabled currently.  When we branch
    for 1.6, we should change the default setting on the branch to be disabled.

    Also, added a destructor to the thread-specific keys when thread-safety is
    turned on in the library.  Otherwise, they were leaking memory and causing
    difficult to debug errors in threaded programs (like the test/ttsafe test).

Platforms tested:
    Tested h5committest {arabica (fortran), eirene (fortran, C++)
	modi4 (parallel, fortran)}

    FreeBSD 4.7 (sleipnir) w/thread-safety enabled.

Misc. update:
    Updated MANIFEST with new files added (src/H5FS.c & src/H5FDprivate.h)

    Update release_docs/RELEASE with thread-safety bug fix.
2003-02-07 16:14:19 -05:00
Bill Wendling
ad1bf227cd [svn-r6381] Purpose:
Field Addition
Description:
    Added a File ID field to the H5FD_t structure so that, way deep down
    in the H5FD_* functions, I'll know what ID the SAP wants for this
    particular file.

    This is #ifdef'd out so that if you don't have FPHDF5 enabled, then
    it won't be there...
Platforms tested:
    Linux
2003-02-06 17:20:29 -05:00
Bill Wendling
4507d01c42 [svn-r6380] Purpose:
Update
Description:
    Added support for the H5FDfphdf5.[ch] file driver.
Platforms tested:
    Linux
2003-02-06 17:08:31 -05:00
Bill Wendling
c7cce26e6a [svn-r6379] Purpose:
Update
Description:
    H5FP.c, H5FPclient.c, H5FPprivate.h, H5FPserver.c:
        Update. More progression towards the SAP as metadata cache. It
        only lacks the ability to take care of metadata allocations.

    H5FDfphdf5.[ch]:
        Start of a new driver for FPHDF5. Not fully implemented just
        yet...
Platforms tested:
    Linux
2003-02-06 17:08:05 -05:00
Raymond Lu
3879dcce1b [svn-r6375]
Purpose:
    New feature
Description:
    Added Adler32 checksum as a filter in pipeline
Platforms tested:
    arabica (fortran), eirene (, C++), modi4 (parallel, fortran)
Misc. update:
    Update release_docs/RELEASE.
2003-02-04 13:50:56 -05:00
Bill Wendling
092a41fe51 [svn-r6374] Purpose:
Update
Description:
    Converted the "FUNC_LEAVE" macros to "FUNC_LEAVE_NOAPI" to be
    consistent with the rest of the library.

    Note: This is probably completely useless as the file is going to go
    away with the new model of the SAP as metadata cache...But it helps
    me compile...
Platforms tested:
    Linux (FPHDF5)
2003-02-03 17:53:44 -05:00
Bill Wendling
b14417185c [svn-r6373] Purpose:
Update
Description:
    Added support for defining what the haddr type is in terms of MPI
    types.
Solution:
    Include some #defines when we typedef haddr...
Platforms tested:
    Linux (For FPHDF5 stuff)...
2003-02-03 17:52:16 -05:00
Bill Wendling
fed785b2eb [svn-r6372] Purpose:
Buglet
Description:
    The title of the function in FUNC_ENTER_* was wrong.
Solution:
    Changed to correct title.
Platforms tested:
    Linux (small change).
2003-02-03 15:44:55 -05:00
Bill Wendling
9b9c71ffb6 [svn-r6371] Purpose:
Update
Description:
    Changes:

        - Added support for the server dumping metadata writes to a
          client.
        - Some of the code wasn't handling allocated buffers correctly
          (freeing twice).
        - Modified server so that it handles metadata only.
Platforms tested:
    Linux
2003-02-03 15:41:53 -05:00
HDF Admin
e91291e458 [svn-r6358] Snapshot version 1.5 release 46 2003-02-01 04:23:56 -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
a6542d06b1 [svn-r6330] Purpose:
Bug Fix

Description:
    When calling H5Fopen with the core VFL driver, but without the
    H5F_ACC_CREAT flag goes ahead and creates a memory file.

Solution:
    Check for the H5F_ACC_CREAT flag before allowing the memory file to be
    created.

Platforms tested:
    FreeBSD 4.7 (sleipnir)
2003-01-24 13:09:57 -05:00
Albert Cheng
daa26b6c11 [svn-r6313] Purpose:
Updated
Description:
    Updated Copyright notice.
    Replaced HGOTO_ERROR calls involving MPI calls with HMPI_GOTO_ERROR.
Platforms tested:
    Tested h5committest {arabica (fortran), eirene (fortran, C++)
	modi4 (parallel, fortran)}?  Tested on Eirene (PP) only since
	the code is in the MPIO module only.
2003-01-22 14:56:45 -05:00
Quincey Koziol
127dc2f80d [svn-r6308] Purpose:
Bug fix

Description:
    Currently, when the library encounters an object header message that isn't
    know, it fails to open that object in the file.

Solution:
    Allow the library to skip over the unknown object header message and
    continue to process the remaining messages, in the hope that the skipped
    message isn't important later.  If it is important, it will be caught at
    a higher level of the library.

Platforms tested:
    FreeBSD 4.7 (sleipnir)
2003-01-21 15:20:13 -05:00
Albert Cheng
052153434e [svn-r6302] Added the testing of libmpe.
This is generated by autoheader.
Platforms tested:
    Tested h5committest {arabica (fortran), eirene (fortran, C++)
	modi4 (parallel, fortran)}? YES
    Other platforms/configurations tested? eirene with --enable-mpe
2003-01-18 09:38:02 -05:00
Quincey Koziol
04f2fe8ff8 [svn-r6301] Purpose:
Code cleanup & bug fix

Description:
    Cleanup another set of warnings on Windows and also fix mis-placed assertion
    that caused the daily tests to fail.

Platforms tested:
    IRIX64 6.5 (modi4) w/-n32
2003-01-18 08:17:33 -05:00
Quincey Koziol
1208e94eff [svn-r6296] Purpose:
Code cleanup

Description:
    Reduce warnings on Windows

Platforms tested:
    FreeBSD 4.7 (sleipnir)
2003-01-17 15:34:14 -05:00
MuQun Yang
3715140146 [svn-r6283]
Purpose:
Change some macros to make windows happy
Description:
Currently no srandom and random functions on windows,
Function gethostname cannot be resolved when DLL turned on
Solution:
use srand and rand to replace srandom and random
turn off the option to check gethostname
Platforms tested:
windows 2000, linux 2.2.18smp
Misc. update:
    Update MANIFEST if you add or remove any file.
    Update release_docs/RELEASE for bug fixes, new features, etc.
    Update applicable document files too.
2003-01-14 16:23:09 -05:00
Quincey Koziol
7f77b606ab [svn-r6278] Purpose:
Code cleanup

Description:
    Add 'H5_DLL' macro to H5FL macros, in order to allow Windows builds to
    work.

Platforms tested:
    FreeBSD 4.7 (sleipnir)
    Visual Studio 6.0
2003-01-14 12:04:22 -05:00
Quincey Koziol
cc0d0285d8 [svn-r6275] Purpose:
Code cleanup

Description:
    Added "UNUSED" flag to an inlinable function

Platforms tested:
    FreeBSD 4.7 (sleipnir) w/gcc 3.2.1
2003-01-13 12:17:15 -05:00
Quincey Koziol
3d4529bf2a [svn-r6272] Purpose:
Code cleanup

Description:
    Fix preprocessor macros to declare variables correctly.

Platforms tested:
    MS Visual Studio
2003-01-13 10:03:05 -05:00
Quincey Koziol
8e391ad35a [svn-r6269] Purpose:
Code cleanup

Description:
    Various code cleanups to allow the development branch to be compiled with
    a C++ compiler (i.e. CC=g++ )

Platforms tested:
    Tested h5committest {arabica (fortran), eirene (fortran, C++)
	modi4 (parallel, fortran)}
    FreeBSD 4.7 (sleipnir) C++
2003-01-13 08:15:49 -05:00
Quincey Koziol
c3a1173026 [svn-r6268] Purpose:
Code improvement

Description:
    Add extra pair of braces to API versions of FUNC_ENTER/FUNC_LEAVE macros,
    to make API <-> non-API mismatches obvious.

Platforms tested:
    FreeBSD 4.7 (sleipnir)
2003-01-11 14:54:57 -05:00
HDF Admin
dc71e191ed [svn-r6267] Snapshot version 1.5 release 45 2003-01-11 07:13:40 -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
98f01e2df2 [svn-r6255] Purpose:
Code cleanup

Description:
    Clean up a few more warnings and update dependencies.

Platforms tested:
    Linux 2.2.18smp (eirene) serial & parallel
2003-01-09 13:40:19 -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