summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Delete some dead code.David Young2020-07-142-48/+0
|
* Add some new diagnostic logging.David Young2020-07-141-2/+3
|
* Suppress the error-stack printouts while attempting to open and read anDavid Young2020-07-141-1/+8
| | | | attribute: failures are expected.
* Don't check an unsigned integer for being negative. Quiets a GCC warning.David Young2020-07-141-1/+1
|
* Bug fix: avoid leaking memory and other resources, perform the reader-onlyDavid Young2020-07-141-63/+78
| | | | | close activities under the correct condition! Extract the reader-only open and close code into helper routines.
* If the function-enter macro fails, return FAIL. Now the compiler can see thatDavid Young2020-07-141-1/+3
| | | | | | if H5FD__vfd_swmr_header_deserialize() succeeds, then the header that was passed in was actually initialized. This squashes a used-before-initialized warning from GCC.
* Take care to initialize the metadata file descriptor to -1 so that we don't tryDavid Young2020-07-141-0/+1
| | | | to close descriptor 0, later.
* If a group's attribute isn't present, that's ok. Retry.David Young2020-07-141-8/+13
|
* Close attribute after use.David Young2020-07-141-0/+2
|
* Delete dead code. NFCI.David Young2020-07-141-3/+0
|
* Delete whitespace at EOL. Join consecutive line. NFCI.David Young2020-07-131-77/+76
|
* Delete whitespace at EOL.David Young2020-07-131-1/+1
|
* Fix a copy-pasto in an error message.David Young2020-07-101-1/+1
|
* Move the dapl initialization to state_init and, if VDS is enabled,David Young2020-07-101-7/+10
| | | | set the virtual view to "first missing."
* Delete unused local variables. Delete an empty line. NFCI.David Young2020-07-101-4/+0
|
* Don't leak a fapl on error.David Young2020-07-101-7/+8
|
* Remove gratuitous local variable initialization: it's better to let theDavid Young2020-07-101-2/+2
| | | | | compiler detect use-before-initialization. Use the safer `memset(p, ..., sizeof(*p))` idiom.
* Add a new log outlet and some log statements for EOT queue manipulation.David Young2020-07-101-0/+12
|
* Straggler from previous: bsdqueue.h -> H5queue.hDavid Young2020-07-101-1/+1
|
* Change some H5F_t uses to H5F_shared_t uses: gradually we will rid VFD SWMR ofDavid Young2020-07-101-19/+19
| | | | H5F_t.
* Be brief: remove gratuitous cast of _xfree(). Use reference to member `pub`David Young2020-07-101-2/+2
| | | | instead of cast to H5FD_t *.
* Make a VFD SWMR writer use the SWMR VFD, to facilitate avoiding conflictingDavid Young2020-07-102-35/+25
| | | | | | multiple opens of the same file with VFD SWMR---i.e., twice for writing, or for reading and for writing. In the long run, this will help me encapsulate more of the SWMR functionality in the VFD, too.
* Straggler from previous commit: when closing the VFD SWMR virtual file, clearDavid Young2020-07-101-8/+12
| | | | | | | | | | the lower virtual file's `exc_owner` field. While I'm here, remove a gratuitous assertion. This is part of a changeset that helps us avoid creating multiple H5F_shared_t for one file when virtual datasets are used with VFD SWMR. The old code for deduplicating VFD SWMR H5F_shared_t instances did not work correctly with VFD SWMR, so we'd end up with multiple H5F_shared_t all active on the same file.
* Delete gratuitous comment and initialization from a variable declaration.David Young2020-07-101-1/+1
|
* Add all extant virtual files to a list. Add an "exclusive owner" (`exc_owner`)David Young2020-07-1011-12/+60
| | | | | | | | | | | | | | member to all virtual files. Add a routine, H5FD_has_conflict(), that returns true if a new virtual file is identical to an existing virtual file that has an exclusive owner. Establish an exclusive owner for a VFD SWMR virtual file's lower virtual file. Rename bsdqueue.h to H5queue.h and install it, since it's used by H5FDpublic.h. This is part of a changeset that helps us avoid creating multiple H5F_shared_t for one file when virtual datasets are used with VFD SWMR. The old code for deduplicating VFD SWMR H5F_shared_t instances did not work correctly with VFD SWMR, so we'd end up with multiple H5F_shared_t all active on the same file.
* Fix a bug where I was trying to store `ndatasets * 4` source-datasetDavid Young2020-07-071-93/+155
| | | | | handles in 4 variables and, of course, failing. Refactor the dataspace/dataset initialization.
* Fix a bug in H5D__virtual_write_one to stop an assertion from failingDavid Young2020-07-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | deep in H5Dwrite---project the *clipped* virtual selection instead of the virtual selection: assertion "((src_space)->select.num_elem) == ((dst_space)->select.num_elem)" failed: file "../../../vchoi_fork/src/H5Sselect.c", line 2617, function "H5S_select_project_intersection" with this backtrace: at /home/dyoung/plain-nbsd/src/lib/libc/gen/raise.c:48 at /home/dyoung/plain-nbsd/src/lib/libc/stdlib/abort.c:74 file=0xae9e3e80 "../../../vchoi_fork/src/H5Sselect.c", line=2617, function=0xae9e4ca0 <__func__.15686> "H5S_select_project_intersection", failedexpr=0xae9e0e54 "((src_space)->select.num_elem) == ((dst_space)->select.num_elem)") at /home/dyoung/plain-nbsd/src/lib/libc/gen/assert.c:72 dst_space=0xae26f0dc, src_intersect_space=0xae0b577c, new_space_ptr=0xbfb85fac, share_selection=true) at ../../../vchoi_fork/src/H5Sselect.c:2749 type_info=type_info@entry=0xbfb86084, file_space=file_space@entry=0xae0b577c, source_dset=0xae24741c, io_info=<optimized out>) at ../../../vchoi_fork/src/H5Dvirtual.c:2784 type_info=0xbfb86084, nelmts=256, file_space=0xae0b577c, mem_space=0xae26ec8c, fm=0xadf0401c) at ../../../vchoi_fork/src/H5Dvirtual.c:2873 mem_type_id=216172782113783837, mem_space=0xae26ec8c, file_space=0xae0b577c, buf=0xae203808) at ../../../vchoi_fork/src/H5Dio.c:780 mem_type_id=216172782113783837, mem_space_id=288230376151711754, file_space_id=288230376151711755, dxpl_id=792633534417207304, buf=0xae203808, req=0x0) at ../../../vchoi_fork/src/H5VLnative_dataset.c:206 mem_type_id=216172782113783837, mem_space_id=288230376151711754, file_space_id=288230376151711755, dxpl_id=792633534417207304, buf=0xae203808, req=0x0, cls=<optimized out>) at ../../../vchoi_fork/src/H5VLcallback.c:2152 mem_type_id=216172782113783837, mem_space_id=288230376151711754, file_space_id=288230376151711755, dxpl_id=792633534417207304, buf=0xae203808, req=0x0) at ../../../vchoi_fork/src/H5VLcallback.c:2186 mem_type_id=216172782113783837, mem_space_id=288230376151711754, file_space_id=288230376151711755, dxpl_id=792633534417207304, buf=0xae203808) at ../../../vchoi_fork/src/H5Dio.c:313
* Use native byte order unless big-endian is specified with `-b` option.David Young2020-07-022-18/+30
|
* Add a VDS mode to the bigset test.David Young2020-06-301-7/+197
|
* Gather a couple of assertions.David Young2020-06-261-2/+1
|
* Create one dataset creation property list and one file dataspace andDavid Young2020-06-261-31/+45
| | | | | share them across all datasets/iterations. Extract common code into state_destroy().
* When extending the dataset in one dimension, add columns instead of rowsDavid Young2020-06-261-22/+23
| | | | | so that it's possible to produce a virtual dataset (VDS) variant of the test.
* (1) Add public routines H5Fvfd_swmr_end_tick, ↵vchoi2020-06-268-593/+1500
| | | | | | H5Fvfd_swmr_disable_end_of_tick, H5Fvfd_swmr_enable_end_of_tick(). (2) Tests for the above APIs.
* Add/check a group attribute every so many steps. delete some dead code, andDavid Young2020-06-221-5/+68
| | | | set a non-zero default for the number of steps.
* Extract common subexpressions into `oent` and `nent` for brevity.David Young2020-06-191-46/+40
| | | | | | | | | | | Assert index entries are in sorted order earlier in the loop over old and new indices. When looping over the remaining new index entries, just do `entries_added++` to match the other loops. In the final log entry in H5F_vfd_swmr_reader_end_of_tick(), mention whether the call will exit with success or failure.
* Make H5Drefresh() copy non-persistent properties---e.g., dataset accessDavid Young2020-06-193-16/+65
| | | | | property lists---from the closed dataset to the reopened dataset. Now my chunk-cache settings appear to survive H5Drefresh() calls.
* Create a dataset access property list (dapl) that disables the chunk cache andDavid Young2020-06-191-5/+13
| | | | | | apply it individually to each dataset instead of setting the chunk-cache parameters on the file. Alas, it didn't make any difference, but I'll keep the change.
* On each SWMR VFD open for reading, keep a histogram for the number ofDavid Young2020-06-163-1/+38
| | | | | ticks elapsed during API calls. Write the histogram to the swmr_stats log outlet when the SWMR VFD closes.
* Rename H5F__vfd_swmr_writer__create_index to H5F__vfd_swmr_create_index.David Young2020-06-161-44/+23
| | | | | | | | | H5F_vfd_swmr_reader_end_of_tick: delete superfluous assertions and extract a com mon subexpression into a H5FD_t * variable. Carry on with HGOTO_ERROR() cleanup. Delete superfluous parentheses to reduce visual clutter. Delete superfluous casts. Delete out-of-date comment: the index size is not fixed any longer.
* Delete superfluous casts. Remove superfluous backslashes andDavid Young2020-06-162-39/+33
| | | | | | | | | | | | | | | | | statement-ify, changing HGOTO_ERROR(..., \ ) to HGOTO_ERROR(..., ); Remove blank lines between if-clause and HGOTO_ERROR. Add some curly braces to if-statements where that clarifies things. NFCI.
* Close all of the datasets we opened.David Young2020-06-161-0/+21
|
* Avoid leaving a v1 B-tree used as a chunk index in a bad stateDavid Young2020-06-128-33/+45
| | | | | | | | | | | | | | | | | | that makes assertions fail. Add an optional `close` method to the `H5D_chunk_ops_t`, and use that to release "holds" on metadata cache (MDC) entries. For extensible arrays and v2 B-trees, use the existing `dest`(roy) method to implement `close`. For v1 B-trees and other chunk indices, don't provide `close`: we cannot safely close the v1 B-tree index, and the other indices don't have a meaningful presence in the MDC. Revert my first attempt at making v1 B-tree chunk indices closeable with `dest`. Put my comment about the stopgap fix for VFD SWMR at the right place in src/H5Dchunk.c.
* Activate tests `few_big` and `many_small`, now that they pass.David Young2020-06-111-1/+1
|
* Always restart H5C_evict_or_refresh_all_entries_in_page()'s scan ofDavid Young2020-06-111-3/+4
| | | | | | | | | | | the entries in a hash bucket after evicting tagged entries. Evicting tagged entries can can affect both entries before and after the current entry in the bucket's linked list, so we cannot be sure that either `entry_ptr` or `follow_ptr` is valid. This stops the assertion (entry_ptr->page != page) || (entry_ptr->refreshed_in_tick == tick) from failing in the test `testvfdswmr.sh many_small`.
* Extract a subroutine that closes chunk indices,David Young2020-06-112-18/+55
| | | | | | | | | | | H5D__chunk_index_close(), and call it in H5D__chunk_read() after reading a chunked dataset. In this way, indices based on extensible arrays and v2 B-trees do not leave pinned/tagged entries in the metadata cache that we cannot evict/refresh when we load changes from the shadow file. Make some changes to the v1 B-tree code that set the pointer to the closed B-tree to NULL and, further, tolerate a NULL pointer where previously that was impossible.
* Limit every chunk cache to 1 slot and 1kB so that the test doesn't runDavid Young2020-06-111-0/+3
| | | | my dinky development server out of memory.
* Make the test more challenging: on every other step, read a chunk-sizedDavid Young2020-06-111-4/+8
| | | | region offset by 1 unit from a chunk boundary.
* Wrap a line. NFCI.David Young2020-06-111-1/+2
|
* Delete code that has no effect: don't empty a mask set only to fill itDavid Young2020-06-111-3/+2
| | | | in the next expression.
* Only remove shadow-index entries in H5PB__evict_entry() if we're aDavid Young2020-06-081-2/+3
| | | | | VFD SWMR writer, so that the reader does not lose track of the real shadow-index content.