Commit Graph

130 Commits

Author SHA1 Message Date
Quincey Koziol
2e1ef03cef [svn-r7317] Purpose:
Feature change & code cleanup

Description:
    Changed fileno field in H5FD_t struct from 'unsigned long[2]' to just
'unsigned long'.

    Changed over code to handle the fileno change.

    Chased error API changes


Platforms tested:
    h5committested
2003-08-08 14:17:40 -05:00
Quincey Koziol
780d678ddd [svn-r7052] Purpose:
Code cleanup

Description:
    Correct name of H5FD_term_interface function in FUNC_ENTER macro.

Platforms tested:
    FreeBSD 4.8 (sleipnir)
    h5committest
2003-06-18 15:39:34 -05:00
Quincey Koziol
9b60a446b3 [svn-r6649] Purpose:
Bug fix.

Description:
    Corrected fencepost error which was incorrectly checking for merging
metadata at the front of the metadata accumulator.  This now allows the
metadata cache to cache I/O operations more efficiently.


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

    (h5committest not run due to my ongoing difficulties with C++ on burrwhite).
2003-04-13 23:39:11 -05:00
Quincey Koziol
e804b4c75b [svn-r6632] Purpose:
Bug fix

Description:
    This fixes a bug in the low-level metadata caching code in the library
which could possibly lose metadata during file I/O when a lot of objects are
inserted into a group.

    This also fixes a couple of (similar) fencepost bugs in the B-tree
deletion code.

Solution:
    For the metadata bug - call the low-level driver's 'write' routine instead
of H5FD_write.

    For the B-tree bug - include the correct number of keys.

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

    (h5committest is still not working for me on burrwhite)

Misc. update:
2003-04-11 11:37:18 -05:00
Bill Wendling
243775d9cd [svn-r6556] Purpose:
Update & Bug Fix

Description:
    The "free" protocol was missing. Added that to the server side.

    When doing a "create" of a file (with no other data structures
    created), the freespace in the file wasn't being reclaimed.

Solution:
    After adding the free protocol, we put the burden of running through
    the FD_free function on the SAP instead of each client.

Platforms tested:
    Linux

Misc. update:
2003-04-01 16:38:04 -05:00
Bill Wendling
fc295015d8 [svn-r6527] Purpose:
Bug Fix & Update

Description:
    FPHDF5 was creating files which didn't have the EOA field in the
    superblock set correctly. It turns out that the SAP was keeping this
    information to itself instead of giving it to the client processes.

    Naughty SAP!

Solution:
    Have the SAP send this information back to the clients so that they
    can update the superblock as necessary. This now creates a file (with
    just the root group) that looks correct! Only problem is that there's
    extra file space being allocated. Also, at program termination,
    there's an infinite loop...

Platforms tested:
    H5committests (run by hand on burrwhite, arabica, and modi4)

Misc. update:
2003-03-27 16:34:21 -05:00
Bill Wendling
a90774e8cc [svn-r6514] Purpose:
Bug fix and Update

Description:
    From Quincey's comments on the code I checked in last night:

        - In H5F_close call, the "private" processes should call the
          H5F_flush with the "CLEAR_ONLY" flag.
        - There's no need for a special case for FPHDF5 in the
          FD_real_alloc function since FPHDF5 doesn't define an alloc
          function.
        - The return type of H5Pset_fapl_fphdf5 should be herr_t instead
          of hid_t. I don't know how it got that way in the first place.
        - The variable names for MPI types and the structure typedefs
          should be switched: H5FP_request/H5FP_request_t to
          H5FP_request_t/H5FP_request and so on.
        - In the H5FP.c module, I was commiting the H5FP_request MPI
          datatype but using the wrong offset field...

Platforms tested:
    Linux...will test on others, but these are mostly FPHDF5 changes.

Misc. update:
2003-03-20 12:39:06 -05:00
Bill Wendling
276ba30370 [svn-r6506] Purpose:
Update

Description:
    When doing an allocation, check to see, if it's an FPHDF5
    driver, if only the captain should be performing the allocation

Platforms tested:
    Linux, Modi4, Sol

Misc. update:
2003-03-19 18:43:03 -05:00
Quincey Koziol
a52914987e [svn-r6497] Purpose:
Finish code cleanup

Description:
    Wrap up the conversion of H5F_flush's multiple boolean flags into a single
bitfield of flags by pushing the flags down into the H5AC_flush and
H5F_istore_flush routines.
    Also, changed the flags from H5_FLUSH_<foo> to H5F_FLUSH_<foo> to be more
consistent with rest of library.
    And reverted the changes to H5FDflush and H5FD_flush routines.

Platforms tested:
    FreeBSD 4.7 (sleipnir)
    Solaris 5.8 (sol)
    IRIX64 6.5 (modi4) w/parallel

Misc. update:
2003-03-19 13:58:54 -05:00
Bill Wendling
d317b8b404 [svn-r6496] Purpose:
Refactoring of Flush Logic

Description:
    The Flushing logic passed in multiple flags to indicate what type of
    flush it was: closing, invalidate, alloc only. This made extending
    the function of the flush logic to handle other flags annoying.

Solution:
    I changed it to be just one bitmasked flag to indicate what type of
    flushing to do. I also added the CLEAR_ONLY flag, which will be used
    in the FPHDF5 stuff.

Platforms tested:
    h5committest doesn't work for me (my environment isn't setup on the
    other machines I guess). I tested it manually:

        Linux parallel & C++
        Sol Fortran
        Modi4 parallel & Fortran.
2003-03-19 12:02:23 -05:00
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
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
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
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
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
Quincey Koziol
973c40d85f [svn-r6104] Purpose:
Bug Fix

Description:
    Free blocks of space in the file which were merged with a block before them
    were not updating the free list information correctly, allowing space in
    the file to over-allocated and potentially corrupted.

Solution:
    Correct address of free block during merging.

Platforms tested:
    Tested h5committest {arabica (fortran), eirene (fortran, C++)
	modi4 (parallel, fortran)}
    FreeBSD 4.7 (sleipnir)
2002-11-20 07:38:39 -05:00
Quincey Koziol
294647ea97 [svn-r5987] Purpose:
Code cleanup

Description:
    Clean up compile warnings.

Platforms tested:
    FreeBSD 4.6 (sleipnir) w and w/o parallel
    Linux 2.2.x (eirene) w/FORTRAN & C++
    Solaris 2.7 (arabica) w/FORTRAN
    IRIX64 6.5 (modi4) w/FORTRAN & parallel
2002-10-14 14:23:40 -05:00
Raymond Lu
bc6f56390a [svn-r5959]
Purpose:
    Performance improvement for compact dataset.
Platforms tested:
    Linux 2.2(eirene), Solaris 2.7(arabica), IRIX64 6.5(modi4)
2002-10-04 15:51:00 -05:00
Raymond Lu
d1e26ae328 [svn-r5951]
Purpose:
    New API functions
Description:
    Added API functions to return pointer to low-level file handle
    (H5Fget_vfd_handle and H5FDget_vfd_handle) and related property list
    setting functions(H5Pset_family_offset and H5Pset_multi_type).
Platforms tested:
    Linux 2.2(eirene), Solaris 2.7(arabica), IRIX64 6.5(modi4)
2002-09-30 11:31:55 -05:00
Quincey Koziol
966adccc59 [svn-r5900] Purpose:
Code cleanup/New Feature

Description:
    Improve the space allocation in the file by re-using freed space more
    effectively.

Platforms tested:
    FreeBSD 4.6 (sleipnir) w/serial & parallel
2002-08-27 14:59:12 -05:00
Quincey Koziol
5112232ddf [svn-r5871] Purpose:
Code cleanup

Description:
    Combined H5P_isa_class and H5I_object functionality into a new internal
    H5P API function: H5P_object_verify, which checks that a property list is
    the appropriate class and then returns the property list object associated
    with the property list ID.

    This reduces the source code by about 200 LOC and trims the library binary
    some more.

Platforms tested:
    FreeBSD 4.6 (sleipnir)
2002-08-12 08:33:42 -05:00
Quincey Koziol
8f7425d2a2 [svn-r5867] Purpose:
Code cleanup

Description:
    Changed the last HRETURN* statements in the FUNC_ENTER macros into HGOTO*
    macros, which reduces the size of the library binary in certain
    configurations by another 10%

Platforms tested:
    FreeBSD 4.6 (sleipnir) serial & parallel, IRIX64 6.5 (modi4) serial &
    parallel
2002-08-09 15:48:23 -05:00
Quincey Koziol
d8397a6f42 [svn-r5842] Purpose:
Code cleanup

Description:
    Change most (all?) HRETURN_ERROR macros to HGOTO_ERROR macros, along with
    HRETURN macros to HGOTO_DONE macros.  This unifies the error return path
    from functions and reduces the size of the library by up to 10% on some
    platforms.

    Additionally, I improved a lot of the error cleanup code in many routines.

Platforms tested:
    FreeBSD 4.6 (sleipnir) serial & parallel and IRIX64 6.5 (modi4) serial &
    parallel.
2002-08-08 11:52:55 -05:00
Quincey Koziol
5588db111c [svn-r5840] Purpose:
Code cleanup

Description:
    Created a new H5I function which combined the some of the functionality of
    H5I_get_type and H5I_object: H5I_object_verify.

    Using this new function in the library trims another ~200 lines of code off
    the library and makes the resulting binaries smaller and faster also.

Platforms tested:
    FreeBSD 4.6 (sleipnir)
2002-07-31 14:17:12 -05:00
Quincey Koziol
363ec52b7c [svn-r5799] Purpose:
New feature.

Description:
    Added MPI-posix VFL driver.  This driver uses MPI to coordinate actions, but
    performs I/O directly with posix sec(2) I/O functions.  This driver should
    _NOT_ be used if the file accessed is not on a parallel filesystem.

Platforms tested:
    FreeBSD 4.6 (sleipnir) w/parallel & IRIX64 6.5 (modi4) w/parallel
2002-07-15 10:21:32 -05:00
Quincey Koziol
3659ae4176 [svn-r5677] Purpose:
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
2002-06-19 12:07:52 -05:00
Quincey Koziol
d81a04ff48 [svn-r5589] Purpose:
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)
2002-06-11 11:53:26 -05:00
Quincey Koziol
41aa2ec073 [svn-r5562] Purpose:
Code cleanup

Description:
    Allow H5FD_free to return successfully (but ignore) freeing objects with
    size 0.

Platforms tested:
    FreeBSD 4.5 (sleipnir)
2002-06-10 10:31:06 -05:00
Quincey Koziol
ff3f6f1a67 [svn-r5551] Purpose:
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)
2002-06-07 09:15:22 -05:00
Quincey Koziol
35c3c893e8 [svn-r5550] Purpose:
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
2002-06-06 22:34:21 -05:00
Quincey Koziol
754f4780f2 [svn-r5542] Purpose:
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++
2002-06-06 08:54:26 -05:00
Quincey Koziol
6b1208407f [svn-r5536] Purpose:
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++
2002-06-05 10:23:20 -05:00
Quincey Koziol
56e4d8fb0c [svn-r5529] Purpose:
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++
2002-06-04 12:27:13 -05:00
Quincey Koziol
ba26e8f2ad [svn-r5521] Purpose:
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++
2002-06-04 08:37:51 -05:00
Quincey Koziol
d74e0290ba [svn-r5510] Purpose:
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++
2002-06-03 14:11:43 -05:00
Quincey Koziol
e69e970a1c [svn-r5471] Purpose:
Code cleanup

Description:
    Broke the FUNC_ENTER macro into several macros, with more specialized
    uses (which followup mail will describe).  This was designed to move
    most/all of the checks which could be done at compile time to that point,
    instead of needlessly performing them (over & over :-) at run-time.
    This reduces the library's size (and thus staticly linked binaries) and
    has a minor speedup effect also.

Platforms tested:
    IRIX64 6.5 (modi4) with parallel & FORTRAN enabled, and additional testing
    on FreeBSD and Solaris immediately after the checkin.
2002-05-29 10:07:55 -05:00
Quincey Koziol
ca912c389e [svn-r5467] Purpose:
Code cleanup.

Description:
    Took Robb's recent ideas for improving the FUNC_ENTER/FUNC_LEAVE macros
    equivalents in the SAF library and adapted them to our library.  I added
    an additional macro which is equivalent to FUNC_ENTER:
        FUNC_ENTER_NOINIT - Has the API tracing code, etc. from FUNC_ENTER but
            none of the library or interface initialization code.  This is to
            be used _only_ for static functions and those which explicitly
            cannot have the library or interface initialization code enabled
            (like the API termination routines, etc.).

    This allowed many more of the functions in the library [but not all yet :-(]
    to be wrapped with FUNC_ENTER[_NOINIT]/FUNC_LEAVE pairs.

    It also reduced the size of the library and executables (by cutting out a
    bunch of code which was never executed), I'll e-mail the exact results when
    I've finished editing it.

Platforms tested:
    IRIX64 6.5 (modi4)
2002-05-28 13:17:12 -05:00
Pedro Vicente Nunes
b4ad5aae56 [svn-r5452]
Purpose:
eliminating the compiler warnings in Windows


Solution:
I am eliminating the compiler warnings in Windows.
the last 2 were:

1)
if((oid_list = H5MM_malloc(oid_count*sizeof(hid_t)))==NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL,
"memory allocation failed");

D:\disk_w\hdf5\src\H5F.c(2590) : warning C4047: '=' : 'int ' differs in levels
of indirection from 'void *'

on the HGOTO_ERROR call , I replaced the NULL with FAIL

2)
*((float*)d) = *((double*)s);
D:\disk_w\hdf5\src\H5Tconv.c(6426) : warning C4244: '=' : conversion from 'double ' to 'float ', possible loss of data

I added the type cast
*((float*)d) = (float) *((double*)s);

we have now 0 errors 0 warnings on Windows !








Platforms tested:
    w2000, linux
2002-05-22 15:01:29 -05:00
Quincey Koziol
03ab48c9c3 [svn-r5444] Purpose:
Code cleanup

Description:
    Clean up warnings on IRIX64 6.5 (modi4)

Platforms tested:
    IRIX64 6.5 (modi4)
2002-05-20 13:43:31 -05:00
Quincey Koziol
86170c3d00 [svn-r5440] Purpose:
New feature

Description:
    Add 'closing' parameter to H5FDflush and VFL "flush" functions, per
        http://hdf.ncsa.uiuc.edu/RFC/VFLFlush/VFLFlush.html

Platforms tested:
    IRIX64 6.5 (modi4)
2002-05-20 11:01:57 -05:00
Quincey Koziol
14b00edf0a [svn-r5403] Purpose:
Back out changes.

Description:
    Back out changes to VFL 'flush' API function, pending review.

Platforms tested:
    IRIX64 6.5 (modi4)
2002-05-13 12:48:07 -05:00
Quincey Koziol
084b35362b [svn-r5393] Purpose:
New Feature

Description:
    The VFL flush function is called immediately before a file is closed.
    This can cause duplicate syncronization actions to occur, if the VFL
    close function also performs them.

Solution:
    Added 'closing' parameter to VFL 'flush' operation.  This allows the VFL
    flush function to bypass operations that will be duplicated within the VFL
    close function.

    Additionally, use the 'closing' parameter to bypass calls to MPI_File_sync()
    when set.  Since MPI_File_close() also syncronizes the file, this avoids
    the terrible performance hit taken when calling MPI_File_sync() as the file
    is closing.

Platforms tested:
    IRIX64 6.5 (modi4)
2002-05-10 13:38:10 -05:00
Quincey Koziol
7e9738f290 [svn-r5096] Purpose:
Bug Fix

Description:
    The H5Gget_objinfo() function was not setting the 'fileno' field in the
    H5G_stat_t struct passed in.

Solution:
    Added a "file serial number" to each file currently open in the library
    and put that in the 'fileno' field.  If a file is opened twice (with
    H5Fopen) and the VFL driver detects that it is the same file (i.e. the
    two file structures have the same "shared file info" in the library's
    memory structures), they will have the same serial number.

    This serial number has two drawbacks:
        - If a VFL driver doesn't/can't detect that two calls to H5Fopen with
            the same file actually _are_ the same file, each will get a
            different serial number
        - If the same file is closed and re-opened, the serial number will be
            different.

    It is be possible to fix the second drawback for many VFL drivers, but it
    would be a lot of effort and probably isn't worth it until we've got a
    good reason to do it.  Dunno if we'll ever be able to fix the first
    drawback...

Platforms tested:
    FreeBSD 4.5 (sleipnir)
VS: ----------------------------------------------------------------------
2002-03-27 15:25:03 -05:00
Quincey Koziol
5e7ed206ea [svn-r4851] Purpose:
Bug Fix
Description:
    When file space was returned to the file space free-list for reuse,
    occasionally raw data allocations which used space from the free-list
    would overlap with the metadata accumulator and get over-written with
    the cached information in the accumulator, corrupting the data.
Solution:
    Check if the space about to be recycled on the free-list is going to be
    used for raw data and also overlaps with the metadata accumulator cache,
    avoiding using space that fits those criteria.

    This fixes bug #701

Platforms tested:
    FreeBSD 4.5 (sleipnir)
2002-01-23 16:28:24 -05:00
Quincey Koziol
fad0ffac14 [svn-r4650] Purpose:
Bug fix
Description:
    Fix another typo from today's big "overflow" commit.
Platforms tested:
    Solaris 2.6 (baldric)
2001-11-27 13:35:01 -05:00
Quincey Koziol
d456c2bb82 [svn-r4643] Purpose:
Code cleanup
Description:
    Windows is generating hundreds of warnings from some of the practices in
    the library.  Mostly, they are because size_t is 32-bit and hsize_t is
    64-bit on Windows and we were carelessly casting the larger values down to
    the smaller ones without checking for overflow.

    Also, some other small code cleanups,etc.

Solution:
    Re-worked some algorithms to eliminate the casts and also added more
    overflow checking for assignments and function parameters which needed
    casts.

    Kent did most of the work, I just went over his changes and fit them into
    the the library code a bit better.

Platforms tested:
    FreeBSD 4.4 (hawkwind)
2001-11-27 11:29:13 -05:00
Quincey Koziol
6ab0e9f092 [svn-r4620] Purpose:
Code cleanup
Description:
    Get rid of IDs from internal function calls and some small cleanups from
    the old-stype => generic property list conversion.
Platforms tested:
    FreeBSD 4.4 (hawkwind)
2001-11-20 14:07:22 -05:00
Raymond Lu
b6da4ea427 [svn-r4569]
Purpose:
    Generic Property List Change
Description:
    Changed file access list to the new generic list.
Platforms tested:
    IRIX64, SunOS5.7, FreeBSD
2001-10-24 13:02:27 -05:00
Quincey Koziol
7a96b1a0d2 [svn-r4482] Purpose:
Kludge
Description:
    Since we're only about halfway through converting the internal use of
    property lists from the "old way" to the generic property lists, we turned
    off snapshots to avoid exposing lots of API changes to users, until the
    APIs settled down.

    Getting the snapshots rolling again seems to have become a priority, so
    some changes are going to have to be made now that were going to be
    postponed until we were completely finished with the conversion.  This
    requires that the old API functions be able to deal with both the old
    and new property lists smoothly.

Solution:
    Kludge together the property list code so that they can transparently handle
    dealing with both the old and new property lists

Platforms tested:
    FreeBSD 4.4 (hawkwind)
2001-09-26 15:29:35 -05:00