summaryrefslogtreecommitdiffstats
path: root/src/H5F.c
Commit message (Collapse)AuthorAgeFilesLines
* [svn-r9460] Purpose:Quincey Koziol2004-10-261-319/+319
| | | | | | | | | | | | Code cleanup & optimization Description: Bring back new metadata cache code from development branch. Platforms tested: FreeBSD 4.10 (sleipnir) w/parallel Solaris 2.7 (arabica) Linux 2.4 (heping) w/C++ & FORTRAN
* [svn-r9334] James Laird2004-09-281-7/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Purpose: Feature Description: (Same change to release branch) Datatypes and groups now use H5FO "file object" code that was previously only used by datasets. These objects will hold a file open if the file is closed but they have not yet been closed. If these objects are unlinked then relinked, they will not be destroyed. If they are opened twice (even by two different names), both IDs will "see" changes made to the object using the other ID. When an object is opened using two different names (e.g., if a dataset was opened under one name, then mounted and opened under its new name), calling H5Iget_name() on a given hid_t will return the name used to open that hid_t, not the current name of the object (this is a feature, and a change from the previous behavior of datasets). Solution: Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's, and H5G_t's into a "shared" struct and a private struct. The shared structs (H5D_shared_t, etc.) hold the object's information and are used by all IDs that point to a given object in the file. The private structs are pointed to by the hid_t and contain the object's group entry information (including its name) and a pointer to the shared struct for that object. This changed the naming of structs throughout the library (e.g., datatype->size is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip. Platforms tested: Visual Studio 7, sleipnir, arabica, verbena Misc. update:
* [svn-r8985] Purpose:Quincey Koziol2004-08-021-165/+18
| | | | | | | | | | | | | | | | | | | | | Bug fixes & code cleanups Description: Backport MPI-I/O changes from the development branch to the release branch in preparation for bringing Kent's collective chunk I/O changes back. Removed last vestiges of FPHDF5 from this branch, as it was never working here. Various code cleanups & syncrontizations to better align with development branch code and reduce diffs. Regenerate dependencies. Platforms tested: FreeBSD 4.10 (sleipnir) w/parallel IRIX64 6.5 (modi4) h5committested
* [svn-r8893] Purpose:Quincey Koziol2004-07-161-2/+1
| | | | | | | | | | | | | | Code cleanup Description: Clean up a bunch of warnings and bring new code better inline with current library coding practice. Platforms tested: FreeBSD 4.10 (sleipnir) w/parallel Too minor to require h5committest Misc. update:
* [svn-r8854] Purpose:Quincey Koziol2004-07-101-7/+7
| | | | | | | | | | | | | | | | | | | | Code optimization Description: Refactor B-tree code to extract all common information for a B-tree into a shared structure that is pointed to by all the nodes in tree (instead of being included in each node). Also re-order B-tree node comparison checks for chunked datasets to check for >= the upper node first, since the comparison is a bit "heavy" and this check is more likely to succeed when you are adding records to the dataset. Platforms tested: Solaris 2.7 (arabica) FreeBSD 4.10 (sleipnir) w/parallel Too minor to require h5committest (also, recent h5dump commits have broken testing...)
* [svn-r8846] Purpose:Quincey Koziol2004-07-091-9/+5
| | | | | | | | | | | | | | | | | | Bug fix Description: The "shared" raw B-tree node can get freed before all the B-tree nodes had been flushed out to disk and released by the cache. Solution: Implement a simple reference counting wrapper for objects in the library and use it to hold the shared raw B-tree nodes so they aren't freed before all references to them in memory are released. Platforms tested: Solaris 2.7 (arabica) FreeBSD 4.10 (sleipnir) IRIX64 6.5 (modei4)
* [svn-r8824] Purpose:Quincey Koziol2004-07-071-0/+41
| | | | | | | | | | | | | | | Code optimization Description: Since the raw B-tree nodes are the same size and only used when reading in or writing out a B-tree node, move raw B-tree node buffer from being per node to a single node that is shared among all B-tree nodes of a particular tree, freeing up a lot of space and eliminating lots of memory copies, etc. Platforms tested: Solaris 2.7 (arabica) FreeBSD 4.10 (sleipnir) w/parallel Too minor to require h5committest
* [svn-r8819] Purpose: Potential bug fixRaymond Lu2004-07-071-8/+11
| | | | | | | | Description: In H5Fget_filesize, file size was returned as haddr_t. Solution: Return file size as hsize_t and parameter for Fortran. Platforms tested: eirene
* [svn-r8802] Purpose:Quincey Koziol2004-07-031-13/+6
| | | | | | | | | | | | | | | Code optimization Description: Set up datatype ID for dataset's datatype on disk. This allows us to avoid repeatedly copying the datatype when an ID is needed. Also, clean up a few warnings in various other places. Platforms tested: Solaris 2.7 (arabica) FreeBSD 4.10 (sleipnir) w/parallel Too minor to require h5committest
* [svn-r8770] Raymond Lu2004-06-301-0/+52
| | | | | | | | | | | Purpose: New feature and its test Description: Added API H5Fget_name. It returns the name of file by object ID(file, group, dataset, named datatype, attribute) which belongs to the file. filename.c tests this function. Platforms tested: h5committest Misc. update: MANIFEST, RELEASE.txt
* [svn-r8761] Purpose:Quincey Koziol2004-06-291-1/+1
| | | | | | | | | | | | | Code cleanup & small bug fix Description: Regenerate dependency files Add htri_t as separate type from hbool_t for code tracing purposes. Platforms tested: FreeBSD 4.10 (sleipnir) w/parallel too minor to require h5committest
* [svn-r8743] *** empty log message ***Raymond Lu2004-06-251-0/+39
|
* [svn-r8649] Purpose:Quincey Koziol2004-06-101-5/+3
| | | | | | | | | | | | | Code optimization Description: Eliminate some operations through temporary variables in H5F_addr_encode. Eliminate some redundant memset()'s of structures that will be completely overwritten in the variable-length datatype code. Platforms tested: Solaris 2.7 (arabica) FreeBSD 4.10 (sleipnir) w/parallel
* [svn-r8614] Purpose:Quincey Koziol2004-06-051-167/+307
| | | | | | | | | | | | | | | Refactor code Description: Move chunk and contiguous cached raw data from file information to dataset information. This simplifies a number of internal interfaces, aligns the code with it's purpose better and should allow more optimizations to the chunked data I/O performance. Platforms tested: Solaris 2.7 (arabica) FreeBSD 4.10 (sleipnir) h5committest
* [svn-r8601] Purpose:Quincey Koziol2004-05-311-357/+387
| | | | | | | | | | | | | | | | Code optimization & cleanup Description: Don't recompute the internal index value for looking up the chunk in the hash table, just use the value already computed from iterating through the chunks. Also, back-port some of the various cleanups to the source code from the development branch, to make diffing the code easier. Platforms tested: Solaris 2.7 (arabica) FreeBSD 4.9 (sleipnir) w/parallel
* [svn-r8403] Purpose:Pedro Vicente Nunes2004-04-221-1/+2
| | | | | | | | | | | | | | | | bug fix Description: a missd?\127?\127ing declaration of the new function H5I_get_file_id was causing a eror on free bsd Solution: aadd the declaration Platforms tested: linux Misc. update:
* [svn-r8397] Purpose:Pedro Vicente Nunes2004-04-201-1/+67
| | | | | | | | | | | | | | | | | | | | h5repack in 1.6 Description: 2 functions we re added to /src: H5Premove filter and H5Iget_file_id Solution: Platforms tested: linux solaris AIX Misc. update:
* [svn-r8317] Purpose:Quincey Koziol2004-04-071-0/+4
| | | | | | | | | | | | Code optimization Description: Query the dataset creation and transfer properties less often. Platforms tested: Solaris 2.7 (arabica) FreeBSD 4.9 (sleipnir) w/parallel h5committested
* [svn-r8288] Purpose:Quincey Koziol2004-03-301-1/+1
| | | | | | | | | | | | | | 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
* [svn-r8125] Purpose:Quincey Koziol2004-01-311-12/+0
| | | | | | | | | | | | | | | Bug fix/optimization Description: Address slowdown in MPI-I/O file metadata operations that was introduced mid-stream. We now _require_ a POSIX compliant parallel file system for the MPI-I/O file driver (as well as for the MPI-POSIX file driver). Also optimized file open operation when the file is being created by reducing the number of collective & syncronizing calls. Platforms tested: FreeBSD 4.9 (sleipnir) w/parallel h5committest
* [svn-r8039] Purpose:Quincey Koziol2004-01-081-25/+25
| | | | | | | | | | | | | | | | | | | | Bug fix Description: When two property lists are compared, the H5Pequal routine was just comparing the raw information for the property values. This causes problems when the raw information contains pointers to other information. Solution: Allow a 'compare' callback to be registered for properties, so that a user application get perform the comparison itself, allowing for "deep" compares of the property value. This was exported to the H5Pregister & H5Pinsert routines in the development branch, but not the release branch. Platforms tested: FreeBSD 4.9 (sleipnir) h5committest
* [svn-r7918] Purpose:Quincey Koziol2003-12-061-31/+31
| | | | | | | | | | | | | | | | | | | 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)
* [svn-r7861] Purpose:Quincey Koziol2003-11-201-0/+2
| | | | | | | | | | | | | | | | | Bug fix Description: Our previous "optimization" of metadata writing which only wrote metadata from one process was abusing MPI-I/O and after some consultation with Rob Ross and Rajeev Thakur, Albert & I have come up with a solution... Solution: Instead of only writing from one process, issue a collective write operation with all processes, for metadata writes. Platforms tested: FreeBSD 4.9 (sleipnir) h5committest
* [svn-r7726] Purpose:Quincey Koziol2003-10-241-69/+54
| | | | | | | | | | | | Code cleanup Description: Refactored handlier of VFL drivers in file access and data transfer property lists in order to simplify and unify the code dealing with them. Platforms tested: FreeBSD 4.9 (sleipnir) too minor to require h5committest
* [svn-r7560] Purpose:Quincey Koziol2003-10-071-0/+39
| | | | | | | | | | | | | | Add feature Description: Add H5Fget_freespace() routine, to check the amount of free space in a file. This information is only valid until the file is closed currently, however (until we start recording the free space information in the file itself). Platforms tested: FreeBSD 4.9 (sleipnir) h5committest
* [svn-r7458] Purpose:Quincey Koziol2003-09-101-22/+25
| | | | | | | | | | | | | | | | | | Bug fix. Description: Correct bug where a file opened twice, once with read-write permission and once with read-only permission would cause closing the file with the read-only file ID to fail because it was trying to flush information out of the file. Solution: Check the permissions on file IDs that are being closed and only flush when the particular file ID was opened with write permission. Platforms tested: FreeBSD 4.9 (sleipnir) too small to need h5committest
* [svn-r7442] Purpose:Quincey Koziol2003-09-041-2/+9
| | | | | | | | | | | | | | | | | Bug fix Description: The VFL driver ID in a file's access proprty list wasn't being reference counted correctly, causing the VFL driver to get prematurely closed after several calls to "H5Pget_access_plist->H5Pclose". Solution: Increment VFL driver ID reference count when copy of file's access property list is made in H5Pget_access_plist() Platforms tested: FreeBSD 4.9 (sleipnir) h5committest
* [svn-r7427] Purpose:Quincey Koziol2003-08-281-5/+50
| | | | | | | | | | | | | | | | | Bug fix Description: When datasets are deleted from a file, they are removed from the sieve buffer, but instead of invalidating only the part of the sieve buffer affected, the sieve buffer code would throw away the entire sieve buffer, potentially including other raw data in the buffer that hadn't been written to disk yet. Solution: Improve the sieve buffer clearing code to handle partial invalidations. Platforms tested: FreeBSD 4.8 (sleipnir) h5committest
* [svn-r7363] Purpose:Quincey Koziol2003-08-141-1/+14
| | | | | | | | | | | | | Bug fix Description: Allow a user block to be "inserted" in front of a file (probably by writing a validly-sized userblock to a new file and then appending another HDF5 file to the new file). Platforms tested: FreeBSD 4.8 (sleipnir) h5committested
* [svn-r7234] Purpose:Quincey Koziol2003-07-161-65/+99
| | | | | | | | | | | | | | | | | | | | Bug fix Description: When a non-default indexed storage B-tree internal 'K' value is set by the user, the chunked datasets created in that file (until it is closed) use the user's 'K' value and the data can be accessed correctly, but the 'K' value is not stored in the file. However, once the file is closed and re-opened, the non-default 'K' value is lost and the data in the chunked datasets will not be able to be accessed correctly. Solution: Store the indexed storage B-tree internal 'K' value in the superblock. Platforms tested: FreeBSD 4.8 (sleipnir) h5committest
* [svn-r7176] Purpose:Quincey Koziol2003-07-071-2/+2
| | | | | | | | | | | | | | | | | | Bug fix Description: Boot block checksum was being used instead of file driver info checksum in one calculation. Also, the offset of the file driver info was hard-coded to the end of the superblock, instead of using the file driver offset variable. Solution: Changed to use file driver checksum and file driver offset variable. Platforms tested: FreeBSD 4.8 (sleipnir) too small for h5committest
* [svn-r7146] Purpose:Albert Cheng2003-07-031-1/+1
| | | | | | | | | | | | | | | update for release Description: Set the version information to 1.6.0-pre1 to get ready for v1.6 release. (Not sure why H5F.c got changed--probably done gmake automatically during testing.) Platforms tested: h5committested. Misc. update:
* [svn-r7072] Purpose:Quincey Koziol2003-06-201-15/+16
| | | | | | | | | | | | | | | | | | | Bug fix & code cleanup Description: The H5F_get_objects_cb was returning SUCCEED (i.e. 0) to indicate that the ID iterator should exit early, but the ID iterator needs a non-zero return from a callback to exit early. Also, track change to ID iterator "operator data" to be non-const Solution: Changed H5F_get_objects_cb() to return "TRUE" instead, to indicate an early exit for the ID iterator. Platforms tested: FreeBSD 4.8 (sleipnir) h5committest
* [svn-r7057] Purpose:Quincey Koziol2003-06-181-90/+137
| | | | | | | | | | | | | | | | | | | | | | | | | | Bug fix, refactored code Description: Fixed closing objects for "strong" file degree, which previously would sometime attempt to close the same object twice (when a named datatype and a dataset which used it were both left open before the file was closed). Stopped datatype iteration from querying for the group entry of non-named datatypes. Added attributes to the list of objects that can be queried by H5Fget_obj_count and H5Fget_obj_ids, since they can hold open a file also. Took a suggestion from Robb to return the number of open objects in the return values of H5Fget_obj_count and H5Fget_obj_ids. Also, added a "max_objs" parameter to the H5Fget_obj_ids function, so that it can work well with staticly allocated arrays. Platforms tested: FreeBSD 4.8 (sleipnir) h5committest
* [svn-r6878] Purpose:Quincey Koziol2003-05-151-15/+18
| | | | | | | | | | | Code cleanup Description: Limit the scope on more function prototypes/macros/typedefs. Platforms tested: FreeBSD 4.8 (sleipnir) h5committest not necessary.
* [svn-r6837] Purpose:Quincey Koziol2003-05-081-1/+1
| | | | | | | | | | | | | | | Code cleanup. Description: Move many package or internal function prototypes and macro definitions into tighter scope according to their current use. Added more comments where appropriate. Eliminate ancient, unused functions. Added a couple "accessor" functions to get parts of data structures which were moved out of scope. Platforms tested: h5committested
* [svn-r6776] Purpose:Pedro Vicente Nunes2003-04-291-3/+0
| | | | | | | | | | | | | | | removed and change comments Description: removed the modification comment about the while loop, it is not sufficiently important to be there changed the "Id to name" comment in the test description, it was incorrecly about other thing Solution: Platforms tested: none , just comments Misc. update:
* [svn-r6724] Purpose:Bill Wendling2003-04-211-0/+10
| | | | | | | | | | | | | | | Commenting Description: Added comments to the H5Fget_access_plist function to remind people that if they are going to be overwriting a value in the plist which was originally opened and inserted into the plist, then it should be closed before overwriting that value. Platforms tested: Modi4 (Only comment change, so no h5committest needed). Misc. update:
* [svn-r6721] Purpose:Pedro Vicente Nunes2003-04-211-2/+6
| | | | | | | | | | | | | | | | | | bug fix Description: in the close strong case in H5F_close there was a do..while loop that executed when nfiles==0, calling malloc(0) this was causing a failure in the close call in Code Warrior, that returns 0 in the call pt=malloc(0) Solution: replaced with a while loop (checks the condition before executing) Platforms tested: code warrior, linux Misc. update:
* [svn-r6719] Purpose:Bill Wendling2003-04-211-0/+8
| | | | | | | | | | | | | | | | | | | | | Bug Fix Description: A resource leak happened if the H5Fget_access_plist() function was called. What was happening: the driver ID and info parts of the property list copied in H5Fget_access_plist were being overwritten, but those properties were copied initially, so we lost information. Solution: Before copying over those values, call the H5F_acs_close() function to close those values. Platforms tested: Modi4 (Parallel & Fortran) Arabica (Fortran) Verbena (Fortran & C++) Misc. update:
* [svn-r6672] Purpose:Bill Wendling2003-04-151-1/+1
| | | | | | | | | | | | | | | | | | | | | | Bug Fix Description: When calling "H5F_get_access_plist" after setting the FAPL to a multi driver, and then trying to get the multi driver back, it resulted in returing a "NULL" value instead of the driver. Solution: The stuff at the location pointed to by the driver was being stored into the property list and not the pointer to the driver itself. Changed the "H5P_set" code so that it stores the pointer instead of the driver...(Added an "&" in from of the "driver_info" variable). Platforms tested: Arabica (Fortran) Burrwhite (Fortran & C++) Modi4 (Fortran & Parallel) Misc. update:
* [svn-r6648] Purpose:Quincey Koziol2003-04-141-2/+41
| | | | | | | | | | | | | | | | | | New code. Description: Added internal routine to clear the sieve buffer if it overlaps a address- length range in the file. This is used currently to clear the sieve buffer when an object is deleted from the file. 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).
* [svn-r6556] Purpose:Bill Wendling2003-04-011-26/+49
| | | | | | | | | | | | | | | | | | | 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:
* [svn-r6527] Purpose:Bill Wendling2003-03-271-53/+24
| | | | | | | | | | | | | | | | | | | | | | | 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:
* [svn-r6519] Purpose:Quincey Koziol2003-03-221-29/+29
| | | | | | | | | | | | | Bug fix/code cleanup/new feature Description: Fix h5debug to work correctly again, with all the changes over the past few months. Improved and cleaned up debugging output available in h5debug. Platforms tested: FreeBSD 4.7 (sleipnir)
* [svn-r6514] Purpose:Bill Wendling2003-03-201-5/+14
| | | | | | | | | | | | | | | | | | | | | | | | | 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:
* [svn-r6505] Purpose:Bill Wendling2003-03-191-49/+157
| | | | | | | | | | | | | | | | | Update Description: Have the FPHDF5 module initialized on startup. Have only the captain process perform certain functions (like flushing during an F_close call or allocating the superblock). H5Fistore needed a few checks to see if it was working with an FPHDF5 driver. Done similarly to how MPI and MPIPOSIX drivers are checked.. Platforms tested: Linux, Modi4, Sol Misc. update:
* [svn-r6497] Purpose:Quincey Koziol2003-03-191-12/+12
| | | | | | | | | | | | | | | | | | | 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:
* [svn-r6496] Purpose:Bill Wendling2003-03-191-69/+122
| | | | | | | | | | | | | | | | | | | | | | 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.
* [svn-r6388] Purpose:Quincey Koziol2003-02-101-1/+1
| | | | | | | | | | | | | 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