summaryrefslogtreecommitdiffstats
path: root/src/H5Distore.c
Commit message (Collapse)AuthorAgeFilesLines
* [svn-r6136] Raymond Lu2002-11-251-10/+10
| | | | | | | | | | | Purpose: new functions Description: H5Gget_num_objs, H5Gget_objname_by_idx and H5Gget_objtype_by_idx. Platforms tested: modi4, arabica, eirene Misc. update: RELEASE.txt updated.
* [svn-r6106] Purpose:Quincey Koziol2002-11-201-44/+39
| | | | | | | | | | | | | | | | | | | | | | | | | Code cleanup, Feature enhancement Description: Improve hashing algorithm to not generate as many clashes. Avoid using H5MD_realloc when changing the size of a chunk on disk. Instead, use H5MF_free followed by H5MF_alloc, which avoids copying the information from the space for the previous chunk to the space for the new chunk, since we are going to overwrite the chunk with new data anyway. This change should both improve I/O performance in situations where compressed chunks are being overwritten as well as reduce the space used in the file during that situation. Cleaned up error handling in a few cases. Removed old debugging printf()s. Platforms tested: Tested h5committest {arabica (fortran), eirene (fortran, C++) modi4 (parallel, fortran)} FreeBSD 4.7 (sleipnir)
* [svn-r5894] Purpose:Quincey Koziol2002-08-271-29/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bug fix/Code cleanup/New Feature Description: Correct problems with writing fill-values to external storage and allocate the data storage at the correct times. Also, mostly straighten out the strange code which allocates and fills raw data storage for datasets. Things are still a bit odd in that the fill-values for chunked datasets are written when the space is allocated, instead of in a separate routine, but there are two reasons for this: it's inefficient (especially in parallel) to iterate through all the chunks twice, and (more importantly) the space needed to store compressed chunks isn't known until we've got a buffer of compressed fill-values ready to write to the chunk. Additionally, add in the H5D_SPACE_ALLOC_INCR and H5D_SPACE_ALLOC_DEFAULT setting for the "space time", which incorporate the previous behavior of the space allocation for chunked datasets. The default settings for the different types of dataset storage are now as follows: Contiguous - Late Chunked - Incremental Compact - Early This checkin also incorporates a change to the behavior of external data storage in two ways - fill-values are _never_ written to external storage (under the assumption that writing fill-values is triggered by allocating space in an HDF5 file, and since space is not allocated in the file, the fill-values should not be written) and external data files are now created if they don't exist when data is written to them. The fill-value will probably need to be revisited at some time in the future, this just seemed like the safer course currently. I think I cleaned up some compiler errors also, before getting bogged down in the fixes for the space allocation and fill-values. Platforms tested: FreeBSD 4.6 (sleipnir) w/serial & parallel. Will be testing on IRIX64 6.5 (modi4) in serial & parallel shortly.
* [svn-r5886] Purpose:Quincey Koziol2002-08-231-0/+14
| | | | | | | | | | | | | | Bug fix Description: Correctly apply filters (like compression) to fill values in chunks that are pre-allocated. This is OK in parallel also, since all the chunks are identical at this point and any chunk may be written by any process. Platforms tested: FreeBSD 4.6 (sleipnir) w/parallel
* [svn-r5875] Purpose:Quincey Koziol2002-08-141-31/+55
| | | | | | | | | | | | | | Additional regression tests & bug fixes Description: There was no testing for the H5Dget_storage_size function and it seemed to be having problems with compressed, chunked datasets, so write some tests to verify that its working correctly. Also, fix case for allocating storage early for chunked datasets Platforms tested: FreeBSD 4.6 (sleipnir) serial & parallel
* [svn-r5871] Purpose:Quincey Koziol2002-08-121-4/+1
| | | | | | | | | | | | | | | | 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)
* [svn-r5867] Purpose:Quincey Koziol2002-08-091-18/+28
| | | | | | | | | | | | | 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
* [svn-r5842] Purpose:Quincey Koziol2002-08-081-158/+137
| | | | | | | | | | | | | | | | 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.
* [svn-r5839] Purpose:Quincey Koziol2002-07-311-1/+1
| | | | | | | | | | | | | | | Code cleanup Description: Move operations on each type of selection into the source code file for each selection type (all->H5Sall.c, hyperslab->H5Shyper.c, etc.) Remove central H5S_select_<foo> operations, instead calling the operations through function pointers in each selection (a much more object-oriented approach). Platforms tested: FreeBSD 4.6 (sleipnir)
* [svn-r5799] Purpose:Quincey Koziol2002-07-151-11/+33
| | | | | | | | | | | | 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
* [svn-r5674] Purpose:Quincey Koziol2002-06-191-3/+4
| | | | | | | | | | Code cleanup Description: Removed more compiler warnings, etc. Platforms tested: Linux 2.2.x (eirene) w/parallel
* [svn-r5662] Purpose:Quincey Koziol2002-06-181-105/+11
| | | | | | | | | | | | | | | | | 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)
* [svn-r5571] Purpose:Quincey Koziol2002-06-101-4/+5
| | | | | | | | | | | 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
* [svn-r5530] Purpose:Bill Wendling2002-06-041-1/+1
| | | | | | | | | | | | | | | 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)
* [svn-r5471] Purpose:Quincey Koziol2002-05-291-25/+27
| | | | | | | | | | | | | | | | 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.
* [svn-r5467] Purpose:Quincey Koziol2002-05-281-11/+19
| | | | | | | | | | | | | | | | | | | | | | | | 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)
* [svn-r5434] Purpose:Quincey Koziol2002-05-171-26/+39
| | | | | | | | | | | | | Code improvement. Description: Propagated the "fill time" property into the parallel chunk allocation routine, allowing it to avoid writing fill values to each new chunk allocated. This improves the performance of chunked datasets in parallel I/O to be on par with contiguous datasets again (on modi4). Platforms tested: IRIX64 6.5 (modi4)
* [svn-r5429] Purpose:Quincey Koziol2002-05-171-65/+102
| | | | | | | | | | | | | | | | | | | | | Bug fix/Code improvement. Description: Currently, the chunk data allocation routine invoked to allocate space for the entire dataset is inefficient. It writes out each chunk in the dataset, whether it is already allocated or not. Additionally, this happens not only when it is created, but also anytime it is opened for writing, or the dataset is extended. Worse, there's too much parallel I/O syncronization, which slows things down even more. Solution: Only attempt to write out chunks that don't already exist. Additionally, share the I/O writing between all the nodes, instead of writing everything with process 0. Then, only block with MPI_Barrier if chunks were actually created. Platforms tested: IRIX64 6.5 (modi4)
* [svn-r5271] Purpose:Quincey Koziol2002-04-261-1/+5
| | | | | | | | | | | | | | | | Bug Fix. Description: When the fill value for a dataset is not set, the size is set to zero, causing problems with filling unused areas in previously defined chunks (i.e. when the dataset shrinks in size) Solution: Use the size of the elements in the dataset directly, instead of relying on the size of the fill value (which must be the same size). Platforms tested: FreeBSD 4.5 (sleipnir)
* [svn-r5259] Purpose:Quincey Koziol2002-04-251-180/+143
| | | | | | | | | | | | | | | | Code cleanup Description: Previously, the I/O pipeline (pline), external file list (efl) and fill- value (fill) structs were passed down the raw data function call chain, even into and/or through functions which didn't use them. Since all three of these pieces of information are available from the dataset creation property list, just pass the dataset creation property list down the function call chain and query for the information needed in a particular function. Platforms tested: FreeBSD 4.5 (sleipnir)
* [svn-r5230] Purpose:Quincey Koziol2002-04-231-57/+76
| | | | | | | | | | | | | | | | | Code cleanup Description: Clean up the H5B_iterate code to not have a single hard-wired iterator for each interface which uses a B-tree, instead accept a function pointer which determines the callback function. This allows additional iterator callbacks to be defined without requiring additional H5B functions to be created. In that spirit, remove the H5B_prune_by_extent call and convert the H5F_istore callback routine for it into a callback routine for H5B_iterate. Platforms tested: FreeBSD 4.5 (sleipnir)
* [svn-r5219] Purpose:Quincey Koziol2002-04-221-1/+1
| | | | | | | | | | Code cleanup Description: Clean up warnings from gcc 3.1 Platforms tested: FreeBSD 4.5 (sleipnir)
* [svn-r5203] Purpose:Quincey Koziol2002-04-181-374/+362
| | | | | | | | | | Code cleanup Description: Re-indented new code to match coding style of rest of library. Platforms tested: FreeBSD 4.5 (sleipnir)
* [svn-r5200] Purpose:Quincey Koziol2002-04-181-20/+17
| | | | | | | | | | Code Cleanup Description: Clean up compiler warnings from the last bunch of checkins Platforms tested: FreeBSD 4.5 (sleipnir)
* [svn-r5168] Pedro Vicente Nunes2002-04-111-49/+589
| | | | | | | | | | | | | | | | | | | | | | Purpose: H5Dset_extent API function Description: 1 new public function: H5Dset_extent, that allows shrinking a dataset several private functions that free the previously allocated chunks H5F_istore_prune_by_extent, H5B_prune_by_extent : removes the chunks H5F_istore_initialize_by_extent : initializes them with the fill value H5S_select_fill is used to fill the selection in the memory buffer Platforms tested: Windows 2000 SUN( arabica) LINUX (eirene) IRIX64 (modi4)
* [svn-r5142] ./hdf5-devel/src/H5Fistore.cRobb Matzke2002-04-051-3/+3
| | | | | | | | | Minor h5ls bugfix for compound types with array members. (Similar changes shortly for 1.4 branch). 2002-04-02 10:22:55 Robb Matzke <matzke@arborea.spizella.com> * H5F_istore_read: Realigned a couple of comments.
* [svn-r5130] Purpose:Quincey Koziol2002-04-021-20/+16
| | | | | | | | | | | | | | | | | | | | | | Bug Fix & Feature Description: The selection offset was being ignored for optimized hyperslab selection I/O operations. Additionally, I've found that the restrictions on optimized selection I/O operations were too strict and found a way to allow more hyperslabs to use the optimized I/O routines. Solution: Incorporate the selection offset into the selection location when performing optimized I/O operations. Allow optimized I/O on any single hyperslab selection and also allow hyperslab operations on chunked datasets. Platforms tested: FreeBSD 4.5 (sleipnir)
* [svn-r5109] ./hdf5-devel/src/H5Fistore.cRobb Matzke2002-03-281-1/+1
| | | | | Merge of name component length limit bugfix from 1.4 branch. A couple of very minor typos fixed.
* [svn-r4948] Purpose:Quincey Koziol2002-02-131-1/+2
| | | | | | | | | | | | | Bug fix Description: When a block was preempted from the chunk cache, it is possible that one of the pointers in the algorithm is invalidated and would generate a core dump. Solution: Re-calculate the internal pointer and move the the preemption after the re-calc. Platforms tested: FreeBSD 4.5 (sleipnir)
* [svn-r4891] Purpose:Quincey Koziol2002-01-311-88/+92
| | | | | | | | | | | | | | | Code speedup Description: Chunking I/O routines are reading in an entire chunk when performing I/O on the chunk, even if the chunk will be too large to cache. Solution: If the chunk is too large to cache, uncompressed and has been allocated space in the file, or if we are using the MPI-I/O VFD, perform the I/O directly to the chunk, instead of reading the chunk into memory, updating it and immediately writing the entire chunk back out. Platforms tested: FreeBSD 4.5 (sleipnir) (using serial access) and IRIX64 6.5 (modi4) (using parallel access with MPI-I/O)
* [svn-r4656] Purpose:Quincey Koziol2001-11-271-2/+4
| | | | | | | | | Bug fix Description: Moved some executable code out of an assert() and check the results of the code with an assert(). Platforms tested: Solaris 2.6 (baldric)
* [svn-r4643] Purpose:Quincey Koziol2001-11-271-17/+25
| | | | | | | | | | | | | | | | | | | | | | 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)
* [svn-r4621] Purpose:Quincey Koziol2001-11-201-5/+9
| | | | | | | | Code cleanup Description: Get rid of IDs from internal function calls. Platforms tested: FreeBSD 4.4 (hawkwind)
* [svn-r4482] Purpose:Quincey Koziol2001-09-261-2/+2
| | | | | | | | | | | | | | | | | | | | | | 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)
* [svn-r4473] Purpose:Quincey Koziol2001-09-251-1/+1
| | | | | | | | | | | | | | | | | | | | | Code cleanup for better compatibility with C++ compilers Description: C++ compilers are choking on our C code, for various reasons: we used our UNUSED macro incorrectly when referring to pointer types we used various C++ keywords as variables, etc. we incremented enum's with the ++ operator. Solution: Changed variables, etc.to avoid C++ keywords (new, class, typename, typeid, template) Fixed usage of UNUSED macro from this: char UNUSED *c to this: char * UNUSED c Switched the enums from x++ to x=x+1 Platforms tested: FreeBSD 4.4 (hawkwind)
* [svn-r4355] Purpose:Quincey Koziol2001-08-141-51/+51
| | | | | | | | | | | | | | | | | | | | | | Code cleanup (sorta) Description: When the first versions of the HDF5 library were designed, I remembered vividly the difficulties of porting code from a 32-bit platform to a 16-bit platform and asked that people use intn & uintn instead of int & unsigned int, respectively. However, in hindsight, this was overkill and unnecessary since we weren't going to be porting the HDF5 library to 16-bit architectures. Currently, the extra uintn & intn typedefs are causing problems for users who'd like to include both the HDF5 and HDF4 header files in one source module (like Kent's h4toh5 library). Solution: Changed the uintn & intn's to unsigned and int's respectively. Platforms tested: FreeBSD 4.4 (hawkwind)
* [svn-r4324] Purpose:Quincey Koziol2001-08-101-18/+11
| | | | | | | | | | | | | | | | | | | | | | | | New Features! Description: Start migrating the internal use of property lists in the library from the older implementation to the new generic property lists. Currently, only the dataset transfer property lists are migrated to the new architecture, all the rest of the property list types are still using the older architecture. Also, the backward compatibility features are not implemented yet, so applications which use dataset transfer properties may need to make the following changes: H5Pcreate(H5P_DATASET_XFER) -> H5Pcreate_list(H5P_DATASET_XFER_NEW) and H5Pclose(<a dataset transfer property list>) -> H5Pclose_list(id) This still may have some bugs in it, especially with Fortran, but I should be wrapping up those later today. Platforms tested: FreeBSD 4.4 (hawkwind)
* [svn-r4181] Purpose:Quincey Koziol2001-07-101-14/+13
| | | | | | | | | Bug Fix, Code Cleanup, Code Optimization, etc. Description: Fold in the hyperslab speedups, clean up compile warnings and change a few things from using 'unsigned' or 'hsize_t' to use 'size_t' instead. Platforms tested: FreeBSD 4.3 (hawkwind), Solaris 2.7 (arabica), Irix64 6.5 (modi4)
* [svn-r4038] Purpose:Quincey Koziol2001-06-211-3/+3
| | | | | | | | | | | | | Code clean/bug fix Description: H5FL (free-list manager) code currently is taking an hsize_t as the size of a memory block to allocate. On many machines, the size of an hsize_t is greater than the size of a size_t, potentially leading to incorrect memory allocations in rare circumstances. Solution: Changed hsize_t parameters and variables to size_t. Platforms tested: FreeBSD 4.3 (hawkwind)
* [svn-r4022] Purpose:Bill Wendling2001-06-191-11/+11
| | | | | | | | | Code Cleanup Description: Changed POSIX function calls to the HD* way of doing things. Checked with checkposix and tested on Linux. Platforms tested: Linux
* [svn-r3781] Purpose:Bill Wendling2001-04-051-14/+14
| | | | | | | | | | | | | | | | | | Update Description: Changed #include <hdf_file.h> construct to #include "hdf_file.h" so that the GNU compiler can more easily pick up the dependencies which it places in the .depend and Dependencies files. Also regenerated the Dependencies to go along with this. Platforms tested: Linux
* [svn-r3252] Purpose:Quincey Koziol2001-01-091-681/+689
| | | | | | | | | | | | | Code cleanup. Description: Fixed _lots_ (I mean _tons_) of warnings spit out by the gcc with the extra warnings. Including a few show-stoppers for compression on IRIX machines. Solution: Changed lots of variables' types to more sensible and consistent types, more range-checking, more variable typecasts, etc. Platforms tested: FreeBSD 4.2 (hawkwind), IRIX64-64 (modi4)
* [svn-r2807] ./hdf5/src/H5Fistore.cRobb Matzke2000-11-071-1/+4
| | | | | | * 2000-11-07 Robb Matzke <matzke@llnl.gov> (H5F_istore_preempt) Returns error if call to H5F_istore_flush() failed.
* [svn-r2722] Purpose:Quincey Koziol2000-10-241-1/+1
| | | | | | | | | | Feature symmetry Description: A while ago I needed to get the 'type' of data being accessed during writes to the VFL driver, so I put in code to get the information down there. Albert asked for the same information during reads, so I've added that in. Tested: FreeBSD 4.1.1 (hawkwind)
* [svn-r2652] Purpose:Quincey Koziol2000-10-101-5/+8
| | | | | | | | | | | | | | | Maintainance & performance enhancements Description: Re-arranged header files to protect private symbols better. Changed optimized regular hyperslab I/O to compute the offsets more efficiently from previous method of using matrix operations. Added sequential I/O operations at a more abstract level (at the same level as H5F_arr_read/write), to support the optimized hyperslab I/O. Platforms tested: Solaris 2.6 (baldric) & FreeBSD 4.1.1 (hawkwind)
* [svn-r2495] More type of data parameter additions for H5F_block_write.Quincey Koziol2000-08-311-1/+1
|
* [svn-r2476] Added free lists to track various data structures in memory, to ↵Quincey Koziol2000-08-161-2/+6
| | | | | | reduce malloc abuse.
* [svn-r2191] Changed hash function for caching to avoid as many hash clashes.Quincey Koziol2000-04-221-15/+8
|
* [svn-r2165] Fixed last batch of problems when using free-lists on the SGI ↵Quincey Koziol2000-04-201-1/+1
| | | | | | machines. They should (hopefully) work on all platforms again now.
* [svn-r2162] Various small fixes to address SGI compiler warnings.Quincey Koziol2000-04-191-2/+2
|