summaryrefslogtreecommitdiffstats
path: root/src/H5Fint.c
Commit message (Collapse)AuthorAgeFilesLines
* Rename the deferred-free queues. There are two of them, and the names I usedDavid Young2020-02-061-1/+1
| | | | | | | | | | | | | | for them did not help me keep track of what they were for. For brevity, I will call a deferred free record a "defree" in the code. The deferred_free_queue_t becomes a lower_defree_queue_t, and each record on the queue becomes a lower_defree_t. A lower_defree_t tracks one deferred free on the lower VFD---that is, the one under the SWMR VFD. The old_image_queue_t becomes a shadow_defree_queue_t, and a record therein is a shadow_defree_t. A shadow_defree_t tracks one deferred free on the shadow file.
* Use the "tail queue" from queue(3) for the delayed free list of shadow images.David Young2019-12-191-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Delete the little-used free-list length, dl_len, and just count up the list entries when diagnostic code needs the length. Extract the code for deferring shadow-image free into a new subroutine, `vfd_swmr_idx_entry_defer_free()`. Rename type `deferred_free_head_t` as `deferred_free_queue_t`. Remove the disused H5F__LL_{REMOVE,PREPEND} macros. Add some diagnostic code and #if 0'd assertions. Change `qsort(ptr, n, sizeof(type), cmp)` to `qsort(ptr, n, sizeof(*ptr), cmp)`. Use a `continue` statement to lower a staircase in H5F_update_vfd_swmr_metadata_file(). Add vfd_swmr_mdf_idx_entry_remove() to delete a shadow index entry and add the image at that entry to a deferred-free list. Call it whenever a page is evicted. Update the comment in H5PB_remove_entry() that asks if we need to remove shadow index entries: now we *do* remove them. Remove shadow index entries in H5PB__evict_entry(). Also mention in the comment that the index-entry removal performed by H5PB__evict_entry() ought to be sufficient.
* Remove disused duplicate of H5F__idx_entry_cmp(). I probably introduced thatDavid Young2019-12-131-34/+0
| | | | | by accident when I merged Vailin's changes that moved some functions from one file to another.
* Merge all of my changes from merge-back-to-feature-vfd_swmr-attempt-1,David Young2019-12-091-198/+495
| | | | | | | | including the merge of `hdffv/hdf5/develop`, back to the branch that Vailin and I share. Now I need to put this branch on a fork with a less confusing name than vchoi_fork!
* Fix for punch list #28:Vailin Choi2019-11-201-46/+22
| | | | | | Given that the VFD SWMR configuration FAPL property is set, the writer field must be consistent with the flags passed in the H5Fopen() (either H5F_ACC_RDWR for the VFD SWMR writer, or H5F_ACC_RDONLY for the VFD SWMR readers).
* Changes for punch list #4: Add support for opening mulitple files in either ↵Vailin Choi2019-11-201-3/+29
| | | | | | VFD SWMR writer or reader mode. See EOT queue in section 3.2.2 and 3.3 and 3.3.2 in the RFC. Update punch list with items completed and in progress.
* Fix for punch list #9 Move VFD SWMR H5F code to its own file: H5Fvfd_swmr.c.vchoi2019-11-151-1761/+3
|
* Modifications for the following items in the punch list:Vailin Choi2019-11-141-2/+2
| | | | | | | | | (A) #5: Add the "pb_expansion_threshold" field to the "H5F_vfd_swmr_config_t" structure and update H5Pset_vfd_swmr_config() and H5Pget_vfd_swmr_config() accordingly (B) #13 bullet 2: Comment H5F_vfd_swmr_config_t in H5Fpublic.h properly (copied from John's description in the RFC) (C) Change the field name "vfd_swmr_writer" to "writer" in "struct H5F_vfd_swmr_config_t" (as indicated on page 11 in the RFC) and all references to it
* Use int64_t instead of uint64_t to avoid some warnings about signDavid Young2019-09-301-4/+4
| | | | conversion.
* Fix a typo: adress -> address.David Young2019-09-271-1/+1
|
* Fix a comment: I don't know what `*pbe_ptr` was. Refer to `page`, sinceDavid Young2019-09-261-1/+1
| | | | that seems to be the intention. No functional change intended.
* Rename local variable `delay_write_until` as `until`. ReduceDavid Young2019-09-261-11/+7
| | | | | parenthesization in an `if` condition. Join some lines. No functional change intended.
* SECOND_TO_NANOSECS is the name of a function, not a constant. Rename toDavid Young2019-09-261-8/+8
| | | | nanosecs_per_second. Ditto for the tenth-second constant.
* Commit to the clock_gettime() versions of VFD SWMR and delete theDavid Young2019-09-251-76/+4
| | | | | | gettimeofday() alternate. Perform nanoseconds arithmetic using uint64_t instead of long to avoid unwanted overflows on 32-bit systems like my i386 (!) development box.
* Consolidate VFD SWMR variable declarations in a new header file,David Young2019-08-281-0/+7
| | | | | | | | | | | | | | | H5FDvfd_swmr_private.h. Perform tick processing in FUNC_ENTER_API_NOCLEAR, where it was missing. Track the number of times the HDF5 library has been entered/exited through its public API. Only perform tick processing on the first entry and last exit. This stops us from performing tick processing in API calls invoked by application callbacks. Performing tick processing in nested API calls led to crashes. Note well: FUNC_LEAVE_API now performs tick processing even on an error exit! Previously, it did not. I'm not sure if the change is ok.
* In the error message, provide specific information that will help thedyoung2019-08-221-1/+1
| | | | developer fix the error.
* Quiet warnings, especially signed/unsigned casts.dyoung2019-08-221-25/+31
|
* Intermin commit to allow update from Vailin's recent changesmainzer2019-01-151-9/+188
|
* Interim checkin to allow Vailin to address assertion failure inmainzer2019-01-031-26/+280
| | | | | | | | | | | | | | | | the memory manager -- details shown below. Note that there are other issues as well -- this is not a working version. [mainzer@jelly test]$ ./vfd_swmr Testing Configure VFD SWMR with fapl PASSED Testing VFD SWMR configuration for the file and fapl PASSED Testing H5Fvfd_swmr_end_tick() for VFD SWMR PASSED Testing Create/Open/Flush an HDF5 file for VFD SWMR PASSED Testing Verify the metadata file for VFD SWMR writer vfd_swmr: H5MVsection.c:233: H5MV__sect_can_merge: Assertion `((sect1->sect_info.addr)!=((haddr_t)(long)(-1)) && (sect2->sect_info.addr)!=((haddr_t)(long)(-1)) && (sect1->sect_info.addr)<(sect2->sect_info.addr))' failed. Abort (core dumped) [mainzer@jelly test]$
* Fixes for issues #1 and #2 listed in John's email dated Dec 7 2018:Vailin Choi2018-12-191-4/+11
| | | | | | | | (1) Assertion failure in the vfd_swmr test (2) Reader error in the vfd swmr concurrent tests Also fixes for: (a) Use H5MV_alloc() to allocate space for md_pages_reserved when creating the metadata file in H5F__vfd_swmr_init() (b) Remove a multi-page (when vfd_swmr_writer is true) from the page buffer in H5MF_xfree()
* interim checkin of VFD SWMR writer EOT code.mainzer2018-12-071-50/+278
| | | | | Added code supporting first cut at the writer end of tick operations. Tested (to the extent possible) on charis and jelly.
* Merge branch 'feature/vfd_swmr' of ↵mainzer2018-11-191-6/+15
|\ | | | | | | | | | | | | https://bitbucket.hdfgroup.org/scm/~vchoi/my_hdf5_fork into feature/vfd_swmr This merge necessary to access Vailin's latest bug fixes and updates to the existing SWMR test code.
| * (A) Fixes for the assertion failures described in issue #2 (see John ↵Vailin Choi2018-11-141-6/+16
| | | | | | | | | | | | | | | | | | | | | | | | Mainzer's last checkin message): --src/H5PB.c: checks for size >= page size --src/H5MF.c: disable/enable page buffering in H5MF_tidy_self_referential_fsm_hack() --src/H5MFsection.c: call H5PB_remove_entry() for both raw/metadata pages in H5MF__sect_small_merge() (B) Port and modify existing concurrent swmr tests to VFD SWMR. Also modify the following: --remove flushes from VFD SWMR writer tests --set Nreaders to 0 in test/testvfdswmr.sh.in to test for writers only Please enter the commit message for your changes. Lines starting
* | local commit of first cut at vfd swmr writer EOT code.mainzer2018-11-191-105/+684
|/ | | | | | This is necessary to allow access to Vailin's recent changes This version passes non-swmr tests in a serial / debug build on charis.
* Initial checkin of page buffer re-implementation to support VFD SWMR.mainzer2018-11-041-4/+4
| | | | | | | | | | | | | | | | | | | | | | Tested serial / debug on Charis and Jelly. Two known issues: 1) New page buffer seems to expose issues in the accumulator code. For whatever reason, fheap with the new page buffer exposes corruption issues if the page buffer uses H5F__accum_read/write(), but the problems go away if the page buffers uses H5FD_read/write() instead. Need to either chase this or dis-able page bufffer in combination with the accumulator. 2) Encountered a number of assertion failures that are explainable by the free space manager code not telling the page buffer to discard pages when they are freed. Wrote code to handle this -- once the free space manager is modified, this code should be removed and the original assertions restored.
* 1) Add concurrent test for VFD SWMR readerVailin Choi2018-10-291-14/+15
| | | | 2) Bug fixes in H5FDvfd_swmr.c
* (1) Add tests for VFD SWMR writerVailin Choi2018-10-221-75/+121
| | | | (2) Bug fixes
* Third batch of checkin:Vailin Choi2018-09-281-97/+482
| | | | | | | | | | 1) Free space manager for the metadata file 2) Delayed free space release linked list 3) H5F_update_vfd_swmr_metadata_file() 3) VFD SWMR driver: read callback 4) Flushing for VFD SWMR 5) Port one concurrent test from swmr test set 6) Bug fixes and refactoring
* Merge branch 'develop' of ↵Vailin Choi2018-09-261-543/+323
|\ | | | | | | | | | | | | | | | | | | https://bitbucket.hdfgroup.org/scm/~vchoi/my_hdf5_fork into feature/vfd_swmr Conflicts: src/H5AC.c src/H5F.c src/H5Pfapl.c Resolve conflicts for H5AC.c, H5F.c and H5Pfapl.c
| * Remainder of vol_normalization changes (dataset, attribute, files, objects).Dana Robinson2018-09-241-331/+307
| |
| * Removed 'VOL' versions of FUNC_ENTER macros as well as empty functionsDana Robinson2018-09-181-216/+20
| | | | | | | | orginally intended to support the full SWMR feature.
* | Bug fixes for the previous checkin.Vailin Choi2018-09-041-2/+2
| |
* | Second batch of checkin:Vailin Choi2018-09-041-102/+152
| | | | | | | | | | | | | | | | 1) Define driver for the VFD SWMR reader 2) Implement VFD SWMR open callback 3) Implement H5FD_vfd_swmr_get_tick_and_idx() 4) Load and decode metadata file header and index 4) Closing for VFD SWMR
* | Preliminary checkins for implementation done so far:Vailin Choi2018-08-141-2/+205
|/ | | | | | | | | | | | 1) Public routines: H5Pget/set_vfd_swmr_config 2) Public routine: H5Fvfd_swmr_end_tick 3) Initialization when opening a file with VFD SWMR writer 4) Tests in test/vfd_swmr.c for VFD SWMR 5) Fix a bug in src/H5Fint.c: when error is encountered after the root group is created Note the following: --This is WORK IN PROGRESS and will subject to change as implementation goes. --There is test failure form enc_dec_plist.c: I will fix this when changes to the property list are settled. --The branch is updated with the latest from develop as of 8/14/2018
* Revert "Merge pull request #1116 in HDFFV/hdf5 from ↵hdftest2018-06-241-2/+2
| | | | | | | ~HDFTEST/hdf5_hft:hdf5_1_10 to develop" This reverts commit e9f476dad47ce593f13dacb77b1cc664d1f24e7b, reversing changes made to 2ff00b1b937ebe36ac6ddf590c16a4c27fc0b053.
* Merge branch 'develop' into hdf5_1_10.syncM. Scot Breitenfeld2018-06-141-55/+56
|\
| * Normalization with vol_integration branch.Dana Robinson2018-06-071-55/+56
| |
* | Merge branch 'develop' into hdf5_1_10.syncM. Scot Breitenfeld2018-05-231-38/+38
|\ \ | |/
| * Put back CTRL-L charsAllen Byrne2018-05-231-52/+52
| |
| * Valgrind fixed by checking for prefix_len of 0Allen Byrne2018-05-231-90/+90
| |
* | Fixed libver bounds underscore issueM. Scot Breitenfeld2018-05-111-3/+3
| |
* | Merge branch 'develop' into hdf5_1_10.syncM. Scot Breitenfeld2018-05-081-213/+916
|\ \ | |/
| * Add comment for the file flush when the file low / high bounds are changedQuincey Koziol2018-04-011-0/+19
| | | | | | | | after a file is open.
| * Merge remote-tracking branch 'origin/develop' into merge_func_enter_volQuincey Koziol2018-04-011-21/+160
| |\
| | * Created internal functions for a couple of H5F calls.Dana Robinson2018-03-301-0/+318
| |/ |/|
| * Merge branch 'develop' of https://bitbucket.hdfgroup.org/scm/hdffv/hdf5 into ↵Quincey Koziol2018-03-181-48/+411
| |\ | |/ |/| | | | | | | merge_func_enter_vol Plus initial steps toward merging API context push into FUNC_ENTER_API* macros
| * Add API context interface and use it throughout the library.Quincey Koziol2018-03-151-102/+589
| |
* | Merge pull request #931 in HDFFV/hdf5 from ~VCHOI/my_hdf5_fork:develop to ↵Vailin Choi2018-03-121-3/+38
|\ \ | | | | | | | | | | | | | | | | | | | | | develop * commit 'f08b8fa10e7bac5ae26e3b06f938d38ebb3f28e1': Enhancement to the tool h5clear (HDFFV-10360) Fix for HDFFV-10209 VDS SWMR test failure Free the object header when there are chksum retries.
| * | Enhancement to the tool h5clear (HDFFV-10360)Vailin Choi2018-03-121-3/+38
| | |
* | | Removed commented out code from H5FDmpio.c, H5FDprivate.h and H5Fint.cmainzer2018-03-121-2/+0
| | | | | | | | | | | | Tested parallel (debug and production) and serial (production)