Network

 
AuthorCommitMessageCommit Date
David YoungDavid Young
07e6f39f4bdChange the unwieldy name vfd_swmr_idx_entry_defer_free() to shadow_image_defer_free(), which is also a better description of what the routine does.
David YoungDavid Young
dc15a6987e1Use the "tail queue" from queue(3) for the delayed free list of shadow images. 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, ...
David YoungDavid Young
10a7a474150Remove unnecessary casts. Use the `ptr = calloc(n, sizeof(*ptr))` idiom for specifying the item size to be allocated. NFCI.
David YoungDavid Young
13386f3c913Prepare for some changes I'm committing shortly: pass an `H5F_shared_t *` as the first argument to H5PB__evict_entry() instead of an `H5PB_t *`.
David YoungDavid Young
9a66eb1377eMake the first parameter of H5PB_remove_entry() non-const to support some changes I will commit shortly.
David YoungDavid Young
10353ef87dfThere's no need to name parameters in a function declaration, and it makes them very long, so just delete the parameters.
David YoungDavid Young
f0a01e69156Allocate regionsin the shadow file of page size or greater size with page alignment. The VFD SWMR code had always assumed that the regions were aligned to page size. It would blithely round the start addresses of regions to the next lower page. When the region was freed, the freespace manager (H5MV) would suffer an assertion or corruption.
David YoungDavid Young
3455c4031ecTell the tick number in diagnostic messages.
David YoungDavid Young
2c5c1103785Align the shadow images on page boundaries so that they don't overlap. This seems to be the programmer's original intention. It sure makes debugging easier to have non-overlapping shadow images.
David YoungDavid Young
941daa6b072In the faked-up shadow-index entries, assign independent page numbers in the HDF5 file and in the shadow file. I had added assertions that the page numbers were unique, and this caused those assertions to fail. I don't know if I'll keep the assertions, but this is an inexpensive change that makes the test more realistic.
David YoungDavid Young
1a55342b3ebAllocate and zero using calloc(3) instead of malloc(3)+memset(3).
David YoungDavid Young
2c0dddf2634Follow the naming convention enforced by FUNC_ENTER_/FUNC_EXIT_* macros (?) where static routines have to have double underscores (__) in their name or else the library asserts false.
David YoungDavid Young
2d4e4e217c1Delete a macro that's not used.
David YoungDavid Young
17d6de53966Remove disused duplicate of H5F__idx_entry_cmp(). I probably introduced that by accident when I merged Vailin's changes that moved some functions from one file to another.
David YoungDavid Young
93175a115c1Remove the ugly casts on calloc() and malloc(). Change some malloc() to calloc() so that all bytes are initialized to something.
David YoungDavid Young
5d163c8d781Fix some typos. NFCI.
David YoungDavid Young
8f62e5dafb4Wrap some comments at <= 80 characters.
David YoungDavid Young
fed174988dcShorten the type name `H5F_vfd_swmr_eot_queue_entry_t` to `eot_queue_entry_t`: people have to read and type this stuff! Use TAILQ_* macros instead of an unnecessary custom implementation of doubly-linked lists.
David YoungDavid Young
38902de4932Fix typo. NFCI.
David YoungDavid Young
305a64f674cRemove disused #ifdef QAK code.
David YoungDavid Young
a6be1c03973Be brief: don't cast the last parameter of H5Pset_file_space_strategy(), the constant `1`, to `hsize_t`.
David YoungDavid Young
0f33e415413Don't see a 1GB threshold for tracking free filespace, that workaround for VFD SWMR was never 100% effective, and now that there is a delay line on filespace frees, it is not necesesary.
David YoungDavid Young
c8f533cfc33Merge all of my changes from merge-back-to-feature-vfd_swmr-attempt-1, 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!
Vailin ChoiVailin Choi
adcf8a315e8Fix the FSM bug when setting the FSM threshold to a non-default value. Check for smaller or larger section size after merging and shrinking a section, for this case is the section that is smaller than threshold (see H5MF_xfree() in H5MF.c). It is possible for the section to be smaller after merging/shrinking (see H5MF__sect_large_shrink() in H5MFsection.c).
David YoungDavid Young
4d50f9a7a87Update status of the expand/shrink test.
David YoungDavid Young
0f9678b4152Mention the Markdown cheat sheet and tutorial, per John's request.
Vailin ChoiVailin Choi
12438c22b72Fix for punch list #28: 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).
Vailin ChoiVailin Choi
68ad19d9ccfChanges for punch list #4: Add support for opening mulitple files in either 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.
David YoungDavid Young
d3055b85b9dAdd my name to some entries.
David YoungDavid Young
65c38da1f01Mention the items that Vailin is working on.
David YoungDavid Young
7579e10abb7Use bold to highlight items status.
David YoungDavid Young
898871545d2Add some notes about what's done and what I'm working on.
David YoungDavid Young
d84343004e7Add URL for the punch list.
David YoungDavid Young
c905d7105afRemove the last (?) vestige of gettimeofday alternate implementation of VFD SWMR.
vchoivchoi
e847ec43ac2Fix for punch list #9 Move VFD SWMR H5F code to its own file: H5Fvfd_swmr.c.
Vailin ChoiVailin Choi
350a7864863Fix for punch list #13 item #1: Odd behavior in the superblock refresh routine. The test "driver_addr != sblock->driver_addr" is failing for superblock version 2 & 3. Fix: there is no driver_addr in superblock version 2 & 3. It should decode the root group object header address (root_addr) and verify accordingly.
Vailin ChoiVailin Choi
227688c9cd9Modifications for the following items in the punch list: (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
David YoungDavid Young
f2bb4e3dbc0Good-bye md_open_tries.
David YoungDavid Young
492d8b8b2a6Add the latest version of the RFC.
dyoungdyoung
d017ff18506Put the Markdown punch list on the right branch.
David YoungDavid Young
0ea6e75d9ffVFD SWMR sparse readers failed to open the .h5 file because the sparse writer had finished its work and closed the .h5 file, thus removing the shadow file. Make the sparse writer wait to close the .h5 file for a signal from testvfdswmr.sh. In testvfdswmr.sh, send the signal when the readers have all finished.
David YoungDavid Young
e84a416ad85Expect the h5ls usage message to mention --poll twice.
David YoungDavid Young
7e4d20453eaFirst, reduce code duplication in h5tools_fopen(). Then, stop h5tools_fopen() from using the SWMR VFD unless the h5tools_fopen() arguments specifically choose that VFD.
David YoungDavid Young
6f1469fce4cFix some tools: try all other VFDs before SWMR.
David YoungDavid Young
63df4fae56cDelay for no more than 1/100 second between any retry in H5C_load_entry(). This lets test/testflushrefresh.sh pass again. It was timing out while it waited for expected failures to occur because the retry loop ran for way too long.
David YoungDavid Young
e100cbdd3c5Ntheever skip a read (skip_read is always false). This lets my demos work and it does not seem to affect either my unit tests or testvfdswmr.sh.
David YoungDavid Young
90a602634e0I've changed `test/dsets` so that every time it needs to visit all cells in a matrix in an arbitrary order, first it chooses a random starting `offset` in [0, rows * columns - 1]. Then it chooses a random `increment` that's relatively prime to `rows * columns`. Then it visits every cell in `rows * columns` steps: for (i = 0; i < rows * columns; i++) { visit(cell[offset / columns][offset % columns]); offset = (increment + offset) % (rows * columns); ...
David YoungDavid Young
fcd490a0bcaUse PRIuHADDR.
David YoungDavid Young
8efc3d97571Move a disused variable inside of the #if 0 region that needs it.
David YoungDavid Young
0850f06862bRepair comments.